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.

KI fragen

Verwandte Fragen

Was bedeutet ErrNum 75 in Access VBA?

Der Fehlercode **ErrNum = 75** in Microsoft Access VBA steht für **"Pfad/Datei-Zugrifffehler"** (englisch: "Path/File access error"). Dieser Fehler tritt auf, wenn ein Zugriff... [mehr]

Was bedeutet 'On Error GoTo 0'?

Die Anweisung `On Error GoTo 0` stammt aus der Programmiersprache Visual Basic (z. B. VBA, VB6). Sie wird verwendet, um die aktuelle Fehlerbehandlung zu deaktivieren. Das bedeutet: - Nach `On Error G... [mehr]

Ist Shapes("Rechteck 1").Visible = True korrekt in Excel-VBA?

Der Ausdruck `Shapes("Rechteck 1").Visible = True` ist in Excel-VBA **nicht korrekt**, da das `Visible`-Eigenschaftsmerkmal für Shapes in Excel-VBA **nicht existiert**. In Excel-VBA s... [mehr]

Ist folgender Excel-VBA-Code korrekt: HeightPt = Rows("4:" & Cells(49,19).Row).Height?

Der gezeigte Code ist in Excel-VBA **nicht korrekt** und führt zu einem Fehler. Das Problem liegt in der Syntax innerhalb der `Rows`-Funktion. Hier die Analyse: **Dein Code:** ```vba HeightPt =... [mehr]

Wie kann man in Excel-VBA einen RGB-Code aus einer Zelle lesen?

Um in Excel-VBA einen RGB-Code aus einer Zelle zu lesen und diesen z.B. für die Füllfarbe eines Shapes zu verwenden, kannst du wie folgt vorgehen: Angenommen, in Zelle **A1** steht der RGB-... [mehr]

Was bewirkt der VBA-Code mit shp.Line.Visible = msoFalse und shp.Fill.ForeColor.RGB = 0?

Der gezeigte VBA-Code (Visual Basic for Applications) wird typischerweise in Microsoft Office-Anwendungen wie PowerPoint oder Excel verwendet, um die Formatierung einer Form (Shape) zu steuern. Hier i... [mehr]

Was bewirkt der VBA-Code mit shp.Line.Visible = msoFalse, shp.Fill.Visible = msoTrue und shp.Fill.ForeColor.RGB = 0?

Der gezeigte VBA-Code (Visual Basic for Applications) wird typischerweise in Microsoft Office-Anwendungen wie PowerPoint oder Excel verwendet, um die Formatierung einer Form (Shape) zu steuern. Hier i... [mehr]

Wie erstelle ich in Access VBA eine SQL-Abfrage?

Um in Microsoft Access per VBA eine Abfrage (Query) mit SQL zu erstellen, kannst du das DAO-Objektmodell verwenden. Hier ein Beispiel, wie du per VBA eine neue Abfrage mit einer SQL-Anweisung erstells... [mehr]

Was ist falsch an folgendem Access VBA SQL-Statement: strSQL = "INSERT INTO tbl_Bestände_HZV (Datum, RLEx) IN " & strPfadExtern & "." & ZielTabelle & ...?

In deinem SQL-Statement gibt es mehrere Probleme: 1. **Syntaxfehler bei `IN`**: Das `IN`-Schlüsselwort wird in Access-SQL für das Einfügen in eine externe Tabelle verwendet, aber... [mehr]

Wie kann man per VBA-Makro beim Öffnen einer Datei das Kontextmenü der rechten Maustaste deaktivieren?

Um beim Öffnen einer Excel-Datei per VBA-Makro die Kontextmenüs der rechten Maustaste zu deaktivieren, kannst du folgenden Code im Modul "DieseArbeitsmappe" (engl. "ThisWorkbo... [mehr]