2016-11-04 6 views
0

Sehr geehrte Stackoverflow Mitglieder,Wie können bestimmte Arbeitsblätter aus Arbeitsmappen in eine andere Arbeitsmappe aus einem Ordner importiert werden? (VBA)

In der Vergangenheit habe ich mit Hilfe von Stack Overflow ein dynamisches Import-Skript erstellt. Dieses Skript importiert alle Arbeitsblätter aus Arbeitsmappen in einen Ordner.

Aber jetzt möchte ich nur die Blätter 'Blatt1' importieren, anstatt alle Blätter aus einer Arbeitsmappe (Blatt 1, 2 und 3).

Ich habe versucht, die 'Arbeitsblätter' Variable leicht zu ändern, aber ich konnte es nicht zum Funktionieren bringen.

Der Code besteht aus einem Makro-Skript und eine Funktion: Dies ist der

Sub ist
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 

Dies ist die verwendete Funktion:

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 

Ich frage mich auch, welcher Name zu ändern relevantere , ich möchte den VBA-Namen wie verwenden (das rote anstelle des blauen (ist Blatt Name in Excel angezeigt)). Print Screen from VBA window Ich würde gerne erfahren, was wäre der Unterschied in der Codierung für beide.

Ich habe versucht, die Schleife For Each Sheet In Workbooks(fileName).Sheet1 zu ändern, aber das hat nicht funktioniert.

Können Sie mir bitte in die richtige Richtung führen?

Vielen Dank im Voraus!

Grüße, Dubblej

Antwort

0

Könnte es nicht so einfach sein wie:

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

Danke @ Paul Ogilvie die zweite Option, die Sie gebucht, wirkt wie ein Zauber !! – Dubblej

Verwandte Themen