我可能有什麼是一個簡單的問題,但我不明白什麼是錯的。我正在嘗試在Excel中創建一個宏,它將對多個文件執行多項操作。上下文:使用多個工作簿和宏 - 調用工作簿? [VBA]
我運行宏的Excel工作表位於它自己的文件夾中。我已經成立了一個小測試文件夾這樣的結構: C:\用戶\ schris \桌面\ Eprime測試\
此文件夾中有兩個文件夾:
\碩士數據集\
- 在這個文件夾是在Excel中使用宏文件是
\ Eprime處理\
- 有三個文件夾,這個文件夾中,名爲 '恐懼', '性別' 和 '快樂'。在每個文件夾中都有一個我希望打開的excel文件。
我想要做的是創建一個子RunAll將調用各種其他的潛艇,因爲有很多不同的事情,我想宏做的,我想保持它組織。
所以:
Sub RunAll()
Call OpenWorkbooks
Call ProcessFear
Call ProcessGender
Call ProcessHappy
End Sub
這裏是我的OpenWorkbooks代碼:
Sub OpenWorkbooks()
Dim wb1 As Workbook
Dim wbFear As Workbook
Dim wbGender As Workbook
Dim wbHappy As Workbook
Dim FileToOpen As Variant
Dim FileToOpen2 As Variant
Dim FileToOpen3 As Variant
Dim Sheet As Worksheet
' Must be workbook with the Macros I'm running
Set wb1 = ActiveWorkbook
' Opens Fear
ChDir "C:\Users\schris\Desktop\Eprime Testing\Eprime Processing\Fear"
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose Fear file")
If FileToOpen = False Then
MsgBox "No File Specified.", vbExclamation, "ERROR"
Exit Sub
Else
Set wbFear = Workbooks.Open(fileName:=FileToOpen)
End If
Set wbFear = ActiveWorkbook
' Opens Gender
ChDir "C:\Users\schris\Desktop\Eprime Testing\Eprime Processing\Gender"
FileToOpen2 = Application.GetOpenFilename _
(Title:="Please choose Gender file")
If FileToOpen2 = False Then
MsgBox "No File Specified.", vbExclamation, "ERROR"
Exit Sub
Else
Set wbGender = Workbooks.Open(fileName:=FileToOpen2)
End If
Set wbGender = ActiveWorkbook
' Opens Happy
ChDir "C:\Users\schris\Desktop\Eprime Testing\Eprime Processing\Happy"
FileToOpen3 = Application.GetOpenFilename _
(Title:="Please choose Happy file")
If FileToOpen3 = False Then
MsgBox "No File Specified.", vbExclamation, "ERROR"
Exit Sub
Else
Set wbHappy = Workbooks.Open(fileName:=FileToOpen3)
End If
Set wbHappy = ActiveWorkbook
End Sub
現在我希望能夠引用這三個工作簿(wbFear,wbGender,wbHappy)以及它們之間的無縫切換。當在Sub OpenWorkbooks()中測試時,做wbFear.Activate
會正常工作和處理......但是當我分離出每個宏的任務時(例如,OpenWorkbooks現在只打開工作簿,ProcessFear只處理Fear工作簿中的數據)得到運行時錯誤'91':對象變量或未設置塊變量。
我假設這與聲明的工作簿名稱「丟失」有關,因爲它切換Subs,但是當我將OpenWorkbooks的代碼放入RunAll並且只有ProcessFear運行時,它仍然無法激活適當的工作簿。
基本上,我的問題是這樣的:
怎樣纔可以有一個宏開三簿,並宣佈所有的東西,其他的宏可以參考?我需要做很多任務,所以我真的想爲每一個都有獨立的Subs,這樣我就不會迷失在代碼中。
謝謝你的時間!
TL;博士,但regarding'declare他們所有的東西,其他的宏可以reference'將它們設置爲您創建的變量...'wb1','wbFear', 'wbGender','wbHappy'。 – findwindow
我設置了作爲這些變量打開的工作簿,但如果我運行不同的子工具,它們將不再工作。 –
哦。宣佈他們爲「公共」?編輯:這是這樣做的任何潛艇。通常在最重要的一切之上。編輯2:公共範圍對調試不利。你有沒有考慮過把這些書作爲參數? – findwindow