Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel per Makro Inhalt in neue Mappe

Excel per Makro Inhalt in neue Mappe
07.12.2022 20:07:05
Max
Hallo liebe Excel Gemeinde,
ich stehe vor einer kleinen Herausforderrung. :)
Ich möchte per Makro den Inhalt von Tabellenblatt "X" und dort Spalte "B:E" aus meinem aktuellen Arbeitsblatt in einer neuen Datei "Sites.xlsx" speichern.
In "Sites.xlsx" soll der Inhalt in die Spalte "A:D" eingetragen werden.
Der Inhalt der "Sites.xlsx" soll dabei, bei jedem aufruf des Makros überschrieben und anschließend abgespeichert werden.
Der Makrorecorder versucht leider den Inhalt im selben Tabellenblatt, statt in einer neuen Datei zu speichern.
Über Hilfe würde ich mich sehr freuen.
Beste Grüße
Max

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel per Makro Inhalt in neue Mappe
07.12.2022 20:17:33
Yal
Hallo Max,
Alternative: Du richtest in der Arbeitsmappe "Sites.xlsx" (*) eine Power Query Abfrage, die sich die Daten aus dem Tabellenblatt "x" holt. Dann brauchst Du nur auf das Ergebnis-Tabelle rechtsklicken und "Aktualisieren".
(*): einmal per Hand erzeugen, weil sonst musst Du zusätzlich den einamlige Zustand der Erzeugung der Arbeitsmappe per Makro verwalten. Irsinn.
Menü "Daten", "neue Abfrage", "aus Datei", "aus Arbeitsmappe".
Idealerweise ist dein Bereich "B:E" in Blatt "X" als intelligente Tabelle definiert (Menü "Einfügen", "Tabelle")
VG
Yal
AW: Excel per Makro Inhalt in neue Mappe
07.12.2022 20:40:31
Max
Hallo Yal,
vielen Dank für die schnelle Antwort.
Ja die Idee ist sehr gut.
Ich dachte nur, dass der Lösungsansatz mit dem Makro geeigneter ist, da ich dann nur eine Exceldatei aktualisieren muss.
Diese speichert dann automatisch die entsprechenden Werte in der "Sites.xlsx".
So müsste ich erst die Datei mit den Daten und anschließend die Datei "Sites.xlsx" aktualisieren, oder?
VG
Max
Anzeige
AW: Excel per Makro Inhalt in neue Mappe
07.12.2022 22:58:27
Yal
Hallo Max,
die Frage ist, was wird mit dem Sites.xlsx gemacht? Wann und warum muss diese Datei aktuell sein?
Wenn es nur eine Quelle für eine andere Verfahren, dann lieber einen CSV als eine Excel (und dann "Push"-Verfahren: Datenexport wird aus der Quelle gesteuert. Also Makro). Wenn es eine Datei, der eh geöffnet werden soll, um daran etwas zu machen, dann kann es zu diesem Zeitpunkt aktualisiert werden (Pull: Daten werden von der Ziel aus importiert. Also Power Query).
Anders gesagt: Aktualisierung als Vorrat oder Aktualisierung bei Bedarf?
VG
Yal
AW: Excel per Makro Inhalt in neue Mappe
07.12.2022 23:28:25
Max
Hallo Yal,
genau die "Sites.xlsx" soll nicht geöffnet werden und dient lediglich als Datenquelle.
In unregelmäßigen Abständen nutzt ein python Skript diese als Quelle.
Daher wäre die Lösung mit dem Makro glaube ich am besten?
Beste Grüße
Max
Anzeige
AW: Excel per Makro Inhalt in neue Mappe
08.12.2022 09:11:20
Yal
Hallo Max,
also Push.
Ein Python-Skript kommt schneller im Gang, wenn Du ihn einen CSV anstatt xlsx übergibt. Darüber hinaus wird eine CSV standardmässig mit Excel geöffnet, daher schwenke ich direkt auf diese Lösung (Eine Excel-Datei zu erzeugen ist auch möglich, aber leicht umständlicher)
Achte auf die Anbindung der externen Bib. Das Equivalent von Import in Python.

Sub InsDatei_exportieren()
'unter Anbindung (in VBA-Editor unter "Extras", "Verweise...") auf
'Microsoft Scripting Runtime
Dim FSO As New FileSystemObject
Dim F As TextStream
Dim Z As Range 'Z wie Zelle
Const cPfad = "C:\temp\"
Const cDateiname = "Sites.csv"
With Worksheets("X")
Set F = FSO.CreateTextFile(cPfad & cDateiname, Overwrite:=True)   'Datei erzeugen
For Each Z In Range(.Range("B1"), .Cells(.Rows.Count, "B").End(xlUp)) 'von B1 bis letzte befüllte Zelle in Spalte "B"
F.WriteLine Join(Application.Transpose(Application.Transpose(Z.EntireRow.Range("B1:E1"))), ";") 'relative Adressierung
Next
F.Close 'Datei schliessen (Textstream ist AutoSave)
End With
End Sub
VG
Yal
Anzeige
AW: Excel per Makro Inhalt in neue Mappe
08.12.2022 18:27:38
Max
Hallo Yal,
vielen Dank für Deine spitzenmäßige Hilfestellung. :)
Ich habe es jetzt versucht einzubauen.
Leider springt der Debugger bei folgender Zeile an: "F.WriteLine Join(Application.Transpose(Application.Transpose(Z.EntireRow.Range("B1:E1"))), ";")"
Fehlermeldung ist: "Typen unverträglich".
Die "Microsoft Scripting Runtime" habe ich aktiviert.
Was habe ich falsch gemacht?
Besten Dank
Max
AW: Excel per Makro Inhalt in neue Mappe
08.12.2022 18:49:14
Yal
Hallo Max,
hast Du etwa verbundene Zellen oder irgendwelche unkonventionelle Inhalt in den Zellen? Ich hatte keinen solchen Fehler.
Egal. Hier die klassische Variante:

Sub InsDatei_exportieren()
'unter Anbindung (in VBA-Editor unter "Extras", "Verweise...") auf
'Microsoft Scripting Runtime
Dim FSO As New FileSystemObject
Dim F As TextStream
Dim Z As Range 'Z wie Zelle
Dim Elt
Dim Text As String
Const cPfad = "C:\temp\"
Const cDateiname = "Sites.csv"
With Worksheets("X")
Set F = FSO.CreateTextFile(cPfad & cDateiname, Overwrite:=True)   'Datei erzeugen
For Each Z In Range(.Range("B1"), .Cells(.Rows.Count, "B").End(xlUp)) 'von B1 bis letzte befüllte Zelle in Spalte "B"
Text = ""
For Each Elt In Z.EntireRow.Range("B1:E1") 'relative Adressierung
Text = Text & ";" & Elt.Value
Next
F.WriteLine Mid(Text, 2) 'ohne den führende Semikolon
Next
F.Close 'Datei schliessen (Textstream ist AutoSave)
End With
End Sub
VG
Yal
Anzeige
AW: Excel per Makro Inhalt in neue Mappe
08.12.2022 18:40:38
Max
Hallo Yal,
mir ist noch eine Idee gekommen.
Es handelt sich um Webseiten Links welche aus der Datenquelle in Sites übertragen werden sollen.
Ist das vlt. nicht kompatibel mit dem .csv Format?
Die Links enthalten einige Sonderzeichen wie bspw. " / ? = & "
Beste Grüße
Max
AW: Excel per Makro Inhalt in neue Mappe
08.12.2022 18:54:25
Yal
Hallo Max,
das ist es. Es liegt nicht an den Link-Adresse, sondern an der Tatsache, dass Zellen, die einen Link enthalten, ein komplexe Datentyp haben, in Gegensatz zu Text oder Zahlen.
Ev. musst Du sogar meine Version 2 so anpassen:
Text = Text & ";" & Elt.Text
anstatt
Text = Text & ";" & Elt.Value
VG
Yal
Anzeige
AW: Excel per Makro Inhalt in neue Mappe
08.12.2022 19:37:51
Max
Hi Yal,
mit der Anpassung läuft das Makro einwandfrei durch.
Wirklich grandios. :)
Leider wird nur die Datei "Sites.csv" nicht erstellt.
Das ist irgendwie sehr merkwürdig, da ich keine Fehlermeldung erhalte.
Grüße
Max
AW: Excel per Makro Inhalt in neue Mappe
08.12.2022 19:45:38
Max
Hi Yal,
hat sich erledigt.
Funktioniert einwandfrei.
Ich hatte lediglich beim Pfad das letzt "\" vergessen.
Vielen vielen Dank nochmal.
Echt großartig!! :)
AW: Excel per Makro Inhalt in neue Mappe
07.12.2022 22:25:16
Max
Hallo zusammen,
ich habe folgenden Code gefunden.
Wie müsste ich diesen anpassen, damit nur der entsprechende Tabelleninhalt als neue Datei abgespeichert wird?
Den Pfad möchte ich manuell festlegen und nicht aus einer Zelle beziehen.
Die "Sites.xlsx" soll immer wieder überschrieben wird.
Über Tipps würde ich mehr sehr freuen. :)

Sub SpeichernNeu()
Dim WB as Workbook
Dim wsForm as Worksheet
Dim Pfad as String, Datei as String
Dim Anzahl as Integer
Set WB = Workbooks(ThisWorkbook.Name)
Set wsForm = WB.Worksheets("Formular")
    Pfad = wsForm.Range("A1")
Datei = wsForm.Range("A2")
Anzahl = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1 ' so viele Tabellenblätter wie du willst
Workbooks.Add
Application.SheetsInNewWorkbook = Anzahl
ActiveWorkbook.SaveAs Filename:=Pfad & "" & Datei -> C:\\...\links.xlsx
wsForm.Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
ActiveWorkbook.Sheets(1).Delete
'ActiveWorkbook.Save
End Sub
Vielen Dank
Beste Grüße
Max
Anzeige
AW: Excel per Makro Inhalt in neue Mappe
09.12.2022 16:48:19
Wolfgang
Hallo Max,
dann mach's wie aus der anhängenden Arbeitsmappe, die ist nach Deinen Angaben "gebastelt",
weil Du das VBA-Makro ja irgendwo laufen lassen musst, ist es hier, d.h. Du kannst es nur ein Mal laufen lassen.
Ich hänge Dir außerdem das exportierte VBA-Modul zum import in eine beliebige Arbeitsmappe.
In dieser Arbeitsmappe Du benutzt das Shortcut-Alt+F11, oder Du gehst im Hauptmenu in "Entwicklertools" ganz links oben findest Du den Knopf "Visual-Basic",
da gehs't Du 'rein und rechts Klick auf "VBA-Projekt" im "lokalen" Menu, das sich dann öffnet, klicks't Du "Datei importieren" und wählst das hier angehängte "Modul_Transfer.bas"
(das mußt Du Dir also irgendwo abspeichern)
Viel Erfolg!
Deine VBA-Kenntnis mußt Du von Null auf mittelprächtig auf peppen.
Gruß Wolfgang
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige