早上好!
我现在只学习VBA一周了......就像从瀑布喝酒一样。尽管研究我似乎无法把它放在一起。此子程序用于打开多个选定的工作表,根据需要进行编辑,直到编辑完所有工作表。
我正在使用GetOpenFilename捕获多个文件,然后我想打开并运行我的StandaloneReportEdit宏 - 我不确定为什么我不能调用创建的数组,或者我应该研究什么来解决这个问题:
Dim my_FileName As Variant
my_FileName = Application.GetOpenFilename( _
filefilter:="Excel Files,*.xl*;*.xm*", _
Title:="Select Excel File to Open", _
MultiSelect:=TRUE)
If my_FileName = False Then End
Set wb = Workbooks.Open(my_FileName, False, False)
Call StandaloneReportEdit 'Sub to very thoroughly edit reports
我会在哪里使用' For Each' (或者也许是Do While),我无法弄清楚要引用什么...会不会像这样有效?
For Each my_FileName 'Call StandaloneReportEdit here
或者我应该使用' Do While'如下所示:
Do While my_FileName = True
If my_FileName = False Then End
Set wb = Workbooks.Open(my_FileName, False, False)
Call StandaloneReportEdit
Loop
这个问题可能不像你们所希望的那样彻底,我道歉,我想我错过了一些东西,只是指向正确的方向将非常感激。非常感谢您的时间!
答案 0 :(得分:1)
For Each
是最简单的,但您需要另一个变量来从数组中获取名称。另外,False
的测试对Variant
类型的变量也不适用(即使文档为suggests it)。最好使用IsArray()
:
Sub doIt()
Dim myFileName As Variant
Dim myFileNames As Variant
Dim wb As Workbook
myFileNames = Application.GetOpenFilename( _
filefilter:="Excel Files,*.xl*;*.xm*", _
Title:="Select Excel File to Open", _
MultiSelect:=True)
If Not IsArray(myFileNames) Then Exit Sub
For Each myFileName In myFileNames
Set wb = Workbooks.Open(myFileName, False, False)
StandaloneReportEdit() 'Sub to very thoroughly edit reports
Next
End Sub