2016-11-04 161 views
0

尊敬的Stackoverflow會員,如何將工作簿中的某些工作表導入文件夾中的其他工作簿? (VBA)

在過去,我在堆棧溢出的幫助下創建了一個動態導入腳本。該腳本從文件夾中的工作簿導入所有工作表。

但現在我只想導入名爲'sheet1'的工作表,而不是工作簿中的所有工作表(工作表1,2和3)。

我試圖稍微修改'工作表'變量,但我無法讓它工作。

代碼由宏腳本和一個功能: 這是次

Public Sub Import_sheets_from_dir() 
' Import script from http://www.excel-easy.com/vba/examples/import-sheets.html 
' Function script from http://stackoverflow.com/questions/19372319/vba-folder-picker-set-where-to-start 
On Error GoTo ErrMsg 
Dim directory As String 
Dim fileName As String 
Dim Sheet As Worksheet 
Set ActivoWB = ActiveWorkbook 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

directory = GetFolderName() & "/" 
fileName = Dir(directory & "*.xl??") 

Do While fileName <> "" 
    Workbooks.Open (directory & fileName) 

    For Each Sheet In Workbooks(fileName).Worksheets 
     Workbooks(fileName).Worksheets(Sheet.Name).Copy _ 
     After:=ActivoWB.Sheets(ActivoWB.Sheets.Count) 
    Next Sheet 

    Workbooks(fileName).Close 
    fileName = Dir() 
Loop 

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 

Exit Sub 

ErrMsg: 
MsgBox prompt:="your doing something wrong" 


End Sub 

這是被使用的功能:

Public Function GetFolderName(Optional OpenAt As String) As String 
Dim lCount As Long 

GetFolderName = vbNullString 

With Application.FileDialog(msoFileDialogFolderPicker) 
    .InitialFileName = OpenAt 
    .Show 
    For lCount = 1 To .SelectedItems.Count 
     GetFolderName = .SelectedItems(lCount) 
    Next lCount 
End With 
End Function 

我也想知道哪個名稱更相關的變化,我想使用VBA名稱(紅色,而不是藍色(是在Excel中顯示的工作表名稱))。 Print Screen from VBA window 我想了解兩者的編碼差異。

我試圖修改循環For Each Sheet In Workbooks(fileName).Sheet1,但這沒有奏效。

你能指導我正確的方向嗎?

在此先感謝!

問候, Dubblej

回答

0

難道不是很簡單:

For Each Sheet In Workbooks(fileName).Worksheets 
    If (Sheet.Name = "Sheet1") Then 
     Sheet.Copy _ 
     After:=ActivoWB.Sheets(ActivoWB.Sheets.Count) 
    Endif 
Next Sheet 
+0

謝謝@保羅奧格爾維您發佈的第二個選項,就像一個魅力! – Dubblej

相關問題