Hallo Leute, ich habe folgendes Problem: Ich möchte aus mehreren excell Tabellen1..20 das in Prinzip das selbe tuhen, eine einzige txt Datei erzeugen. In dieser Datei sollen nun die Ergebnisse der Tabellen untereinander hinzugefügt werden. Ich habe es so gemacht was auch nicht klappt: Public Sub CommandButton () Call Tabelle1.genFunk1 Call Tabelle1.genFunk2 ... ----------------------- Sub genFunc1...20() 'Für alle innerhalb gleiche Funktionalität ... ... ... Open "C:\temp\Generiere_Txt.txt" For Output As #1 Print #1, Txt_data Close #1 End Sub Das Problem liegt da dran, dass die Generiere_Txt.txt immer überschrieben wird. Danke im Vorraus! Gruß Max
:
Verschoben durch Admin
was auch logisch ist, da Open ... For Output immer eine neue Datei anlegt. Ein Blick in die Online-Hilfe zeigt, dass man als Mode auch Append verwenden kann ;-) by the way: die Aufspaltung in 20 einzelne Prozeduren ist natürlich suboptiomal. Da solltest Du besser eine einzige Prozedur draus machen, an die Du dann den Namen des jeweiligen Sheets übergibst. In einem weiteren Parameter kannst Du dann mitgeben, ob eine neue Datei erstellt werden soll oder oben an die bestehende angehängt werden soll. Dann würde ich das ganze auch nicht unbedingt in das VBA-Modul des ersten Sheets schreiben, sondern besser in ein eigenes Model ... sonst ist der ganze schöne Code weg, wenn aus versehen mal das Blatt gelöscht wird ;-)
Hi Digi Spark, danke für die Antworten und Ratschläge. Ich versuche mich in VBA reinzusteigern. Gibt es hierbei anstatt "open" befehl einen anderen befehl, der z.B. die daten untereinander anlegt?
Open ist schon richtig ... nur halt nicht For Output sondern dann halt For Append ... aber das steht wie gesagt auch in der Online-Hilfe zur Open-Anweisung ;-)
Hi, danke, soweit funktioniert es ganz gut. Digi Spark schrieb: > Da solltest Du besser eine einzige Prozedur draus machen, > an die Du dann den Namen des jeweiligen Sheets übergibst. Wie kann ich die Tabellennamen in der Prozedur ansprechen? Irgendwie bekomme ich immer eine Fehlermeldung.
Beispiel: Option Explicit Private Sub test() readValue ActiveWorkbook.Sheets("Sheet1") readValue ActiveWorkbook.Sheets("Sheet2") End Sub Private Sub readValue(ByRef pSheet As Worksheet) MsgBox pSheet.Cells(1, 1) End Sub Die Prozedur readValue gibt per Messagebox den Inhalt der Zelle A1 aus. Die Frage ist: von welchem Sheet? Antwort: von dem Sheet, das ihr als Parameter in pSheet übergeben wurde. Die Prozedur test zeigt, wie die readValue Prozedur aufgerufen wird um einmal den Wert aus Sheet1 und einmal aus dem Blatt Sheet2 auszulesen. Die Blattnamen musst Du natürlich an Deine Gegebenheiten anpassen. Wenn Du Dich etwas in das Thema einarbeiten willst, versuch im Internet doch mal den Unterschied zwischen Sub und Function sowie zwischen ByRef und ByVal heraus zu finden. Das wird dir später beim Code-Verständnis / Programmieren sehr helfen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.