2015-02-11 103 views
-1

所以我得到了這段代碼,但它將目錄中的所有工作簿都打開爲只讀。我需要保存它,它具有RUNT宏然後將其關閉。我相信這是我想改線後,但我不知道哪一部分以讀寫方式打開工作簿並關閉時保存

oExcel.Workbooks.Open(oFile, 0, True, , , , True, , , , False, , False) 

下面是所有的代碼

Dim oFSO 
Dim oShell, oExcel, oFile, oSheet 
Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set oShell = CreateObject("WScript.Shell") 
Set oExcel = CreateObject("Excel.Application") 
Set wb2 = oExcel.Workbooks.Open ("C:\Users\kp.AD\AppData\Roaming  \Microsoft\Excel\XLSTART\CoventryStoplossMacroBook.xlsb") 'Specify foldername  here 


oExcel.DisplayAlerts = True 


For Each oFile In oFSO.GetFolder("C:\Users\kpacheco.AD\Desktop\MSO_PR \macro_test").Files 
    If LCase(oFSO.GetExtensionName(oFile)) = "xls" Then 
With oExcel.Workbooks.Open(oFile, 0, True, , , , True, , , , False, , False) 


    'calling macro for MSO Eligibility reports 
    oExcel.Run wb2.Name & "!MSOElig2" 

'I think im suppose to change the below to true but since it is read only 'it asks me to save a copy 
    .Close False, , False 
    End With 
    End If 



Next 


wb2.Save 

wb2.Close 


oExcel.Quit 
oShell.Popup "Conversion complete", 10 

回答

1

ReadOnly財產被標記爲True在第三位置。 它應該是False要想在讀寫打開:

oExcel.Workbooks.Open(oFile, 0, False, , , , True, , , , False, , False) 

查找更多關於在official documentationWorkbooks.Open()方法。

要保存您的工作簿,可以分別使用SaveClose方法;而不是:

.Close False, , False 

,以使其更清晰,我會用:

Application.DisplayAlerts = False '<-- if you don't want the alert 
wb2.Save 
Application.DisplayAlerts = True '<-- set it back 
wb2.Close 
+0

我應該在哪裏加上這裏保存關閉,所以我不前的工作簿必須這樣做,在宏? – 2015-02-11 18:19:48

+0

@KatherinePacheco請參閱編輯 – 2015-02-11 18:23:11

+0

偉大!謝謝你的工作! – 2015-02-11 18:27:33

相關問題