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

Forumthread: Import via Button, Export Datei und Import Datei

Import via Button, Export Datei und Import Datei
16.08.2017 10:58:23
Daniel
Hallo Zusammen,
folgende Voraussetzungen habe ich für meine weitere Umsetzung.
Ich habe eine Excel Datei in der ich meine Makros laufen lasse, hier soll über ein Button "Import", eine Export Datei aus unserem ERP System geöffnet werden und dann der Inhalt entsprechend meines Markos in ein Arbeitsblatt (Vorlage) importiert werden.
Excel Dateien:
- Excel mit Makro (Master.xls)
Arbeitsblatt: Dateipfad Eingabe mit Import Button
Arbeitsblatt: Import_Sheet (hierhin werden die Daten von dem Export_Sheet kopiert, per Makro)
- Export aus ERP System (Export.xls)
Arbeitsblatt: Export_Sheet (Stammdaten aus ERP System, die Inhalte sollen später nach Arbeitsblatt Import_Sheet der Excel Datei mit Marko kopiert werden)
Im Anschluss soll das Arbeitsblatt "Import_Sheet" als neue Datei gespeichert werden mit dem aktuellen Datum als Dateiname.
Vielen Dank für die Unterstützung.
Export: https://www.herber.de/bbs/user/115514.xls
Master: https://www.herber.de/bbs/user/115515.xlsx
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Import via Button, Export Datei und Import Datei
17.08.2017 08:17:32
fcs
Hallo Daniel,
.... und dann der Inhalt entsprechend meines Markos in ein Arbeitsblatt (Vorlage) importiert werden.
Mit deinem Makro ist es in der Datei aber nooh nicht weit her ;-)
Ich hab dir mal etwas zusammengestellt.
Master-Datei: https://www.herber.de/bbs/user/115530.xlsm
Damit man nicht zuviel in der Programmierung checken muss, hab ich deine Import-Vorlage etwas angepasst.
- ab Zeile 4 bis zur letzten Zeile im Blatt sind alle Zeilen einheitlich formatiert.
- das Start-Datum in der Vorlage wird auf "Tabelle1" gesetzt.
- Im Import-Blatt wird das Datum in G1 per Formel übernommen und für die weiteren Tage berechnet
- Das Format für die Datumszellen ist angepasst, so das es wie bisher aussieht
- In Zeile 3 wird das Datum aus Zeile 1 per Formel übernommen, der Wochentag per Formatierung angezeigt.
Gruß
Franz
Anzeige
AW: Import via Button, Export Datei und Import Datei
17.08.2017 10:33:31
Daniel
Hey Franz,
wow - das ist ja nun mehr als erwartet. Chris aus diesem Forum hat mir folgenden Makro erarbeitet.
Diesen müsste ich theoretisch dann ab Stelle " 'Daten in Export-Tabelle kopieren und als Werte in Import-Blatt einfügen" in deinem Modul einfügen, richtig ?
'Vergleich der Überschriften von Tabelle1 mit Export
'Kopieren der jeweiligen Spalten, passend zur Überschrift
Public Sub Kopieren()
Dim WkSh_Quelle As Worksheet
Dim WkSh_Ziel As Worksheet
Dim rZelle As Range
Dim aUeberschr As Variant
Dim iIndx As Integer
Dim iSpalte As Integer
Dim lZeile As Long
aUeberschr = Array("Arbeitsplatz", "Material", "Bezeichnung", "Abladestelle", "Dispositiver  _
Bestand", "Rückstand")
Application.ScreenUpdating = False
Set WkSh_Quelle = Worksheets("Tabelle1") ' das Quell-Tabellenblatt
Set WkSh_Ziel = Worksheets("Tabelle4") ' das Ziel-Tabellenblatt
With WkSh_Quelle
For iIndx = 0 To UBound(aUeberschr)
Set rZelle = .Rows(1).Find(aUeberschr(iIndx), LookAt:=xlWhole, LookIn:=xlValues)
If Not rZelle Is Nothing Then
iSpalte = iSpalte + 1
lZeile = .Cells(Rows.Count, rZelle.Column).End(xlUp).Row
WkSh_Ziel.Range(WkSh_Ziel.Cells(4, iSpalte), WkSh_Ziel.Cells(lZeile + 2, iSpalte)) = _
.Range(.Cells(2, rZelle.Column), .Cells(lZeile, rZelle.Column)).Value
End If
Next iIndx
End With
'Es wird das Format von Zeile 4 kopiert, wenn Spaltenlänge länger ist als die bisherige  _
formartierte Tabelle
WkSh_Ziel.Rows("4:4").Copy
WkSh_Ziel.Rows("5:" & lZeile + 2).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Sub DatumKopieren()
Dim WkSh_Quelle As Worksheet
Dim WkSh_Ziel As Worksheet
Application.ScreenUpdating = False
Set WkSh_Quelle = Worksheets("Tabelle1") ' das Quell-Tabellenblatt
Set WkSh_Ziel = Worksheets("Tabelle4") ' das Ziel-Tabellenblatt
'Datum 1-12
WkSh_Quelle.Range("V1:AG1").Copy
WkSh_Ziel.Range("G1:R1").PasteSpecial Paste:=xlPasteValues
'Wochentag ermitteln
Range("G3:R3") = Range("G1:R1").Value
Range("G3:R3").NumberFormat = "ddd"
'Löschen des Werts PBD-
Columns("G:R").Replace What:="PBD-", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
'Kopiert die restlichen Werte unter das jeweilige
Sub DatumWerteKopieren()
Dim WkSh_Quelle As Worksheet
Dim WkSh_Ziel As Worksheet
Application.ScreenUpdating = False
Set WkSh_Quelle = Worksheets("Tabelle1") ' das Quell-Tabellenblatt
Set WkSh_Ziel = Worksheets("Tabelle4") ' das Ziel-Tabellenblatt
'Datum 1-12
WkSh_Quelle.Range("V2:AG900").Copy
WkSh_Ziel.Range("G4:R900").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
'Sortieren
Sub Sort()
Dim SortSpalte As Range
Application.ScreenUpdating = False
With Worksheets(3)
Range("A4:R60000").Select
Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'AutoFit Spaltenbreite anpassen
'Columns("A:L").Select
'Range(Selection, Selection.End(xlToRight)).Select
'Cells.EntireColumn.AutoFit
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
'Sub Qwert()
'Dim ersteZelle As Range, letzteZelle As Range
'With Worksheets("Tabelle4")
'Set ersteZelle = .Range("A4")
'Set letzteZelle = .Range("A900")
'   With .Range(ersteZelle, letzteZelle)
'      .Merge
'     .HorizontalAlignment = xlCenter
' End With
'End With
'End Sub

Anzeige
AW: Import via Button, Export Datei und Import Datei
17.08.2017 12:12:38
fcs
Hallo Daniel,
wenn du schon eine Teil-Lösung hast, warum läßt du dann hier die Arbeit doppelt machen?
Ob du den Chris-Teil einfach so einfügen kannst weiss ich nicht. Kann ich auf die Schnelle nicht prüfen.
Warum? Passt meine Lösung nicht?
Willst du alle Datums-Werte aus dem ERP-Export in deinen Import übernehmen?
Ändern sich die die Reihenfolgen der Spalten im ERP-Export?
Gruß
Franz
Anzeige
AW: Import via Button, Export Datei und Import Datei
17.08.2017 13:32:26
Daniel
Hey Franz,
das war natürlich nicht meine Absicht, hier die Arbeit doppelt machen zu lassen! Sorry.
Ich bin eigentlich davon ausgegangen das klar ist, dass das "Kopier-Makro" bereits vorhanden ist.
Deine Lösung passt natürlich super!
- Ich möchte die ersten 12 Datums-Werte aus dem ERP-Export in meinen Import übernehmen?
- Im Anschluss soll nach Arbeitsplatz, Material und materialkurztext sortiert werden
- Wenn möglich, nicht zwingend nötig, dann noch alle gleichen Werte in der Spalte Arbeitsplatz gruppieren und innerhalb des Arbeitsplatzes das Material ebenfalls gruppieren.
- Die Grundstruktur der Tabelle bleibt immer gleich
- Die neue Datei soll in den Ordner C:\temp\export gespeichert werden
Danke dir.
Anzeige
AW: Import via Button, Export Datei und Import Datei
17.08.2017 16:13:37
Daniel
So funktioniert das dann auch mit dem Makro vom Chris.
Nun versuche ich das noch etwas zu optimieren - aber ist bisher super ! Danke Dir!
Option Explicit
Sub Schaltflaeche_Import()
Dim strFileName As String
Dim wkbExport As Workbook, wksExport As Worksheet
Dim Zeile_E As Long, Spalte_E As Long, Zeile_EL&, Spalte_EL&
Dim Zeile_I As Long, Spalte_I As Long
Dim datExp As Date, datImp As Date, strDatExp As String
Dim wkbImport As Workbook, wksImport As Worksheet
Dim rZelle As Range
Dim aUeberschr As Variant
Dim iIndx As Integer
Dim iSpalte As Integer
Dim lZeile As Long
aUeberschr = Array("Arbeitsplatz", "Material", "Bezeichnung", "Abladestelle", "Dispositiver  _
Bestand", "Rückstand")
Set wksImport = ThisWorkbook.Worksheets("Import_Sheet")
With ThisWorkbook.Worksheets("Standards")
strFileName = .Range("B11").Text
End With
If Dir(strFileName) = "" Then
MsgBox "SAP-Exportdatei" & vbLf & strFileName & vbLf & "nichtgefunden!", _
vbOKOnly, "Prüfen Name SAP-Export-Datei"
GoTo Beenden
End If
'Import-Sheet in neue Arbeitsmappe kopieren
wksImport.Copy
Set wkbImport = ActiveWorkbook
Set wksImport = wkbImport.Worksheets(1)
With wksImport
'Blattumbenennen
.Name = "Import " & Format(Date, "YYYY-MM-DD")
'Formeln in Datums-Zellen durch Werte ersetzen
With .Range(.Cells(1, 7), .Cells(1, .Columns.Count).End(xlToLeft))
.Value = .Value
End With
End With
With Application
.ScreenUpdating = False
End With
'Export-Datei öffnen
Set wkbExport = Application.Workbooks.Open(filename:=strFileName, ReadOnly:=True)
Set wksExport = wkbExport.Worksheets(1)
'Daten in Export-Tabelle kopieren und als Werte in Import-Blatt einfügen
With wksExport
For iIndx = 0 To UBound(aUeberschr)
Set rZelle = .Rows(1).Find(aUeberschr(iIndx), LookAt:=xlWhole, LookIn:=xlValues)
If Not rZelle Is Nothing Then
iSpalte = iSpalte + 1
lZeile = .Cells(Rows.Count, rZelle.Column).End(xlUp).Row
wksImport.Range(wksImport.Cells(4, iSpalte), wksImport.Cells(lZeile + 2, iSpalte)) = _
.Range(.Cells(2, rZelle.Column), .Cells(lZeile, rZelle.Column)).Value
End If
Next iIndx
End With
'Es wird das Format von Zeile 4 kopiert, wenn Spaltenlänge länger ist als die bisherige  _
formartierte Tabelle
wksImport.Rows("4:4").Copy
wksImport.Rows("5:" & lZeile + 2).PasteSpecial Paste:=xlPasteFormats
'Datumsfelder 1-12
wksExport.Range("V1:AG1").Copy
wksImport.Range("G1:R1").PasteSpecial Paste:=xlPasteValues
'Löschen des Werts PBD-
wksImport.Columns("G:R").Replace What:="PBD-", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'Wochentag ermitteln
wksImport.Range("G3:R3") = wksImport.Range("G1:R1").Value
wksImport.Range("G3:R3").NumberFormat = "ddd"
'Kopiert die restlichen Werte unter das jeweilige
wksExport.Range("V2:AG900").Copy
wksImport.Range("G4:R900").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
'Export-Datei wieder schliessen
wkbExport.Close savechanges:=False
Range("C4").Select
'Import-Datei Speichern
Application.DisplayAlerts = False 'Datei mit gleichem Datum wird ggf. ohne Rückfrage ü _
berschriebn
wkbImport.SaveAs filename:=ThisWorkbook.Path & Application.PathSeparator _
& "WEP_Produktionsliste " & Format(Date, "YYYY-MM-DD") & ".xlsx", _
FileFormat:=51, addtomru:=True
Application.DisplayAlerts = True
With Application
.ScreenUpdating = True
End With
Beenden:
End Sub

Anzeige
AW: Import via Button, Export Datei und Import Datei
18.08.2017 07:52:15
Daniel
Hey Franz,
nun stehe ich noch vor folgenden Problemen, die ich nicht gelöst bekomme - hast du da eine idee ?
- Im Anschluss soll nach Arbeitsplatz, Material und materialkurztext sortiert werden
- Wenn möglich, nicht zwingend nötig, dann noch alle gleichen Werte in der Spalte Arbeitsplatz gruppieren und innerhalb des Arbeitsplatzes das Material ebenfalls gruppieren.
Danke
Daniel
Anzeige
AW: Import via Button, Export Datei und Import Datei
18.08.2017 08:21:50
fcs
Hallo Daniel,
ich hab meine Version angepasst und erweitert.
https://www.herber.de/bbs/user/115546.xlsm
Es werden jetzt die ersten 12 Tage kopiert, sortiert und Gruppierungen mit Teilergebnissen erstellt. Der Speicherort für die Importdatei ist geändert.
Gruß
Franz
Anzeige
AW: Import via Button, Export Datei und Import Datei
18.08.2017 08:59:05
Daniel
Top das funktioniert super.
Wenn ich nun eine zweite ERP-Export Datei habe, mit neuer Vorlage im Master Excel und in ein weiteres Arbeitsblatt in die neu erstelle Datei importieren möchte, wie wäre hier die Umsetzung ?
AW: Import via Button, Export Datei und Import Datei
18.08.2017 12:07:47
fcs
Hallo Daniel,
Wenn ich nun eine zweite ERP-Export Datei habe, mit neuer Vorlage im Master Excel und in ein weiteres Arbeitsblatt in die neu erstelle Datei importieren möchte, wie wäre hier die Umsetzung ?
1. in Tabelle 1 legst du einen 2. Block an in dem der Name der 2. Exportdatei festgelegt/Eingegeben wird.
1a. Formatiere die neue Vorlage-Tabelle "hübsch"
Dabei sollten dann die Spalten jeweils komplett formatiert werden (Rahmen, Zahlenformat,Horizontale und vertikale Ausrichtung, Zeilenumbruch in Zelle etc.). Für alle Zeilen im Blatt legst du eine einheitliche Höhe fest.
Danach kümmerst du dich um die individulle Formatierung der Titelzeilen.
2. Im VBA-Projekt fügst du ein neues allgemeines Modul ein.
In dieses Modul kopierst du den kompletten Code aus dem vorhanden Modul
3. im neuen Modul benennst du das Hauptmakro "Schaltflaeche_Import" um.
4. In den Makros im neuen Modul muss du dann alles anpassen/ergänzen was abweichend ist.
Dies sind Blattnamen und Dateinamen, sowie alle Zeilen- und Spaltennummer, Zellbereiche.
In der Anfangsphase solltest du 2 Zeilen in denen die Makros für die Sortierung und das Erstellen der Gruppierung gestarte werden, zu Kommentaren machen. Darum kannst du dich kümmern, wenn der eigentliche Import steht.
LG
Franz
Anzeige
AW: Import via Button, Export Datei und Import Datei
18.08.2017 14:35:34
Daniel
Hallo Franz,
das funktioniert wunderbar.
Kann ich die zwei neuen Dateien auch irgendwie zu einer Datei mit zwei Arbeitsblättern zusammenfügen ?
Bzw. den Import aus der zweiten Datei auch in die bereits zuvor erstelle neue Datei einfügen?
Danke Dir
AW: Import via Button, Export Datei und Import Datei
19.08.2017 04:58:41
fcs
Hallo Daniel,
man kann die beiden Importe in einer Arbeitsmappe zusammenfassen.
Dazu muss man beim 2. Import "nur" dessen Vorlage-Tabelle aus der Master-Datei in die Datei mit dem 1. Import kopieren.
Um Fehler im Makro-Ablauf zu vermeiden müssen vor dem Kopieren aber ehrere Randbedingungen geprüft werden.
Dafür vereinfacht sich dann das Speichern.
LG
Franz
Sub Schaltflaeche_Import_Nr_2()
Dim strFileName As String
Dim wkbExport As Workbook, wksExport As Worksheet
Dim Zeile_E As Long, Spalte_E As Long, Zeile_EL&, Spalte_EL&
Dim Zeile_I As Long, Spalte_I As Long
Dim datExp As Date, datImp As Date, strDatExp As String
Dim wkbImport As Workbook, wksImport As Worksheet
Dim strDateiImport As String
Set wksImport = _
ThisWorkbook.Worksheets("Import_Sheet_Nr_2")  'Blattname für 2. Vorlage anpassen
With ThisWorkbook.Worksheets("Tabelle1")
strFileName = .Range("B14").Text 'Zelle mit Dateiname für 2. ERP-Datei ggf. anpassen
End With
If Dir(strFileName) = "" Then
MsgBox "ERP-Exportdatei" & vbLf & strFileName & vbLf & "nichtgefunden!", _
vbOKOnly, "Prüfen Name ERP-Export-Datei"
GoTo Beenden
End If
'Name der Datei/Arbeitsmappe des 1. Imports         -  ggf.anpassen
strDateiImport = "ERP-Import " & Format(Date, "YYYY-MM-DD") & ".xlsx"
'prüfen, ob Mappe mit 1. Import angelegt ist
If Dir("C:\TEMP\export" & Application.PathSeparator _
& strDateiImport) = "" Then
MsgBox "Der Import für die 1. ERP-Exportdatei wurde noch nicht durchgeführt", _
vbOKOnly, "Prüfen ob Datei aus 1. ERP-Import vorhanden"
GoTo Beenden
Else
'prüfen ob Datei geöffnet ist
For Each wkbImport In Application.Workbooks
If LCase(wkbImport.Name) = LCase(strDateiImport) Then
Exit For
End If
Next wkbImport
If wkbImport Is Nothing Then 'Datei st ncht geöffnet
Set wkbImport = Application.Workbooks.Open("C:\TEMP\export" _
& Application.PathSeparator & strDateiImport)
End If
End If
'Import-Vorlage in die Arbeitsmappe vom 1. Import kopieren
With wkbImport
'Prüfen, ob schon mehr als 1 Tabellenblatt in ERP-Import-Datei vorhanden ist.
If .Sheets.Count > 1 Then
If MsgBox("Die Arbeitsmappe enthält bereits ein Blatt mit einem 2. Import" _
& vbLf & "Blatt mit 2. Import ersetzen?", _
vbQuestion + vbOKCancel, _
"Prüfen Anzahl Blätter in ERP-Import-Datei") = vbOK Then
Application.DisplayAlerts = False
.Sheets(2).Delete
Application.DisplayAlerts = True
Else
GoTo Beenden
End If
End If
wksImport.Copy after:=.Sheets(1)
Set wksImport = wkbImport.Sheets(2)
End With
With wksImport
'Blattumbenennen
.Name = "Import Nr 2 " & Format(Date, "YYYY-MM-DD") 'Blatt-Name anpassen für 2. Import!
End With
With Application
.ScreenUpdating = False
End With
'Export-Datei öffnen
Set wkbExport = Application.Workbooks.Open(Filename:=strFileName, ReadOnly:=True)
Set wksExport = wkbExport.Worksheets(1)
'===== ab hier die Anpassungen für den 2. Import ================
'Daten in Export-Tabelle kopieren und als Werte in Import-Blatt einfügen
With wksExport
Zeile_EL = .Cells(.Rows.Count, 1).End(xlUp).Row
Zeile_I = 4
Spalte_I = 1: Spalte_E = 1 'Arbeitsplatz
.Range(.Cells(2, Spalte_E), .Cells(Zeile_EL, Spalte_E)).Copy
wksImport.Cells(Zeile_I, Spalte_I).PasteSpecial Paste:=xlPasteValues
Spalte_I = 2: Spalte_E = 9 'I, J , K Material-Bezeichnung-Abladestelle
.Range(.Cells(2, Spalte_E), .Cells(Zeile_EL, Spalte_E + 2)).Copy
wksImport.Cells(Zeile_I, Spalte_I).PasteSpecial Paste:=xlPasteValues
Spalte_I = 5: Spalte_E = 14 'Dispositiver Bestand
.Range(.Cells(2, Spalte_E), .Cells(Zeile_EL, Spalte_E)).Copy
wksImport.Cells(Zeile_I, Spalte_I).PasteSpecial Paste:=xlPasteValues
Spalte_I = 6: Spalte_E = 17 'Rückstand
.Range(.Cells(2, Spalte_E), .Cells(Zeile_EL, Spalte_E)).Copy
wksImport.Cells(Zeile_I, Spalte_I).PasteSpecial Paste:=xlPasteValues
Spalte_I = 7 'Spalte G
Spalte_E = 19 '1. Spalte in Export-Blatt mit Datum in Zeile 1
'1. zwölf Datumswerte  in Zeile 1 im Import-Blatt ab Zelle G1 einfügen
.Range(.Cells(1, Spalte_E), .Cells(1, Spalte_E + 11)).Copy
wksImport.Cells(1, Spalte_I).PasteSpecial Paste:=xlPasteValues
'Datumswerte aufbereiten
wksImport.Range("G1:R1").Replace What:="PBD-", replacement:="", lookat:=xlPart
With wksImport.Range("G3:R3") 'Wohentage
.Calculate
.Value = .Value 'Formeln durch Werte ersetzen
End With
'Werte zu den Tagen kopieren und als Werte einfügen
.Range(.Cells(2, Spalte_E), .Cells(Zeile_EL, Spalte_E + 11)).Copy
wksImport.Cells(Zeile_I, Spalte_I).PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
'Export-Datei wieder schliessen
wkbExport.Close savechanges:=False
Call Sortieren(wks:=wksImport)
Call Teilergebnisse(wks:=wksImport)
Range("C4").Select
'====== Änderung für Speichern der beiden Imports in einer Datei ======
'Import-Datei Speichern
wkbImport.Save
With Application
.ScreenUpdating = True
End With
Beenden:
End Sub

Anzeige
AW: Import via Button, Export Datei und Import Datei
21.08.2017 08:16:19
Daniel
Super das hat geklappt. ich danke dir.
Gruß
Daniel
Anzeige
Anzeige

Infobox / Tutorial

Import und Export von Daten in Excel via Button


Schritt-für-Schritt-Anleitung

Um SAP-Daten in Excel zu importieren und eine Export-Datei zu erstellen, kannst Du die folgenden Schritte befolgen:

  1. Erstelle eine Excel-Datei mit Makros:

    • Öffne eine neue Excel-Datei und speichere sie als Master.xlsm.
    • Füge ein Arbeitsblatt Import_Sheet hinzu, in dem die importierten Daten angezeigt werden.
  2. Füge einen Import-Button hinzu:

    • Gehe zu "Entwicklertools" und wähle "Einfügen".
    • Wähle eine Schaltfläche (Button) aus und platziere sie auf Deinem Arbeitsblatt.
    • Verknüpfe die Schaltfläche mit einem Makro, das den Importvorgang steuert.
  3. Erstelle das Import-Makro:

    • Öffne den VBA-Editor (Alt + F11) und füge den folgenden Code in ein Modul ein:
Sub Schaltflaeche_Import()
    Dim strFileName As String
    Dim wkbExport As Workbook, wksExport As Worksheet
    Dim wksImport As Worksheet
    Set wksImport = ThisWorkbook.Worksheets("Import_Sheet")

    ' Dateiname für die zu importierende Datei festlegen
    strFileName = Application.GetOpenFilename("Excel-Dateien (*.xls; *.xlsx), *.xls; *.xlsx", , "Wähle die Export-Datei")

    If strFileName = "False" Then Exit Sub ' Abbrechen, wenn kein Dateiname gewählt wurde

    ' Export-Datei öffnen
    Set wkbExport = Application.Workbooks.Open(strFileName)
    Set wksExport = wkbExport.Worksheets(1)

    ' Daten kopieren
    wksExport.UsedRange.Copy wksImport.Range("A1")

    ' Export-Datei schließen
    wkbExport.Close SaveChanges:=False
End Sub
  1. Füge einen Export-Button hinzu:

    • Wiederhole die Schritte für das Erstellen eines Buttons, um eine Export-Funktion zu implementieren.
    • Verknüpfe den Button mit einem Makro, das die Daten speichert.
  2. Erstelle das Export-Makro:

    • Füge folgenden Code in das gleiche Modul ein:
Sub Button_Export()
    Dim wkbExport As Workbook
    Dim strExportPath As String
    Dim wksImport As Worksheet
    Set wksImport = ThisWorkbook.Worksheets("Import_Sheet")

    ' Speicherort für die exportierte Datei festlegen
    strExportPath = "C:\temp\export\Export_" & Format(Date, "YYYY-MM-DD") & ".xlsx"

    ' Neue Arbeitsmappe erstellen und Daten kopieren
    Set wkbExport = Workbooks.Add
    wksImport.UsedRange.Copy wkbExport.Worksheets(1).Range("A1")

    ' Arbeitsmappe speichern
    wkbExport.SaveAs Filename:=strExportPath
    wkbExport.Close SaveChanges:=False
End Sub

Häufige Fehler und Lösungen

  • Fehler beim Öffnen der Datei: Stelle sicher, dass der Pfad zur Datei korrekt ist und die Datei nicht von einem anderen Programm geöffnet ist.
  • Makros funktionieren nicht: Überprüfe die Excel-Einstellungen, ob Makros aktiviert sind.
  • Daten werden nicht korrekt importiert: Stelle sicher, dass die Struktur der Export-Datei mit der Import-Vorlage übereinstimmt.

Alternative Methoden

Anstelle von Buttons kannst Du auch das Excel-Datenimport-Tool verwenden:

  1. Gehe zu "Daten" > "Abrufen und transformieren" > "Daten abrufen".
  2. Wähle "Aus Datei" > "Aus Excel-Arbeitsmappe" und folge den Anweisungen.

Diese Methode bietet eine grafische Benutzeroberfläche und ist benutzerfreundlicher für Anfänger.


Praktische Beispiele

Hier ist ein Beispiel für das Importieren von Daten aus einer ERP-Export-Datei:

  1. Erstelle ein Arbeitsblatt Import_Sheet mit den Spalten: Arbeitsplatz, Material und Bezeichnung.
  2. Verwende den Import-Button, um die ERP-Daten zu laden.
  3. Die Daten werden in das Arbeitsblatt eingefügt und formatiert.
Sub ImportExample()
    ' Beispiel für das Importieren von SAP-Daten in Excel
    ' Hier kannst Du den Code von oben verwenden
End Sub

Tipps für Profis

  • Code optimieren: Verwende Arrays zur schnellen Verarbeitung von Daten.
  • Fehlermeldungen: Implementiere Fehlerbehandlungsroutinen in Deinem VBA-Code, um unerwartete Situationen zu managen.
  • Automatisierung: Überlege, ob Du die Import- und Exportvorgänge automatisieren kannst, um Zeit zu sparen.

FAQ: Häufige Fragen

1. Wie kann ich SAP-Daten in Excel importieren?
Du kannst SAP-Daten in Excel importieren, indem Du einen Button erstellst, der ein Makro zum Öffnen der Exportdatei ausführt.

2. Wie speichere ich die importierten Daten in einer neuen Datei?
Verwende ein weiteres Makro, das die Daten aus dem Import-Sheet in eine neue Arbeitsmappe kopiert und dort speichert.

3. Kann ich mehrere Export-Dateien in einem Arbeitsblatt kombinieren?
Ja, Du kannst in Deinem VBA-Code mehrere Import-Methoden anlegen und die Daten in verschiedenen Arbeitsblättern innerhalb einer Arbeitsmappe speichern.

4. Wie kann ich die Import-Knöpfe anpassen?
Du kannst die Schaltflächen formatieren, um sie benutzerfreundlicher zu gestalten und sie mit spezifischen Makros zu verknüpfen, die Deine Anforderungen erfüllen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige