Vba 列出工作簿时跳过PERSONAL.xlsb工作簿
我有一个代码来列出所有打开的工作簿,因为我所有的代码都在Personal.xlsb中。它也会被列出,有人能告诉我一个从列表中跳过Personal.xlsb的条件吗 此外,由于Personal.xlsb没有“数据索引”,因此它也倾向于给出一个错误Vba 列出工作簿时跳过PERSONAL.xlsb工作簿,vba,excel,Vba,Excel,我有一个代码来列出所有打开的工作簿,因为我所有的代码都在Personal.xlsb中。它也会被列出,有人能告诉我一个从列表中跳过Personal.xlsb的条件吗 此外,由于Personal.xlsb没有“数据索引”,因此它也倾向于给出一个错误 Sub ListWorkbooks() Dim Wb As Workbook For j = 1 To Workbooks.Count Sheets("Data_Index").Select Range("H3").Cells(j, 1)
Sub ListWorkbooks()
Dim Wb As Workbook
For j = 1 To Workbooks.Count
Sheets("Data_Index").Select
Range("H3").Cells(j, 1) = Workbooks(j).Name
For i = 1 To Workbooks(j).Sheets.Count
Next i
Next j
End Sub
修改后的答案 通过阅读您对其他答案的评论,您还需要确定哪些打开的工作簿也有一个名为Data_Index的工作表,这就是为什么您的下标超出范围(您的代码假设每个工作簿都有一个名为Data_Index的工作表) 这在我测试时适用:
Sub ListWorkbooks()
Dim Wb As Workbook, wb2 As Workbook
Dim sht As Worksheet
Dim c As Range
'Identify which (if any) of the open workbooks has sheet Data_Index
'Note if more than one it will pick the last one it finds
On Error Resume Next
For j = 1 To Workbooks.Count
Set sht = Workbooks(j).Sheets("Data_Index")
Next j
On Error GoTo 0
'Check at least one has the required sheet
If sht Is Nothing Then
MsgBox "There is no open workbook with a sheet named Data_Index", vbExclamation
Else
'Set the destination for the first workbook name
Set c = sht.Range("H3")
For j = 1 To Workbooks.Count
If Workbooks(j).Name = "Personal.xlsb" Then GoTo NextWb
c.Value = Workbooks(j).Name
For i = 1 To Workbooks(j).Sheets.Count
' Whatever you want to do cycling sheets
Next i
'Offset to the next row ready for the next name
Set c = c.Offset(1, 0)
NextWb:
Next j
End If
End Sub
您可以使用数组来实现这一点,但上面的方法可以帮您实现。子列表工作簿()
Sub ListWorkbooks()
Dim Wb As Workbook
Dim i As Integer, j As Integer
For j = 1 To Workbooks.Count
If Workbooks(j).Name <> ThisWorkbook.Name Then
Workbooks(j).Sheets("Data_Index").Range("H3").Cells(j, 1) = Workbooks(j).Name
End If
'not sure what you want to do here
For i = 1 To Workbooks(j).Sheets.Count
Next i
Next j
End Sub
将Wb设置为工作簿
尺寸i为整数,j为整数
对于j=1到工作簿。计数
如果是工作簿(j)。请命名此工作簿。然后命名
工作手册(j).表格(“数据索引”).范围(“H3”).单元格(j,1)=工作手册(j).名称
如果结束
“我不知道你想在这里做什么
对于i=1到工作簿(j).张数
接下来我
下一个j
端接头
如果是工作簿(j)。请命名此工作簿。然后命名
跳过此工作簿workbook@TimWilliams如果
不应该是“想做什么就做什么”@Stephinn您需要在for循环中完全限定对象名,这表示“不相等”@sam092-是的,我的错误…第5行的下标超出范围错误根据其他答案中的评论修改了答案用于打印第一个工作簿“数据索引”表的列表抱歉,我很困惑。您指的第一个工作簿是哪一个?因为您说的Personal.xlsb没有“数据索引”
…假设我打开了3本工作簿,然后打开了Personal.xlsb
(因为它是用每个excel文件打开的)是我的第一本工作簿,第1册和第2册分别是第二本和第三本,其中有工作表Data\u Index
,对于所有workbook
,有工作表Data\u Index
的所有打开的workbook
文件的列表将在Data\u Index:H3打印,因此第1册、第2册的Data\u Index
工作表将同时打印是否有打开工作簿名称的列表?