在下拉select后无法打开匹配的工作簿
初步问题
为什么我无法打开所有(全部三个)匹配的工作簿?
下拉select:
1A:1C =公司1公司2公司3
2A:2C =版本2版本1版本1
只有第一个(Company1,Version2)将打开…
Sub OpenWorkbooks() Dim ColumnIndex1 As Integer Dim ColumnIndex2 As Integer Dim ColumnIndex3 As Integer Dim ColumnIndex4 As Integer Dim ColumnIndex5 As Integer Dim ColumnIndex6 As Integer For ColumnIndex1 = 1 To 3 If Cells(1, ColumnIndex1).Value = "Company1" And Cells(2, ColumnIndex1).Value = "Version1" Then Workbooks.Open Filename:="D:\Company1\Version1.xlsx" End If Next ColumnIndex1 For ColumnIndex2 = 1 To 3 If Cells(1, ColumnIndex2).Value = "Company1" And Cells(2, ColumnIndex2).Value = "Version2" Then Workbooks.Open Filename:="D:\Company1\Version2.xlsx" End If Next ColumnIndex2 For ColumnIndex3 = 1 To 3 If Cells(1, ColumnIndex3).Value = "Company2" And Cells(2, ColumnIndex3).Value = "Version1" Then Workbooks.Open Filename:="D:\Company2\Version1.xlsx" End If Next ColumnIndex3 For ColumnIndex4 = 1 To 3 If Cells(1, ColumnIndex4).Value = "Company2" And Cells(2, ColumnIndex4).Value = "Version2" Then Workbooks.Open Filename:="D:\Company2\Version2.xlsx" End If Next ColumnIndex4 For ColumnIndex5 = 1 To 3 If Cells(1, ColumnIndex5).Value = "Company3" And Cells(2, ColumnIndex5).Value = "Version1" Then Workbooks.Open Filename:="D:\Company3\Version1.xlsx" End If Next ColumnIndex5 For ColumnIndex6 = 1 To 3 If Cells(1, ColumnIndex6).Value = "Company3" And Cells(2, ColumnIndex6).Value = "Version2" Then Workbooks.Open Filename:="D:\Company3\Version2.xlsx" End If Next ColumnIndex6 End Sub
我刚开始使用VBA(和StackOverflow)。
谢谢。
跟进
@ Dirk Reichel:@全部:
我试图扩大Dirk的想法(见下文),并且我试图按顺序打开5个(或更less)工作簿,每次将特定范围复制/粘贴到“main”工作簿的“main2”表中。
它工作正常,除非我打开更less的工作簿比正在检查的下拉值的数量(我目前使用5下拉集,而不是原来的3:请参阅页首):
Sub ImportData() Dim MainWorkbook As Workbook Dim DataWorkbook As Workbook Dim i As Long Set MainWorkbook = ThisWorkbook With MainWorkbook.ActiveSheet For i = 2 To 6 If ActiveSheet.Cells(6, i).Value <> "" Then Set DataWorkbook = Workbooks.Open("D:\ 'some folders' \" & .Cells(6, i).Value & "-" & .Cells(10, 2) & "-" & .Cells(7, i).Value & ".xlsx") DataWorkbook.Sheets("Sheet1").Range("C3:Q3").Copy MainWorkbook.Sheets("Main2").Range("A" & i).PasteSpecial On Error Resume Next End If Next i End With End Sub
我已经使用了3个(现在的)5个下拉菜单,并且只有1个工作簿正在打开和复制…
你可以尝试一下这样简单的脚本:
Sub OpenWorkbooks() Dim i As Long With ThisWorkbook.ActiveSheet For i = 1 To 3 Workbooks.Open Filename:="D:\" & .Cells(1, i).Value & "\" & .Cells(2, i).Value & ".xlsx" Next i End With End Sub
如果您的Cells
没有任何“工作簿”和“工作表”,他们将使用活动的Cells
(在打开第一个工作簿后,您的所有Cells
将引用它而不是原始来源)