Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Removing multiple sheets in excel automation
Message
From
21/12/2013 09:07:22
 
 
To
21/12/2013 08:23:24
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows Server 2012
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Miscellaneous
Thread ID:
01590748
Message ID:
01590761
Views:
59
>Yes, loop from the highest down.
>
>Or, even more simply, keep deleting the second sheet as long as there is one. (technique has been used, but this code not tested)
>
Do While owb.Sheets.Count > 1
>    mname=owb.Sheets(2).Name
>    Wait Window 'removing '+ mname timeout 2
>     owb.Sheets(2).Delete
>Enddo
>

And no reason for DO WHILE here:
FOR nSheet = owb.Sheets.Count TO 2 STEP -1
  oWB.Sheets(m.nSheet).Delete()
ENDFOR
FOR evaluates its bounds only once, before the loop begins.

Tamar
>
>>looping from highest # down to first might be more stable...
>>
>>HTH
>>
>>thomas
>>
>>>much cleaner and more logical - thanks borislav.
>>>problem now: It gets rid of the furthest two sheets (of a 4 sheet file) then gets stuck in a loop at which point I still have 2 sheets remaining.
>>>I can't seem to solve it even adding if clauses - strange behavior - seems to defy your logic.
>>>k
>>>
>>>>>I have set this up to remove all multiple sheets except the first sheet.
>>>>>It's not working - any help would be appreciated. thanks
>>>>>k
>>>>>
>>>>>
>>>>>lcFile='myfile.xlsx'
>>>>>Erase (Forceext(lcFile,'xxx'))
>>>>>ox=Createobject('excel.application')
>>>>>owb=ox.Workbooks.Open(lcFile)
>>>>>
>>>>>If owb.Sheets.Count > 1
>>>>>	Nu= owb.Sheets.Count
>>>>>	ms=1
>>>>>	Do While ms < Nu+1
>>>>>		mname=owb.Sheets(m1).Name
>>>>>		If ms>1
>>>>>			Wait Window 'removing '+ mname timeout 2
>>>>>			owb.Sheets(mname).Delete
>>>>>		Endif
>>>>>		ms=ms+1
>>>>>	Enddo
>>>>>Endif
>>>>>ox.Visible=.T.
>>>>>
>>>>
>>>>
>>>>lcFile='myfile.xlsx'
>>>>ox=Createobject('excel.application')
>>>>owb=ox.Workbooks.Open(lcFile)
>>>>
>>>>If owb.Sheets.Count > 1
>>>>    Nu= owb.Sheets.Count
>>>>    Do While Nu > 1
>>>>        mname=owb.Sheets(Nu).Name
>>>>        Wait Window 'removing '+ mname timeout 2
>>>>        owb.Sheets(mname).Delete
>>>>        Nu= owb.Sheets.Count
>>>>    Enddo
>>>>Endif
>>>>ox.Visible=.T.
>>>>
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform