Office: (Office 365) VBA Makro einfügen CSV, verarbeiten und abspeichern

Helfe beim Thema VBA Makro einfügen CSV, verarbeiten und abspeichern in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, erstmal vorab meine VBA Kenntnisse sind sehr rudimentär. Aufgabenstellung in Kurz: Ich hab 2 Dateien, eine Hauptdatei... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Mark-AD, 8. September 2022.

  1. Mark-AD Neuer User

    VBA Makro einfügen CSV, verarbeiten und abspeichern


    Hallo zusammen,

    erstmal vorab meine VBA Kenntnisse sind sehr rudimentär.

    Aufgabenstellung in Kurz:

    Ich hab 2 Dateien, eine Hauptdatei (IDXXXX_8x8_GV-contrast.xlsm) und eine CSV die folgendermaßen Beispielhaft benannt ist ID06850.csv (die Nummern ändern sich, Name bleibt immer gleich lang).

    Ich hab nun die Herausforderung ein Makro zu schreiben, dass sich in einer Excel Datei befindet in der 2 Arbeitsblätter sind (grey value mesh 8x8, Graph).

    In diese Hauptdatei möchte ich aus einer CSV Datei meiner Wahl (anfangend aus dem selben Ordner in dem diese Hauptdatei liegt), einen Teil (immer Zeile 2-65 und Spalte A-D, Zeile 1 ist Überschrift die brauch ich nicht) daraus importierten.

    Diese Daten sollen in der Haupdatei im Blatt "grey value mesh 8x8" in Zeile 2-65 und Spalte B-E einfgefügt werden.

    !Dieser Teil ist teilweise geschafft. Das Makro startet bei der Dateiauswahl nur nicht im selben Ordner im dem die Hauptdatei liegt!

    Um folgendes möchte ich das Makro noch erweitern:
    1. Das was oben fehlt, das Makro soll beim "Öffnen Fenster" da Anfangen wo die Hauptdatei liegt.
    2. Aus dem Namen der gewählten CSV Datei im Blatt "Graph" in Feld H12 die Nummer der ID eintragen (nur die Nummer ohne ID davor und .csv dahinter)
    3. In dem Ordner in dem sich die Haupdatei befindet, soll dann die Datei als ID06850_8x8_GV-contrast.xlsm abgespeichert werden.
    4. Die Hauptdatei (IDXXXX_8x8_GV-contrast.xlsm) soll weiter offen bleiben und die .csv mit der gerade gearbeitet wurde geschlossen werden.

    Folgendermaßen schaut das Makro momentan aus:

    Sub importCSV()
    '
    ' importCSV Makro
    '
    ' Tastenkombination: Strg+ä
    '
    strOpenFile = Application.GetOpenFilename(, , "Please choose CSV:")
    Workbooks.OpenText Filename:= _
    strOpenFile, Origin:=65001, StartRow _
    :=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
    , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
    Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True
    Range("A1:D64").Select
    Selection.Copy
    Windows("IDXXXX_8x8_GV-contrast.xlsm").Activate
    Range("B2").Select
    ActiveSheet.Paste
    End Sub


    Das Makro wurde aufgenommen und da hab ich beim import schon angeklickt das er ab Zeile 2 anfangen soll und Zeile 1 garnicht erst mitnimmt.

    Wäre für jede Hilfe dankbar, da ich hierzu nichts praktikables gefunden hab bis jetzt.

    Gruß Mark
     
  2. d'r Bastler
    d'r Bastler Erfahrener User
    d'r Bastler, 8. September 2022
    #2
    1 Person gefällt das.
  3. Mark-AD Neuer User
    Hi vielen Dank für den Tipp.

    Leider steht da "nur" wie ich aus einem bestimmten Ordner die Datei laden kann, nicht aber wie er den Ordner im Fenster schon anwählt in dem die Hauptdatei liegt. Der Ordner in den ich die Hauptdatei immer reinkopiere ändert sich vom Namen immer (laufende Auftragsnummer usw... ).

    Hast du da n Tipp?

    Gruß Mark
     
  4. Exl121150 Erfahrener User

    VBA Makro einfügen CSV, verarbeiten und abspeichern

    Hallo,

    folgendes Makro sollte dafür Abhilfe schaffen:
    Code:
    Option Explicit
    
    Sub importCSV()
    '
    ' importCSV Makro
    '
    ' Tastenkombination: Strg+ä
    '
       Dim strOpenFile As String
      
       With Application.FileDialog(fileDialogType:=msoFileDialogFilePicker)
         .AllowMultiSelect = False
         .InitialView = msoFileDialogViewDetails
         .InitialFileName = ActiveWorkbook.Path
         .Title = "Please choose CSV:"
         With .Filters
           .Clear
           .Add "CSV-Dateien", "*.CSV", 1
         End With
         If .Show = -1 Then
           strOpenFile = .SelectedItems(1)
         End If
       End With
      
    '   strOpenFile = Application.GetOpenFilename(, , "Please choose CSV:")
      
       Workbooks.OpenText Filename:=strOpenFile, Origin:=65001, StartRow:=2, _
         DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
         ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
         FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True
      
       Range("A1:D64").Copy Destination:=Worksheets("Zielblatt").Range("B2")
      
    '   Range("A1:D64").Select
    '   Selection.Copy
    '   Windows("IDXXXX_8x8_GV-contrast.xlsm").Activate
    '   Range("B2").Select
    '   ActiveSheet.Paste
    
    End Sub
    

    In der letzten Codezeile musst du statt "Zielblatt" den Namen des Arbeitsblattes einsetzen, in dem die Zielzelle B2 liegt.
     
    Exl121150, 9. September 2022
    #4
    1 Person gefällt das.
  5. Exl121150 Erfahrener User
    Hallo,

    die letzte Codezeile muss natürlich heißen:
    Range("A1:D64").Copy Destination:=ThisWorkbook.Worksheets("Zielblatt").Range("B2")
    wobei wiederum "Zielblatt" zu ersetzen ist mit dem richtigen Arbeitsblattnamen des Kopierzieles. Dabei muss sich "Zielblatt" in derselben Arbeitsmappe befinden, in der sich auch das Makro befindet.
     
    Exl121150, 9. September 2022
    #5
    1 Person gefällt das.
  6. Mark-AD Neuer User
    Super das funktioniert ja mega :D. Danke. Jetzt muss ich mich "nur" noch um das Speichern und schließen kümmern.
     
  7. Mark-AD Neuer User
    Ok für den Namen hab ich folgenden Lösungsansatz:
    Dim blattname As String
    Application.Volatile
    blattname = ActiveSheet.Name
    Sheets("ThisWorkbook.Worksheets("Graph").Range("H12")").Range("A1")").Value = blattname

    Bis blattname = ActiveSheet.Name is alles tutti nur will er mir es nicht in mein anderes Workbook schreiben mit folgender Fehlermeldung: Fehler beim kompilieren erwartet Listentrennzeichen oder).

    Screenshot:

    VBA Makro einfügen CSV, verarbeiten und abspeichern upload_2022-9-9_12-28-26.png

    Hat wer nen tipp wie ich die Variable blattname in meinem Hauptdokument im Blatt Graph in Zelle H12 angezeigt bekomme?

    Danke schonmal

    Mark
     
  8. Exl121150 Erfahrener User

    VBA Makro einfügen CSV, verarbeiten und abspeichern

    Hallo,
    was willst du mit dieser Zuweisungszeile erreichen? Außer dass du den Namen des aktiven Arbeitsblattes an irgendwelche Zellen des Arbeitsblattes "Graph" zuweisen möchtest, verstehe ich überhaupt nichts - und VBA ist natürlich damit total überfordert.
    Zu sehen sind die beiden Zellen A1 und H12 - was soll mit diesen geschehen?
     
    Exl121150, 9. September 2022
    #8
    1 Person gefällt das.
  9. Exl121150 Erfahrener User
    Hallo,
    ThisWorkbook.Worksheets("Graph").Range("H12").Value = blattname
     
    Exl121150, 9. September 2022
    #9
    1 Person gefällt das.
  10. Mark-AD Neuer User
    Also ich möchte erreichten das er mir den Namen des aktiven Arbeitsblattes in die Hauptdatei IDXXXX_8x8_GV-contrast.xlsm im selben Ordner (die is ja schon offen) auf auf das Arbeitsblatt Graph Zelle H12 schreibt. Das .Range("A1") war n copy paste fehler den ich nicht gesehen habe.
     
  11. Mark-AD Neuer User
    Wow das funktioniert ja super. Gibt es eine möglichkeit dann automatisch am Schluss die Datei mit dem blattnamen_8x8_GV-contrast.xlsm extra zu speichern. Ich mein ohne das er die Hauptdatei die offen ist abspeichert?

    Anders ausgedrückt, er erstellt danach aus der Hauptdatei im Hintergrund die Datei (Beispiel) ID06850_8x8_GV-contrast.xls und die Hauptdatei wird nicht gespeichert.

    Geht das? Wenn ja wie?
     
  12. Exl121150 Erfahrener User
    Hallo,

    mit der folgenden Anweisung wird die Excel-Datei mit dem Makro und den beiden Arbeitsblättern "grey value mesh 8x8" und "Graph" als Kopie unter dem neuen Namen Blattname & "_8x8_GV-contrast.xlsm" gespeichert, wobei der Inhalt der Variablen Blattname vom CSV-Dateinamen herrührt.
    Wenn die Variable Blattname den Inhalt "ID06850" hat, wird eine Kopie der Excel-Datei mit Dateiname "ID06850_8x8_GV-contrast.xlsm" im ebenfalls anzugebenden Pfad gespeichert:

    ThisWorkbook.SaveCopyAs Filename:="Pfad\" & Blattname & "_8x8_GV-contrast.xlsm"
     
    Exl121150, 9. September 2022
    #12
    1 Person gefällt das.
  13. Mark-AD Neuer User

    VBA Makro einfügen CSV, verarbeiten und abspeichern

    Hi, super danke das du mir da grad so viel hilfst. Jetzt hab ich das Problem das der Pfad praktisch immer der sein muss wo die Hauptdatei drin liegt. Ich habs versucht mit ActiveWorkbook.Path

    ThisWorkbook.SaveCopyAs Filename:=ActiveWorkbook.Path & blattname & "_8x8_GV-contrast.xlsm"

    Nur des interessiert ihn nicht. (Hab die Zeile mal auskommentiert, war noch aus nem versuch obs mit "" geht, Überraschung tuts nicht.)

    Hier mal der ganze code:

    Sub importCSV()
    '
    ' importCSV Makro
    '
    ' Tastenkombination: Strg+ä
    '

    'Datei öffnen

    Dim strOpenFile As String

    With Application.FileDialog(fileDialogType:=msoFileDialogFilePicker)
    .AllowMultiSelect = False
    .InitialView = msoFileDialogViewDetails
    .InitialFileName = ActiveWorkbook.Path
    .Title = "Please choose CSV:"
    With .Filters
    .Clear
    .Add "CSV-Dateien", "*.CSV", 1
    End With
    If .Show = -1 Then
    strOpenFile = .SelectedItems(1)
    End If
    End With

    'CSV verarbeiten

    Workbooks.OpenText Filename:=strOpenFile, Origin:=65001, StartRow:=2, _
    DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
    FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True

    Range("A1:D64").Copy Destination:=ThisWorkbook.Worksheets("grey value mesh 8x8").Range("B2")

    'Name aus CSV holen und einfügen
    Dim blattname As String
    Application.Volatile
    blattname = ActiveSheet.Name
    ThisWorkbook.Worksheets("Graph").Range("H12").Value = blattname

    'Sichern der Hauptdatei mit blattname

    'ThisWorkbook.SaveCopyAs Filename:="ActiveWorkbook.Path\" & blattname & "_8x8_GV-contrast.xlsm"

    'Schließen der CSV

    ActiveWorkbook.Close SaveChanges = False

    'Aktivieren der Haupdatei

    Windows("IDXXXX_8x8_GV-contrast.xlsm").Activate

    End Sub
     
    Zuletzt bearbeitet: 12. September 2022
  14. Exl121150 Erfahrener User
    Hallo,

    das kann so nicht funktionieren. Falls du meinen Hinweis genau gelesen hast, steht dort
    ThisWorkbook.SaveCopyAs Filename:="Pfad\" & Blattname & "_8x8_GV-contrast.xlsm"
    somit muss die Anweisung lauten wie folgt:
    ThisWorkbook.SaveCopyAs Filename:=ActiveWorkbook.Path & "\" & blattname & "_8x8_GV-contrast.xlsm"
     
    Exl121150, 12. September 2022
    #14
    1 Person gefällt das.
  15. Mark-AD Neuer User
    ok ich hatte dahinter auch mal das\ stehen aber warum muss das \ mit &"\" angehängt werden?

    Vielen Dank auf jedenfall für deine großartige Hilfe!
     
    Zuletzt bearbeitet: 12. September 2022
Thema:

VBA Makro einfügen CSV, verarbeiten und abspeichern

Die Seite wird geladen...
  1. VBA Makro einfügen CSV, verarbeiten und abspeichern - Similar Threads - VBA Makro einfügen

  2. VBA-Makro zur Zellenformatierung Syntax probleme

    in Microsoft Excel Hilfe
    VBA-Makro zur Zellenformatierung Syntax probleme: Hallo zusammen, ich möchte per Makro Zellen formatieren. Tausender-Trennzeichen 3 Nachkommastellen Positive Zahlen Schwarz Negative Zahlen Rot Nullwert mit - Hinter der Zahl soll noch eine...
  3. Speichern mit dem Titel der Zelle A2

    in Microsoft Excel Hilfe
    Speichern mit dem Titel der Zelle A2: Moin moin, Ich habe per Makro einen Arbeitsablauf aufgezeichnet der soweit auch funktioniert. Dieser Endet jedoch im "Speichern Unter" Fenster, welches durch das Klicken von "Drucken als PDF"...
  4. Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen

    in Microsoft Excel Hilfe
    Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen: Hallo Zusammen, mein erster Beitrag hier, also schon mal Sorry im Voraus, wenn unvollständig beschrieben *:)* Ich habe das Forum schon nach einem brauchbaren Lösungsansatz durchsucht, bin aber...
  5. Makro/VBA Text in Zahl umwandeln

    in Microsoft Excel Hilfe
    Makro/VBA Text in Zahl umwandeln: Hallo liebes Forum, ich habe eine Frage und bin bisher leider nicht so wirklich fündig geworden :oops: Aber ich bin mir sicher, dass ich hier Hilfe bekomme *;)* In meiner Arbeitsdatei sind...
  6. VBA Makro, einzelne Zellen kopieren und in fortlaufende Zeile einfügen

    in Microsoft Excel Hilfe
    VBA Makro, einzelne Zellen kopieren und in fortlaufende Zeile einfügen: Hallo zusammen Verstehe die Makro Codes nicht gut, jedoch halfen bereits youtube Tutorials bei ein paar Problemen. Nun bräuchte ich aber eure Hilfe. Es geht um folgendes: Ich möchte ein Makro in...
  7. Makro zur Einfügung hervorgehobener Klammern

    in Microsoft Word Hilfe
    Makro zur Einfügung hervorgehobener Klammern: Liebes Forum, ich zerbreche mir den Kopf, wie man Folgendes als Makro umsetzt: 1. Der markierte Text soll in eckige Klammern gesetzt werden. 2. Die eingefügten eckigen Klammern (nicht der...
  8. mehrere Bilder per VBA in Exceltabelle einfügen

    in Microsoft Excel Hilfe
    mehrere Bilder per VBA in Exceltabelle einfügen: Hallo Zusammen, ich hatte für Excel 2007 ein Makro, mit welchem ich Bilder anhand des Bildpfades in eine Exceltabelle einfügen konnte. Das Makro funktioniert zwar auch noch in Excel 2013,...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden