Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten Import via Makro

Daten Import via Makro
18.01.2019 08:31:53
Thilo
Hallo liebe Excel und VBA Freaks,
ich habe ein Excel-File Auswertung) in welchem ich Daten auswerte.
Aufbau. Zelle A = Wiegescheinnummer (explizit) ID; Zelle B = Tonnage
Ich habe ein zweites Excel-File (Waage) mit dem gleichen Aufbau in dieses die Waage automatisch die Werte schreibt.
Nun hätte ich gerne ein Makro mit welchem ich die Werte aus dem File Waage in das File Auswertung Importieren kann (klick Funktion im File Auswertung)
Wichtig dabei wäre noch, dass nur die Werte importiert die noch nicht in Der Auswertungstabelle sind.
Optimal wäre es wenn man den Speicherort für das Waage-File ändern könnte da dieses per Mail zugesendet wird.
Es wäre super wenn es dafür eine Lösung gibt. :-)
Viele Grüße
Thilo
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten Import via Makro
18.01.2019 10:42:34
UweD
Hallo
versuch das mal
Option Explicit

Sub Importieren()
    Dim WB1, TB1, LR1 As Long
    Dim WDatei As String, WB2, TB2, LR2 As Long
    Dim Letzte As Long, Zeile As Long, Pfad As String
    Dim Dlg As FileDialog
    
    Set WB1 = ThisWorkbook
    Set TB1 = WB1.Sheets(1)
    
    WDatei = "Wiegedaten.xlsx" 'Name der Importdatei >>> anpassen 
    
    Application.ScreenUpdating = False
    
    LR1 = TB1.Cells(TB1.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte 
    
    Set Dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen 
    Dlg.InitialFileName = ThisWorkbook.Path 'Welches Verzeichnis soll voreingestellt sein 
    
    If Dlg.Show Then
        Pfad = Dlg.SelectedItems(1) & "\" 'gewählter Pfad 
        
        'Datei öffnen 
        Set WB2 = Workbooks.Open(Pfad & WDatei)
        Set TB2 = WB2.Sheets(1)
            
        Letzte = TB1.Cells(LR1, 1) 'letzte importierter Wiegeschein 
        Zeile = WorksheetFunction.Match(Letzte, TB2.Columns(1)) 'gefunden in Zeile 
        LR2 = TB2.Cells(TB2.Rows.Count, "A").End(xlUp).Row 'unterster Wiegeschein 
        
        'Import 
        TB1.Cells(LR1 + 1, 1).Resize(LR2 - Zeile, 2).Value = TB2.Cells(Zeile + 1, 1).Resize(LR2 - Zeile, 2).Value
        
        WB2.Close False 'Datei schließen ohne Speichern 
        
    Else
        MsgBox "Abbruch", vbCritical
    End If
End Sub

LG UweD
Anzeige
AW: Daten Import via Makro
18.01.2019 13:33:18
Thilo
Hi UweD,
das ist der Hammer!! Vielen Dank du hast mir das WE gerettet :-)
LG
Thilo
AW: Daten Import via Makro
18.01.2019 14:12:23
Thilo
Hallo UweD,
eine Frage habe ich doch noch dazu. Wie erweitere ich den Import wenn noch eine Spalte dazu kommt. Z.B. Kennzeichen. Wenn ich das weiß müsste ich es ja beliebig erweitern können.
Ich schätze, dass ich oben sage Dim LR3 As Long.
Nur wie baue ich das im Bereich Import ein.
Danke shcon mal :-)
LG Thilo
Anzeige
AW: Daten Import via Makro
18.01.2019 14:32:10
UweD
Hallo nochmal
Ich hab noch 2 Variable reingenommen, dadurch bist du flexibel.
Option Explicit

Sub Importieren()
    Dim WB1, TB1, LR1 As Long, SP As Integer, AnzSP As Integer
    Dim WDatei As String, WB2, TB2, LR2 As Long
    Dim Letzte As Long, Zeile As Long, Pfad As String
    Dim Dlg As FileDialog
    
    Set WB1 = ThisWorkbook
    Set TB1 = WB1.Sheets(1)
    
    WDatei = "Wiegedaten.xlsx" 'Name der Importdatei >>> anpassen 
    SP = 1 'erste Spalte, die mit der WägescheinNr. 
    AnzSP = 3 'Anzahl Spalten hier A-C 
    
    
    Application.ScreenUpdating = False
    
    LR1 = TB1.Cells(TB1.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte A 
    
    Set Dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen 
    Dlg.InitialFileName = ThisWorkbook.Path 'Welches Verzeichnis soll voreingestellt sein 
    
    If Dlg.Show Then
        Pfad = Dlg.SelectedItems(1) & "\" 'gewählter Pfad 
        
        'Datei öffnen 
        Set WB2 = Workbooks.Open(Pfad & WDatei)
        Set TB2 = WB2.Sheets(1)
            
        Letzte = TB1.Cells(LR1, SP) 'letzter bereits importierter Wiegeschein 
        Zeile = WorksheetFunction.Match(Letzte, TB2.Columns(SP)) 'gefunden in Zeile 
        LR2 = TB2.Cells(TB2.Rows.Count, SP).End(xlUp).Row 'unterster Wiegeschein 
        
        'Import 
        TB1.Cells(LR1 + 1, SP).Resize(LR2 - Zeile, AnzSP).Value = TB2.Cells(Zeile + 1, SP).Resize(LR2 - Zeile, AnzSP).Value
        
        WB2.Close False 'Datei schließen ohne Speichern 
        
    Else
        MsgBox "Abbruch", vbCritical
    End If
End Sub

LG UweD
Anzeige
AW: Daten Import via Makro
18.01.2019 14:41:51
Thilo
So ist das perfekt. Da muss man ja wirklich nur noch AnzSP = 3 ändern :-)
Vielen, Vielen Dank!
Prima! Danke für die Rückmeldung. owT
18.01.2019 14:53:26
UweD
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten Import via Makro in Excel


Schritt-für-Schritt-Anleitung

Um Daten aus einer anderen Excel-Datei zu importieren, kannst du ein Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie du ein Excel Makro zum Importieren von Daten aus einer anderen Datei erstellen kannst:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)".
    • Wähle Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    
    Sub Importieren()
       Dim WB1 As Workbook, TB1 As Worksheet, LR1 As Long
       Dim WDatei As String, WB2 As Workbook, TB2 As Worksheet, LR2 As Long
       Dim Letzte As Long, Zeile As Long, Pfad As String
       Dim Dlg As FileDialog
    
       Set WB1 = ThisWorkbook
       Set TB1 = WB1.Sheets(1)
    
       WDatei = "Wiegedaten.xlsx" 'Name der Importdatei anpassen
    
       Application.ScreenUpdating = False
    
       LR1 = TB1.Cells(TB1.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte A
    
       Set Dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen
       Dlg.InitialFileName = ThisWorkbook.Path 'Welches Verzeichnis soll voreingestellt sein
    
       If Dlg.Show Then
           Pfad = Dlg.SelectedItems(1) & "\" 'gewählter Pfad
           Set WB2 = Workbooks.Open(Pfad & WDatei)
           Set TB2 = WB2.Sheets(1)
    
           Letzte = TB1.Cells(LR1, 1) 'letzter importierter Wiegeschein
           Zeile = WorksheetFunction.Match(Letzte, TB2.Columns(1)) 'gefunden in Zeile
           LR2 = TB2.Cells(TB2.Rows.Count, "A").End(xlUp).Row 'unterster Wiegeschein
    
           'Import
           TB1.Cells(LR1 + 1, 1).Resize(LR2 - Zeile, 2).Value = TB2.Cells(Zeile + 1, 1).Resize(LR2 - Zeile, 2).Value
    
           WB2.Close False 'Datei schließen ohne Speichern
       Else
           MsgBox "Abbruch", vbCritical
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus:

    • Drücke ALT + F8, wähle Importieren und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Stelle sicher, dass der Dateiname und der Pfad korrekt sind. Überprüfe, ob die Datei tatsächlich im gewählten Verzeichnis vorhanden ist.
  • Fehler: "Typen unverträglich"

    • Dies könnte bedeuten, dass in der Zelle, die du importierst, ein unerwarteter Datentyp vorliegt. Stelle sicher, dass die Daten in beiden Tabellen übereinstimmen.

Alternative Methoden

Wenn du keine Makros verwenden möchtest, kannst du auch die Funktion "Daten importieren" in Excel nutzen:

  1. Gehe zu Daten > Daten abrufen.
  2. Wähle Aus Datei > Aus Arbeitsmappe.
  3. Navigiere zur gewünschten Datei und klicke auf Importieren.

Diese Methode ermöglicht es dir, Daten ohne Makros zu importieren, bietet jedoch weniger Automatisierung.


Praktische Beispiele

  • Beispiel 1: Import von Wiegedaten

    • Verwende das oben angegebene Makro, um Daten wie Wiegescheinnummern und Tonnage aus einer Datei namens "Wiegedaten.xlsx" zu importieren.
  • Beispiel 2: Import mit zusätzlichen Spalten

    • Wenn du eine zusätzliche Spalte (z.B. Kennzeichen) hinzufügen möchtest, erweitere die AnzSP-Variable im Makro entsprechend. Ändere AnzSP = 3 für drei Spalten.

Tipps für Profis

  • Automatisierung: Du kannst das Makro so anpassen, dass es automatisch beim Öffnen der Datei ausgeführt wird.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen in dein Makro ein, um unerwartete Fehler besser zu handhaben.
  • Daten von Webseiten: Wenn du Daten von einer Webseite in Excel importieren möchtest, kannst du VBA verwenden, um Webanfragen durchzuführen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen? Du kannst die Variablen und die Struktur des Makros anpassen, um spezifische Anforderungen zu erfüllen, wie das Importieren von mehr Spalten.

2. Funktioniert das Makro in allen Excel-Versionen? Das Makro sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren, die die VBA-Programmierung unterstützen.

3. Kann ich das Makro auch für andere Dateiformate verwenden? Ja, du kannst das Makro anpassen, um Daten aus verschiedenen Excel-Dateiformaten zu importieren, indem du den Dateinamen und den Pfad entsprechend änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige