Discussion:
Dynamische Pfadangabe in VBA
(zu alt für eine Antwort)
Rudolf Hänni
2004-11-16 22:03:01 UTC
Permalink
Hallo NG,
Ich habe noch mal ein Problem:
Ich habe es mit hilfe von Herbert und Stefan geschafft, daten von einer
Mappe in eine andere zu koppieren.
Siehe Beitrag "Nach einer andern Mappe koppieren? vom 13.11.04
Das Makro funktioniert einwandfrei.
Wie meistens, ist aber ein neues Problem aufgetaucht.
Die Ziel Datei wird immer gefunden, sie wird nicht verschoben oder
umbenannt, wohl aber die Quell-Datei.
Sie wird jede Woche unter neuem Namen gespeichert, also Dubliziert.
Ich muss nun jedes mal den Code anpassen, damit die Quell Datei gefunden
wird, aus Workbooks("WochenplanEntw12.xls")
wird dann Workbooks("WochenplanEntw13.xls").
Ich suche nach einer möglichkeit, anstelle von
"Workbooks("WochenplanEntw12.xls" eine Dynamische Adresse angeben zu können.
Ich stelle mir dass ungefähr so vor:
In zelle B3 der Quell Tabelle steht immer ein Datum(Wochenbeginn) nun möchte
ich die Datei unter dem Datum speichern.
Anschliessend sollte der Code in dem Koppieren Makro geändert werden, die
Adresse sollte Also Dynamisch sein. Der Code sollte immer dann geändert
werden,
wenn die Datei neu gespeichert wird. Ist sowas möglich?
Vielen Dank im voraus.
Gruss
Rudolf
Melanie Breden
2004-11-16 22:30:12 UTC
Permalink
Hallo Rudolf,
Post by Rudolf Hänni
Ich suche nach einer möglichkeit, anstelle von
"Workbooks("WochenplanEntw12.xls" eine Dynamische Adresse angeben zu können.
In zelle B3 der Quell Tabelle steht immer ein Datum(Wochenbeginn) nun möchte
ich die Datei unter dem Datum speichern.
Anschliessend sollte der Code in dem Koppieren Makro geändert werden, die
Adresse sollte Also Dynamisch sein. Der Code sollte immer dann geändert
werden,
wenn die Datei neu gespeichert wird. Ist sowas möglich?
dann halte den Dateinamen immer dynamisch nach dem Text in B3:

Dim wbk As Workbook

Set wbk = Workbooks("WochenplanEntw" & _
Worksheets("Tabelle1").Range("B3").Text & ".xls")
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Rudolf Hänni
2004-11-18 10:16:11 UTC
Permalink
Hallo Melanie,
Vielen Dank für deine Antwort.
Wo muss ich dass einbauen? ich habe schon diverses versucht aber ohne
erfolg.
Muss das in ein eigenes Modul?

Unten habe ich den Code eingefügt den ich zur Zeit verwende.
Gruss Rudolf
Option Explicit

Sub Kopieren_archiv()
Dim i As Long, Lz As Long
Dim mon As Variant
mon = Array("Monat", "Jahr")
i = MsgBox("Wollen Sie wirklich" & Chr(13) & _
"nach Archiv koppieren?", vbYesNo, "Tabelle Kopieren")
If i = vbNo Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open "C:\Dokumente und Einstellungen\Rudolf
Hänni\Desktop\Spar\archiv.xls" '<-- Pfad anpassen
Workbooks("WochenplanEntw12.xls") _
.Worksheets("Woche").Range("A3:G56").Copy

With Workbooks("archiv.xls")
For i = LBound(mon) To UBound(mon)
Lz = .Worksheets(mon(i)). _
Cells(Rows.Count, "A").End(xlUp).Row + 1
.Worksheets(mon(i)).Range("A" & Lz). _
PasteSpecial Paste:=xlValues
Next i
Application.CutCopyMode = False
.Save
.Close
End With
Application.ScreenUpdating = True
End Sub
Post by Melanie Breden
Dim wbk As Workbook
Set wbk = Workbooks("WochenplanEntw" & _
Worksheets("Tabelle1").Range("B3").Text & ".xls")
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Herbert Taferner
2004-11-18 15:19:23 UTC
Permalink
Hallo Rudolf,
Post by Rudolf Hänni
Hallo Melanie,
Vielen Dank für deine Antwort.
Wo muss ich dass einbauen? ich habe schon diverses versucht aber ohne erfolg.
Muss das in ein eigenes Modul?
ich denke mal du meinst es so,
'------------------------
Option Explicit

Sub Kopieren_archiv()
Dim i As Long, Lz As Long
Dim mon As Variant
Dim Quelle As String

Quelle = Workbooks("WochenplanEntw" & _
Worksheets("Tabelle1").Range("B3").Text & ".xls")

mon = Array("Monat", "Jahr")
i = MsgBox("Wollen Sie wirklich" & Chr(13) & _
"nach Archiv koppieren?", vbYesNo, "Tabelle Kopieren")
If i = vbNo Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open "C:\Dokumente und Einstellungen" _
& "\Rudolf Hänni\Desktop\Spar\archiv.xls" '<-- Pfad
anpassen

Workbooks(Quelle). _
Worksheets("Woche").Range("A3:G56").Copy

With Workbooks("archiv.xls")
For i = LBound(mon) To UBound(mon)
Lz = .Worksheets(mon(i)). _
Cells(Rows.Count, "A").End(xlUp).Row + 1
.Worksheets(mon(i)).Range("A" & Lz). _
PasteSpecial Paste:=xlValues
Next i
Application.CutCopyMode = False
.Save
.Close
End With
Application.ScreenUpdating = True
End Sub
'----------------------

mfg Herbert
Rudolf Hänni
2004-11-18 15:57:30 UTC
Permalink
Hallo Herbert,
Vielen Dank für deine Bemühungen.
Ich habe den Code eingebaut und bekomme immer die Fehlermeldung
Laufzeitfehler 9 "Index ausselhalb des Gültigen bereiches."
Die Zeilen
Quelle = Workbooks("WochenplanEntw" & _
Worksheets("Tabelle1").Range("B3").Text & ".xls")
Sind gelb hinterlegt.
Ich denke, es hat damit zu tun, dass das Makro von dieser Mappe aus
gestartet wird.
Die Mappe Archiv wird geöffnet, nur findet der Code dann nicht mehr zurück.
Gruss Rudolf
Was ist falsch?
Post by Melanie Breden
Hallo Rudolf,
Post by Rudolf Hänni
Hallo Melanie,
Vielen Dank für deine Antwort.
Wo muss ich dass einbauen? ich habe schon diverses versucht aber ohne erfolg.
Muss das in ein eigenes Modul?
ich denke mal du meinst es so,
'------------------------
Option Explicit
Sub Kopieren_archiv()
Dim i As Long, Lz As Long
Dim mon As Variant
Dim Quelle As String
Quelle = Workbooks("WochenplanEntw" & _
Worksheets("Tabelle1").Range("B3").Text & ".xls")
mon = Array("Monat", "Jahr")
i = MsgBox("Wollen Sie wirklich" & Chr(13) & _
"nach Archiv koppieren?", vbYesNo, "Tabelle Kopieren")
If i = vbNo Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open "C:\Dokumente und Einstellungen" _
& "\Rudolf Hänni\Desktop\Spar\archiv.xls" '<--
Pfad anpassen
Workbooks(Quelle). _
Worksheets("Woche").Range("A3:G56").Copy
With Workbooks("archiv.xls")
For i = LBound(mon) To UBound(mon)
Lz = .Worksheets(mon(i)). _
Cells(Rows.Count, "A").End(xlUp).Row + 1
.Worksheets(mon(i)).Range("A" & Lz). _
PasteSpecial Paste:=xlValues
Next i
Application.CutCopyMode = False
.Save
.Close
End With
Application.ScreenUpdating = True
End Sub
'----------------------
mfg Herbert
Herbert Taferner
2004-11-18 16:01:22 UTC
Permalink
Hallo Rudolf,

in der Datei wo der Code angewandt wird muß es ein Blatt
mit dem Namen Tabelle1 geben und da wird der Wert aus
der Zelle B3 gelesen sonst dies anpasse

wie heißt den die Tabelle aus der der Wert gelesen wird?

mfg Herbert
Rudolf Hänni
2004-11-18 16:14:16 UTC
Permalink
Hallo Herbert,
Ich habe den Code geändert. Jetzt bekomme ich die Fehlermeldung
Laufzeitfehler 438 "Objekt unterstützt diese Eigenschaft oder Methode
nicht." was ist dass jetzt wieder?
Die Tabelle heisst "Woche"

Gruss und vielen Dank
Rudolf
Herbert Taferner
2004-11-18 16:21:47 UTC
Permalink
Hallo Rudolf,

da habe ich unten die Quelle nicht geändert
wie ich oben die Deklaration auf String getauscht habe
so müßte es jetzt laufen

'--------------------------------
Sub Kopieren_archiv()
Dim i As Long, Lz As Long
Dim mon As Variant
Dim Quelle As String

Quelle = "WochenplanEntw" & _
Worksheets("Woche").Range("B3").Text & ".xls"

mon = Array("Monat", "Jahr")
i = MsgBox("Wollen Sie wirklich" & Chr(13) & _
"nach Archiv koppieren?", vbYesNo, "Tabelle Kopieren")
If i = vbNo Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open "C:\Dokumente und Einstellungen" _
& "\Rudolf Hänni\Desktop\Spar\archiv.xls" '<-- Pfad
anpassen

Workbooks(Quelle). _
Worksheets("Woche").Range("A3:G56").Copy

With Workbooks("archiv.xls")
For i = LBound(mon) To UBound(mon)
Lz = .Worksheets(mon(i)). _
Cells(Rows.Count, "A").End(xlUp).Row + 1
.Worksheets(mon(i)).Range("A" & Lz). _
PasteSpecial Paste:=xlValues
Next i
Application.CutCopyMode = False
.Save
.Close
End With
Application.ScreenUpdating = True
End Sub
'----------------------

mfg Herbert
Rudolf Hänni
2004-11-20 12:26:21 UTC
Permalink
Hallo Herbert,
Hall Reiner,

Ich kann machen was ich will, ich bekomme das ding nicht zum laufen.
Jetzt bekomme ich den Fehler in untenstehender Zeile, wieder Laufzeitfehler
9
Es sollte aber alles Stimmen.
Die arbeitsmappe wo das Makro gespeichert ist und von wo es ausgeführt wird
heisst WochenplanEntw, Die Tabelle wo ich die Daten herholen will heist
"Woche"
Nachdem ich daen Code eingbaut hatte, hat es genau einmal funktioniert,
danach nicht mehr.

Workbooks(Quelle). _
Worksheets("Woche").Range("A3:G56").Copy

Der ganze Code:

Sub Kopieren_archiv()
Dim i As Long, Lz As Long
Dim mon As Variant
Dim Quelle As String

Quelle = "WochenplanEntw" & _
Worksheets("Woche").Range("B3").Text & ".xls"

mon = Array("Monat", "Jahr")
i = MsgBox("Wollen Sie wirklich" & Chr(13) & _
"nach Archiv koppieren?", vbYesNo, "Tabelle Kopieren")
If i = vbNo Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open "C:\Dokumente und Einstellungen" _
& "\Rudolf Hänni\Desktop\Spar\archiv.xls" '<--
Pfad anpassen

Workbooks(Quelle). _
Worksheets("Woche").Range("A3:G56").Copy

With Workbooks("archiv.xls")
For i = LBound(mon) To UBound(mon)
Lz = .Worksheets(mon(i)). _
Cells(Rows.Count, "A").End(xlUp).Row + 1
.Worksheets(mon(i)).Range("A" & Lz). _
PasteSpecial Paste:=xlValues
Next i
Application.CutCopyMode = False
.Save
.Close
End With
Application.ScreenUpdating = True
End Sub

Gruss und vielen Dank für die Geduld
Rudolf
Herbert Taferner
2004-11-20 13:08:06 UTC
Permalink
Hallo Rudolf,
Post by Rudolf Hänni
Ich kann machen was ich will, ich bekomme das ding nicht zum laufen.
Jetzt bekomme ich den Fehler in untenstehender Zeile, wieder Laufzeitfehler 9
Es sollte aber alles Stimmen.
Die arbeitsmappe wo das Makro gespeichert ist und von wo es ausgeführt wird
heisst WochenplanEntw, Die Tabelle wo ich die Daten herholen will heist
"Woche"
Nachdem ich daen Code eingbaut hatte, hat es genau einmal funktioniert, danach
nicht mehr.
Workbooks(Quelle). _
Worksheets("Woche").Range("A3:G56").Copy
was steht den zur Zeit der Ausführung in der Zelle B3

starte einmal das Makro im Einzellschrittmodus
den Cursor in das Makro stellen und F8 drücken
dann wird immer ein Befehl ausgeführt und wieder gewartet
zwischendurch kannst du die Variablen sehen welchen Wert sie gerade haben
in dem du mit der Maus über den Namen fährst dadurch blendet sich
die Quickinfozeile ein und zeigt dir den momentanen Wert
mit jeweils drücken der Taste F8 kannst du dann die Befehle durchlaufen
und sehen was wo welchen Wert hat

mfg Herbert
Rudolf Hänni
2004-11-20 14:06:12 UTC
Permalink
Hallo Herbert,
In B3 steht ein Datum, immer das erste der Arbeitswoche.
Ich habe das Makro Schrittweise ausgeführt.
In der Variable Quelle wird der Name der Mappe und der inhalt von B3
angezeigt, wenn beispielsweise in B3 1.12.2004 steht
zeigt die Variable Quelle "WochenplanEntw1.12.2004" an.
Das erste mal hat es funktioniert, dann war wieder schluss.
Komischerweise war bei dem mal, wo es funktioniert hatt, die Mappe
Archiv.xls schon offen. Nachdem ich die Frage ob die Datei noch mal geöffnet
werden soll mit Ja bestätigt hatte, lief das Makro ohne Murren zu ende.
Gruss Rudolf

"> was steht den zur Zeit der Ausführung in der Zelle B3
Post by Herbert Taferner
starte einmal das Makro im Einzellschrittmodus
den Cursor in das Makro stellen und F8 drücken
dann wird immer ein Befehl ausgeführt und wieder gewartet
zwischendurch kannst du die Variablen sehen welchen Wert sie gerade haben
in dem du mit der Maus über den Namen fährst dadurch blendet sich
die Quickinfozeile ein und zeigt dir den momentanen Wert
mit jeweils drücken der Taste F8 kannst du dann die Befehle durchlaufen
und sehen was wo welchen Wert hat
mfg Herbert
Rudolf Hänni
2004-11-20 14:47:47 UTC
Permalink
Hallo Harbert,
Ich habe das Problem gelöst.
Ich hatte in B3 ein Datum drinn. Dieses wurde mit einer Formel dorthin
geholt.
Ich habe nun die Formel gelöscht und Schreibe das Datum von Hand in die
Zelle, und siehe da,
Alles funktioniert.
Ich möchte an dieser stelle noch mal allen guten Geistern dieser NG recht
herzlich Danken, ohne eure Geduld
wäre so manches Problem wohl nicht zu lösen.
Gruss und schönes Wochenende
Rudolf
Herbert Taferner
2004-11-20 15:13:48 UTC
Permalink
Hallo Rudolf,
Post by Rudolf Hänni
Hallo Harbert,
Ich habe das Problem gelöst.
Ich hatte in B3 ein Datum drinn. Dieses wurde mit einer Formel dorthin geholt.
Ich habe nun die Formel gelöscht und Schreibe das Datum von Hand in die Zelle,
und siehe da,
Alles funktioniert.
Ich möchte an dieser stelle noch mal allen guten Geistern dieser NG recht
herzlich Danken, ohne eure Geduld
wäre so manches Problem wohl nicht zu lösen.
Gruss und schönes Wochenende
Bitte gern !
es freut uns wenn wir dir weiterhelfen konnten

mfg Herbert

Reiner Wolff
2004-11-16 22:42:18 UTC
Permalink
Moin Rudolf,
Post by Rudolf Hänni
Die Ziel Datei wird immer gefunden, sie wird nicht verschoben oder
umbenannt, wohl aber die Quell-Datei.
Sie wird jede Woche unter neuem Namen gespeichert, also Dubliziert.
Ich muss nun jedes mal den Code anpassen, damit die Quell Datei gefunden
wird, aus Workbooks("WochenplanEntw12.xls")
wird dann Workbooks("WochenplanEntw13.xls").
Ich suche nach einer möglichkeit, anstelle von
"Workbooks("WochenplanEntw12.xls" eine Dynamische Adresse angeben zu können.
In zelle B3 der Quell Tabelle steht immer ein Datum(Wochenbeginn) nun möchte
ich die Datei unter dem Datum speichern.
Anschliessend sollte der Code in dem Koppieren Makro geändert werden, die
Adresse sollte Also Dynamisch sein. Der Code sollte immer dann geändert
werden,
wenn die Datei neu gespeichert wird. Ist sowas möglich?
Ja, möglich ist das schon. Dazu wirfst Du am besten ein Blick in die
OnlineHilfe zum Stichwort 'CodeModul', 'VBE', etc.

Allerdings würde ich den VBA-Code nicht jedesmal ändern, sondern ihn lieber
vorher so flexibel schreiben, dass er damit um kann.
Wenn Du anscheinend ja zwischendurch weißt, wie die Daten heißen wird,
kannst du diese Info auch einfach in einer Zelle abspeichern und diese
Information dann beim Ausführen des Makros aus der Zelle auslesen:
Workbooks.Open Cells.Value

Oder Du durchsuchst das Verzeichnis mit der Dir-Funktion (siehe OH).
Oder Du bastelst den Dateinamen einfach zur Laufzeit zusammen.

Welche Richtung möchtest Du weiter verfolgen?

Greetinx aus Kiel
Reiner
--
Ein Computer wird das tun,
was Du programmiert hast - nicht das, was Du willst.
(Murphy)
Rudolf Hänni
2004-11-18 10:23:19 UTC
Permalink
Hallo Reiner
Vielen Dank für deine Tipps,
Post by Reiner Wolff
Moin Rudolf,
Post by Rudolf Hänni
Die Ziel Datei wird immer gefunden, sie wird nicht verschoben oder
umbenannt, wohl aber die Quell-Datei.
Sie wird jede Woche unter neuem Namen gespeichert, also Dubliziert.
Ich muss nun jedes mal den Code anpassen, damit die Quell Datei gefunden
wird, aus Workbooks("WochenplanEntw12.xls")
wird dann Workbooks("WochenplanEntw13.xls").
Ich suche nach einer möglichkeit, anstelle von
"Workbooks("WochenplanEntw12.xls" eine Dynamische Adresse angeben zu können.
In zelle B3 der Quell Tabelle steht immer ein Datum(Wochenbeginn) nun möchte
ich die Datei unter dem Datum speichern.
Anschliessend sollte der Code in dem Koppieren Makro geändert werden, die
Adresse sollte Also Dynamisch sein. Der Code sollte immer dann geändert
werden,
wenn die Datei neu gespeichert wird. Ist sowas möglich?
Ja, möglich ist das schon. Dazu wirfst Du am besten ein Blick in die
OnlineHilfe zum Stichwort 'CodeModul', 'VBE', etc.
Allerdings würde ich den VBA-Code nicht jedesmal ändern, sondern ihn lieber
vorher so flexibel schreiben, dass er damit um kann.
Genau dass würde ich gerne machen, dafür reichen aber meine Kenntnisse in
VBA nicht..
Post by Reiner Wolff
Wenn Du anscheinend ja zwischendurch weißt, wie die Daten heißen wird,
kannst du diese Info auch einfach in einer Zelle abspeichern und diese
Die Datei wird immer nach dem ersten Datum der Arbeitswoche gespeichert.
Diese Datum Steht immer in der selben Zelle. Da dort ein Paar Zellen
verbunden sind, habe ich den Bereich mit "Datum" benannt.
Post by Reiner Wolff
Workbooks.Open Cells.Value
Oder Du durchsuchst das Verzeichnis mit der Dir-Funktion (siehe OH).
Oder Du bastelst den Dateinamen einfach zur Laufzeit zusammen.
Wie macht man dass?
Post by Reiner Wolff
Welche Richtung möchtest Du weiter verfolgen?
Greetinx aus Kiel
Reiner
--
Gruss
Rudolf
Reiner Wolff
2004-11-18 10:31:44 UTC
Permalink
Moin Rudolf,
Post by Rudolf Hänni
Post by Reiner Wolff
Allerdings würde ich den VBA-Code nicht jedesmal ändern, sondern ihn lieber
vorher so flexibel schreiben, dass er damit um kann.
Genau dass würde ich gerne machen, dafür reichen aber meine Kenntnisse in
VBA nicht..
Naja, Melanie hat Dir dazu ja bereits die richtige Vorlage geliefert.
Da ich nicht genau weiß, ob nur der Dateiname flexibel sein soll (oder der
ganze Pfad), wie die Datei letztendlich heißen soll, ist das etwas
schwierig. Aber Du könntest zB aus Deinem Code und Melanies Antwort
folgendes basteln:

Workbooks.Open "C:\Dokumente und Einstellungen\Rudolf " & _
"Hänni\Desktop\Spar\archiv" & _
Worksheets("Tabelle1").Range("B3").Text & ".xls"

Vielleicht hilft Dir das ja auch schon.
Post by Rudolf Hänni
Post by Reiner Wolff
Oder Du durchsuchst das Verzeichnis mit der Dir-Funktion (siehe OH).
Oder Du bastelst den Dateinamen einfach zur Laufzeit zusammen.
Wie macht man dass?
In der OnlineHilfe stehen auch Beispiele...
Schonmal hineingeschaut?

Greetinx aus Kiel
Reiner
--
Smash forehead on keyboard to continue . . .
Rudolf Hänni
2004-11-18 13:11:01 UTC
Permalink
Hallo Reiner,
Danke, Ich werde dass ausprobieren.
Der Pfad braucht nicht unbedingt Flexiebel zu sein, nur der Dateiname.
Ich habe schon öfter in der OH nachgeschaut, nur ist es eben schwierig, wenn
man nicht genau weiss,
wonach (welcher Begriff) man suchen soll.
Gruss Rudolf
Post by Reiner Wolff
Moin Rudolf,
Post by Rudolf Hänni
Post by Reiner Wolff
Allerdings würde ich den VBA-Code nicht jedesmal ändern, sondern ihn lieber
vorher so flexibel schreiben, dass er damit um kann.
Genau dass würde ich gerne machen, dafür reichen aber meine Kenntnisse in
VBA nicht..
Naja, Melanie hat Dir dazu ja bereits die richtige Vorlage geliefert.
Da ich nicht genau weiß, ob nur der Dateiname flexibel sein soll (oder der
ganze Pfad), wie die Datei letztendlich heißen soll, ist das etwas
schwierig. Aber Du könntest zB aus Deinem Code und Melanies Antwort
Workbooks.Open "C:\Dokumente und Einstellungen\Rudolf " & _
"Hänni\Desktop\Spar\archiv" & _
Worksheets("Tabelle1").Range("B3").Text & ".xls"
Vielleicht hilft Dir das ja auch schon.
Post by Rudolf Hänni
Post by Reiner Wolff
Oder Du durchsuchst das Verzeichnis mit der Dir-Funktion (siehe OH).
Oder Du bastelst den Dateinamen einfach zur Laufzeit zusammen.
Wie macht man dass?
In der OnlineHilfe stehen auch Beispiele...
Schonmal hineingeschaut?
Greetinx aus Kiel
Reiner
--
Smash forehead on keyboard to continue . . .
Rudolf Hänni
2004-11-18 14:02:04 UTC
Permalink
Hallo Reiner,
Ich glaube, ich habe das ganze falsch beschrieben.
Es geht nicht um die Ziel Datei, sondern um die Quell-Datei, von wo aus das
Makro gestartet wird.
Ich beschreibe noch mal was ich machen will:
Ich habe eine Arbeitsmappe mit dm Namen "Wochenplan" dort erstelle ich einen
Wochen - Arbeitsplan für neun Mitarbeiterinnen.
Die Mappe wird dann unter dem Datum des ersten Arbeits-Tages Gespeichert.
also z.B. 01.11.2004.xls
Anschliessend Plane ich die nächste Woche. diese Speichere ich dann unter
dem Namen 08.11.04.xls.
Da in jeder Mappe nur die Arbeitstunden einer Woche enthalten sind, koppiere
ich mit untenstehendem Makro die Wichtigen Daten der Mappe in eine Andere
Arbeitsmappe mit dem Namen Archiv.xls um dann die Stunden auszuwerten.
Wenn ich nun das Makro in einer Neu gespeicherten Mappe starte, findet es
den Weg nicht mehr zurück,
Ich bekomme die Fehlermeldung
Laufzeitfehler 9 Index auserhal des Gültigen bereichs
Diese stelle ist dann im Code Gelb hiterlegt

Workbooks("Wochenplan01.11.04.xls") _
.Worksheets("Woche").Range("A3:G56").Copy
Ich kann nun händisch den Namen in 08.11.04.xls ändern aber genau dass
wollte ich
irgendwie automatisieren.
Hier mein ganzer Code:

Sub Kopieren_archiv()
Dim i As Long, Lz As Long
Dim mon As Variant
mon = Array("Monat", "Jahr")
i = MsgBox("Wollen Sie wirklich" & Chr(13) & _
"nach Archiv koppieren?", vbYesNo, "Tabelle Kopieren")
If i = vbNo Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open "C:\Dokumente und Einstellungen\Rudolf
Hänni\Desktop\Spar\archiv.xls" '<-- Pfad anpassen
Workbooks("Wochenplan01.01.04.xls") _
.Worksheets("Woche").Range("A3:G56").Copy

With Workbooks("archiv.xls")
For i = LBound(mon) To UBound(mon)
Lz = .Worksheets(mon(i)). _
Cells(Rows.Count, "A").End(xlUp).Row + 1
.Worksheets(mon(i)).Range("A" & Lz). _
PasteSpecial Paste:=xlValues
Next i
Application.CutCopyMode = False
.Save
.Close
End With
Application.ScreenUpdating = True
End Sub
Reiner Wolff
2004-11-20 11:03:51 UTC
Permalink
Moin Rudolf,

[ausführliche Beschreibung gesnippt]
Post by Rudolf Hänni
Workbooks("Wochenplan01.11.04.xls") _
.Worksheets("Woche").Range("A3:G56").Copy
Ich kann nun händisch den Namen in 08.11.04.xls ändern aber genau dass
wollte ich irgendwie automatisieren.
Ich bin erst heute dazu gekommen, mir das anzusehen.
Imho hat Herbert inzwischen eine funktionierende Lösung gepostet. Ich war
lediglich auf den im Code enthaltenen Hinweis '<-- Pfad anpassen'
hereingefallen.

Solltest Du noch Probleme mit dem Code haben, brauchst Du nur auf Herbert
zu antworten. Ich lese auch den Teilthread mit und werde mich dann ggf.
auch dort zu Wort melden.

Greetinx aus Kiel
Reiner
--
"Künstliche Intelligenz ist das Perpetuum Mobile der Informatik"
Loading...