2013-02-09 117 views
0

我想運行此代碼的VB代碼,但它給了我下面提到的錯誤。在文件夾中的所有xls文件上運行Excel宏

任何幫助將不勝感激,因爲我是新來的VB。

**Code :** 
Option Explicit 
Public Sub ReadExcelFiles(FolderName As String) 
Dim FileName As String 

' Add trailing \ character if necessary 
' 
If Right(FolderName, 1) <> "\" Then FolderName = FolderName & "\" 

FileName = Dir(FolderName & "*.xls") 

Do While FileName <> "" 
Workbooks.Open (FolderName & FileName) 

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    Range("A1").Select 
    ActiveCell.FormulaR1C1 = "Name" 
    Range("B1").Select 
    ActiveCell.FormulaR1C1 = "Anil" 
    Range("A2").Select 
End Sub 

Workbooks(FileName).Close 
FileName = Dir() 
Loop 
End Sub 

Public Sub test() 
ReadExcelFiles ("C:\Macro") 
End Sub 

命令:cscript C:\宏\ test.vbs

結果:錯誤,2號線,38字符,預計 ')'

回答

1

你的錯誤是因爲你設置Foldername As String但你不需要「作爲字符串」。但是,您的代碼中存在更多錯誤。 VBScript不能像Visual Basic或Excel中的宏一樣工作。您需要實際調用函數/子例程來執行某些操作。在你的代碼中某處(你的子程序之外),你必須Call test

接下來,Dir()函數在VBScript中不可用,所以你必須使用不同的東西。可比較的東西是Dim fso: set fso = CreateObject("Scripting.FileSystemObject")然後用fso.FIleExists(FileName)

接下來,您不能訪問像傳統上在宏中執行的Excel工作簿。您不能使用Workbooks.Open (FolderName & FileName)。您可以使用Dim xl: set xl = CreateObject("Excel.application")然後用xl.Application.Workbooks.Open FileName

這裏是我的代碼只開放從VBScript

Option Explicit 

Call test 

Sub ReadExcelFiles(FolderName) 
    Dim FileName 
    Dim fso: set fso = CreateObject("Scripting.FileSystemObject") 
    Dim xl: set xl = CreateObject("Excel.application") 

    If Right(FolderName, 1) <> "\" Then FolderName = FolderName & "\" 

    FileName = (FolderName & "test" & ".xls") 

    If (fso.FIleExists(FileName)) Then 
     xl.Application.Workbooks.Open FileName 
     xl.Application.Visible = True 
    End If 
End Sub 

Sub test() 
    ReadExcelFiles ("C:\Users\Developer\Desktop\") 
End Sub 

Excel工作簿現在修改電子表格將是你下一個任務。這應該讓你朝正確的方向發展。希望有所幫助。

相關問題