VBA: Aus geöffneter Datei eine andere Datei auswählen und ein Datenblatt importieren.

Antwort

Um in VBA eine Datei auszuwählen und ein bestimmtes Datenblatt aus dieser Datei in die aktuell geöffnete Datei zu importieren, kannst du den folgenden Code verwenden. Dieser Code öffnet einen Datei-Dialog, um eine Excel-Datei auszuwählen, und importiert dann das gewählte Datenblatt. ```vba Sub ImportWorksheet() Dim wbSource As Workbook Dim wsSource As Worksheet Dim wsDest As Worksheet Dim filePath As String Dim sheetName As String Dim sheetExists As Boolean Dim i As Integer ' Datei-Dialog zum Auswählen der Datei filePath = Application.GetOpenFilename("Excel-Dateien (*.xls; *.xlsx), *.xls; *.xlsx", , "Wähle eine Excel-Datei aus") ' Überprüfen, ob eine Datei ausgewählt wurde If filePath = "False" Then Exit Sub ' Öffne die ausgewählte Datei Set wbSource = Workbooks.Open(filePath) ' Auswahl des Datenblattes sheetExists = False For i = 1 To wbSource.Worksheets.Count If wbSource.Worksheets(i).Name <> "" Then sheetName = wbSource.Worksheets(i).Name If MsgBox("Möchtest du das Datenblatt '" & sheetName & "' importieren?", vbYesNo) = vbYes Then Set wsSource = wbSource.Worksheets(i) sheetExists = True Exit For End If End If Next i ' Wenn kein Datenblatt ausgewählt wurde, beende das Makro If Not sheetExists Then MsgBox "Kein Datenblatt ausgewählt. Vorgang abgebrochen." wbSource.Close False Exit Sub End If ' Erstelle ein neues Datenblatt in der aktuellen Arbeitsmappe Set wsDest = ThisWorkbook.Worksheets.Add wsDest.Name = wsSource.Name ' Kopiere die Daten vom Quell- zum Ziel-Datenblatt wsSource.Cells.Copy Destination:=wsDest.Cells ' Schließe die Quellarbeitsmappe wbSource.Close False MsgBox "Datenblatt '" & wsSource.Name & "' wurde erfolgreich importiert." End Sub ``` ### Erklärung des Codes: 1. **Dateiauswahl**: Der Benutzer wird aufgefordert, eine Excel-Datei auszuwählen. 2. **Öffnen der Datei**: Die ausgewählte Datei wird geöffnet. 3. **Datenblatt-Auswahl**: Der Benutzer wird gefragt, ob er jedes Datenblatt importieren möchte. 4. **Kopieren der Daten**: Das ausgewählte Datenblatt wird in die aktuell geöffnete Arbeitsmappe kopiert. 5. **Schließen der Quellarbeitsmappe**: Die Quellarbeitsmappe wird geschlossen, ohne die Änderungen zu speichern. Dieser Code kann in einem VBA-Modul eingefügt und ausgeführt werden, um den Importprozess zu starten.

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie funktioniert oPPT.Presentations.Open(sFile) in VBA?

Die Methode `oPPT.Presentations.Open(sFile)` stammt aus der Automatisierung von Microsoft PowerPoint mit VBA (Visual Basic for Applications) oder anderen Programmiersprachen, die COM-Automatisierung u... [mehr]

Wie kann ich mit VBA den Wert einer benannten Zelle in eine Zelle eines anderen Arbeitsblatts kopieren?

Um mit VBA den Wert einer Zelle, der ein definierter Name zugewiesen wurde, in eine Zelle eines anderen Arbeitsblatts zu kopieren, kannst du folgenden Code verwenden: ```vba Sub WertKopieren() &#... [mehr]

Mit welcher Funktion kann ich in VBA einen im Arbeitsblatt ermittelten Wert anzeigen?

In VBA kannst du einen Wert, den dein Makro zuvor ermittelt hat, mit der Funktion `MsgBox` anzeigen. Beispiel: ```vba Dim ermittelterWert As Double ermittelterWert = Worksheets("Tabelle1").... [mehr]

Wie lässt sich in Excel VBA der Typ eines Tabellenblatts (Chart oder Worksheet) ermitteln?

In Excel VBA kannst du den Typ eines Tabellenblatts (ob es sich um ein Arbeitsblatt oder ein Diagrammblatt handelt) mit der Type-Eigenschaft des jeweiligen Objekts ermitteln. Hier ein Beispiel: ```vb... [mehr]

Wie kann man in Access VBA die Bildschirmaktualisierung verhindern bzw. den Bildschirm einfrieren?

In Microsoft Access (VBA) gibt es keine direkte Methode wie `Application.ScreenUpdating = False` (wie in Excel), um den Bildschirm während der Ausführung von Code "einzufrieren". D... [mehr]

Wie öffne ich per VBA aus einer Access-Anwendung eine andere Access-Anwendung?

Um aus einer Access-Anwendung per VBA eine andere Access-Anwendung zu öffnen, kannst du das **CreateObject**-Kommando verwenden und die gewünschte Datenbank mit der **OpenCurrentDatabase**-M... [mehr]

Wie kann die VBA-Formel angepasst werden, sodass alle Mitarbeiter in die Zieltabelle übertragen werden?

Hier ist die überarbeitete Version des Makros, die **jeden Mitarbeiter** aus dem Bereich C9:C66 der Quell-Tabelle ("Personen einzelnd drucken") in die Ziel-Tabelle ("Arbeitsplan&qu... [mehr]

Importiere Mathematik?

Die Anweisung `import math` wird in Python verwendet, um das mathematische Modul zu importieren, das eine Vielzahl von mathematischen Funktionen und Konstanten bereitstellt. Nach dem Import kannst du... [mehr]

VBA: Tabelle prüfen, ob Spalte 3 Werte stehen. Sobald Spalte 3 leer ist, Wert der Spalte 1 kopieren bis zum letzten Wert in Spalte 1.

Um in VBA zu überprüfen, ob in Spalte 3 Werte stehen und bei einer leeren Zelle in Spalte 3 den Wert aus Spalte 1 zu kopieren, kannst du den folgenden Code verwenden. Dieser Code durchlä... [mehr]

Kann man in Python Funktionen direkt mit ihrem Namen importieren?

Ja, das stimmt. In Python kannst du einzelne Funktionen aus einem Modul direkt mit ihrem Namen importieren, indem du die `from ... import ...`-Syntax verwendest. Zum Beispiel: ```python from math imp... [mehr]