2014-03-26 34 views
0

我有一個代碼,列出所有打開的工作簿,因爲我所有的代碼都在Personal.xlsb也可以上市,誰能告訴我的。如果條件跳過從Personal.xlsb列表。跳過PERSONAL.xlsb工作簿而ListWorkbooks

而且還因爲Personal.xlsb劑量不會產生「data_index用於」這會給人一個錯誤也太

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 
+0

'如果工作簿(J),請將.Name <> ThisWorkbook.Name Then'跳過此工作簿 –

+0

@TimWilliams如果'<>'難道不應該是 「做你想做的」? – sam092

+0

@Stephinn你需要完全限定對象名稱您在for循環 – sam092

回答

0

修訂答

從你需要其他的答案閱讀您的意見還應找出其打開的工作簿中有一個名爲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 

你可以做到這一點使用數組,但是上面會爲你做它。

+0

其給出的下標超出第5行的範圍錯誤 – Stephinn

+0

根據其他答案中的註釋修改了答案 – Simon1979

0
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 
+0

用於在第一個工作簿中打印的列表「Data_Index」Sheet – Stephinn

+0

Sorry I'米困惑。你指的是第一個工作簿? 既然你說'Personal.xlsb劑量不會產生「Data_Index' ... – sam092

+0

想我已經oppened 3個簿,那麼'Personal.xlsb'(因爲它與每個打開的Excel文件)是我的第一個工作簿,第一冊和第二冊在第二和第三分別,它具有片'Data_Index'在他們 – Stephinn

相關問題