Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
456to460
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
456to460
456to460
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateiname übernehmen?

Dateiname übernehmen?
20.07.2004 09:08:20
Thorsten
Hallo, ich habe einen Makro geschrieben, welcher Inhalte von der Ausgangsdatei kopiert, in ein neues Dokument schreibt, wieder zurück zur Ausgangsdatei kehrt, sich neuen Inhalt holt etc...Auszug aus dem Code:
Workbooks.Add
Workbooks("Muster.xls").Worksheets("Tabelle1").Columns(1).Copy _
Destination:=ActiveWorkbook.Worksheets("Tabelle1").Range("A1")

Workbooks("Muster.xls").Worksheets("Tabelle1").Columns(spalte).Copy _
Destination:=ActiveWorkbook.Worksheets("Tabelle1").Range("B1")

'Speichern unter dem Namen der B Spalte / SaveAs TXT:
ActiveSheet.SaveAs (ActiveSheet.Cells(1, 2).Value) & ".txt", FileFormat:=xlText
'Workbooks.Close
Windows(Muster.xls).Activate
Die Datei, von der der Makro ausgeführt wird, heisst jedoch nicht Muster, sondern mal so mal so. Der Makro muss also den Namen der Ausgangsdatei übernehmen und Muster durch den Namen der Ausgangsdatei ersetzen...
Eine andere Möglichkeit wäre, die gespeicherte Datei gleich zu schließen, dann bekomm ich jedoch die Fehlermeldung "xx.txt hat nicht das MS EXCEL 97 Format..." ich müsste dann jedesmal auf "Ja" klicken...

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname übernehmen?
Ramses
Hallo
probier mal
Windows(ThisWorkbook.Name).Activate
Gruss Rainer
AW: Dateiname übernehmen?
20.07.2004 09:38:34
Thorsten
Laufzeitfehler '9'
Index außerhalb des gültigen Bereichs... ka :/
kann ich dem Dateinamen nich ne Variable zuweisen und mit dem Get-Befehl den dateinamse auslesen oder so?
AW: Dateiname übernehmen?
Ramses
Hallo
"...Laufzeitfehler '9'
Index außerhalb des gültigen Bereichs..."
Das kann nicht sein, weil "ThisWorkbook.Name" IMMER den Namen der Arbeitsmappe zurückgibt, aus welcher das Makro aufgerufen wird :-))
Da hast du einen anderen Fehler noch drin den ich hier allerdings nicht sehe.
Gruss Rainer
Gruss Rainer
Anzeige
AW: Dateiname übernehmen?
20.07.2004 09:52:03
Thorsten
Wenn ich aber Muster.xls drinstehen lasse funktioniert alles ohne Probleme..wo soll denn das Windows(ThisWorkbook.Name).Activate deiner Meinung nach hin?
Makro hier: https://www.herber.de/bbs/user/8700.txt

AW: Dateiname übernehmen?
Ramses
Hallo
Workbooks.Add
Windows(ThisWorkbook.Name).Activate
Aktiviert mir anschliessend wieder die Mappe, aus der das Makro aufgerufen wurde ?
Ausserdem glaube ich nicht, dass dein Makro überhaupt funktioniert
Hier definierst du die Ausgangsspalte
spalte = 2
Hier bestimmst du die Anzahl Leerzellen in Spalte 2
Anzahlleerzellen = Application.WorksheetFunction.CountBlank(Columns(2))
Und was machst du hier eigentlich ?
Ein "=" fehlt, kann also schonmal prinzipiell nicht tun

Do While Anzahlleerzellen 65536
' Solange bis komplett leere Spaltee kommt
Und hier würdest du für jeden Suchlauf eine neue Arbeitsmappe erstellen !!!
Workbooks.Add
Workbooks("Muster.xls").Worksheets("Tabelle1").Columns(1).Copy _
Destination:=ActiveWorkbook.Worksheets("Tabelle1").Range("A1")
Und warum willst du eine leere Spalte kopieren ?
Workbooks("Muster.xls").Worksheets("Tabelle1").Columns(spalte).Copy _
Destination:=ActiveWorkbook.Worksheets("Tabelle1").Range("B1")

'Speichern unter dem Namen der B Spalte / SaveAs TXT:
ActiveSheet.SaveAs (ActiveSheet.Cells(1, 2).Value) & ".txt", FileFormat:=xlText
'Workbooks.Close
Windows(Muster.xls).Activate Hier müsste dann die Anweisung hin
Windows(ThisWorkbook.Name).Activate
spalte = spalte + 1
Anzahlleerzellen = Application.WorksheetFunction.CountBlank(Columns(spalte))
Loop
-----------------
Hier mal mein Vorschlag

Sub Demo()
Dim i As Integer
Dim tarC As Integer
Dim qWkb As Workbook, tarWkb As Workbook
'Leere Spalte bestimmen
For i = 1 To 256
If Application.WorksheetFunction.CountBlank(Columns(i)) = 65536 Then
'Leere Spalte
tarC = i
Exit For
End If
Next i
'Variablen zuweisen
Set qWkb = Workbooks(ThisWorkbook.Name)
Set tarWkb = Workbooks.Add
'Kopiervorgang starten
qWkb.Worksheets("Tabelle1").Columns(1).Copy Destination:=tarWkb.Worksheets(1).Columns(1)
qWkb.Worksheets("Tabelle1").Columns(tarC).Copy Destination:=tarWkb.Worksheets(i).Range("B1")
Debug.Print tarWkb.Worksheets(1).Range("A2") & ".txt"
tarWkb.SaveAs tarWkb.Worksheets(1).Range("A2") & ".txt", FileFormat:=xlText
tarWkb.Close
End Sub

Gruss Rainer
Anzeige
AW: Dateiname übernehmen?
20.07.2004 11:16:23
Thorsten
Und was machst du hier eigentlich ?
Ein "=" fehlt, kann also schonmal prinzipiell nicht tun
Do While Anzahlleerzellen 65536
' Solange bis komplett leere Spaltee kommt
da steht normal auch ein "kleiner als" dazwischen sry..
Und hier würdest du für jeden Suchlauf eine neue Arbeitsmappe erstellen !!!
Solls ja auch...Spalte A+B in eine neue Datei, Spalte A+C in eine neue Datei, Spalte A+D etc..
AW: Dateiname übernehmen?
Ramses
Hallo
dann probier mal das

Sub Demo()
Dim i As Integer
Dim tarC As Integer
Dim qWkb As Workbook, tarWkb As Workbook
'Leere Spalte bestimmen
For i = 1 To 256
If Application.WorksheetFunction.CountBlank(Columns(i)) = 65536 Then
'Leere Spalte
tarC = i
Exit For
End If
Next i
'Variablen zuweisen
Set qWkb = Workbooks(ThisWorkbook.Name)
'Kopiervorgang starten
For i = 1 To tarC - 1
Set tarWkb = Workbooks.Add
qWkb.Worksheets("Tabelle1").Columns(1).Copy Destination:=tarWkb.Worksheets(1).Columns(1)
qWkb.Worksheets("Tabelle1").Columns(i).Copy Destination:=tarWkb.Worksheets(i).Columns(2)
tarWkb.SaveAs tarWkb.Worksheets(1).Range("A2") & ".txt", FileFormat:=xlText
tarWkb.Close
Next i
End Sub

Gruss Rainer
Anzeige
AW: Dateiname übernehmen?
20.07.2004 12:14:54
Thorsten
ebenfalls laufzeit fehler...grrrrr :(
liegt das vllt an der office version?
AW: Dateiname übernehmen?
Ramses
Hallo
Welche Zeile wird markiert wenn du auf Debuggen gehst
Gruss Rainer
AW: Dateiname übernehmen?
20.07.2004 10:28:36
Harald
Hallo Thorsten,
für die genannte Aufgabenstellung nutze ich ebenfalls ein Makro. Funktioniert problemlos für den Wechsel zwischen 2 Exceldateien.
Hier ein paar relevante Codeschnipsel.
Öffnet die benötigte Datei anhand des Datums in der aktiven Zelle
Dim Filename As String
Filename = "I:\NIO_Zahlen\RS\FS" & Format(ActiveCell, "yyyy") & Format(ActiveCell, "mm") & Format(ActiveCell, "dd") & ".xls"
If Dir(Filename) = "" Then
MsgBox "Gesuchte Datei wurde nicht gefunden."
Exit Sub
Else
Workbooks.Open Filename
End If
Ansprache für Datei FS2004irgendwas.xls
Dim wnd As Window
For Each wnd In Windows
If wnd.Caption Like "FS2004*.xls" Then
wnd.Activate
Exit For
End If
Next wnd
sowie genaue Ansprache
Windows("Pareto_Analyse_07_04.xls").Activate
Hoffe das hilft.
Harald
P.S.: Im Zweifelsfalle auf Rainer's Lösung zugreifen (der kanns besser als ich :-))))
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige