Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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

Datei kopieren

Datei kopieren
Horst
Hallo Excel-Jünger,
wie kann man per Makro eine bestehende .xls kopieren, umbennen und in einem Speicherordner ablegen? Bei der zu kopierende .xls ist derzeit die Bezeichnung und der Tabellennamen ident. Bei der Kopie soll die Bezeichnung und der Tabellenname jedoch unterschiedlich sein!
Beispiel:
A.xls mit Tabellenblatt A.xls
A.xls soll kopiert werden, neuer Name der Kopie: B.xls, das darin befindliche Tabellenblatt soll aber nicht B.xls, sondern "Tabelle 1" heißen.
Wie gehe ich am besten vor?
Gruß, Horst

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

Betreff
Benutzer
Anzeige
noch Fragen,...
29.05.2011 16:09:08
Tino
Hallo,
wird die Datei verwendet die kopiert werden soll?
Wo läuft das Makro das diese Aktion ausführen soll?
Für offene Dateien würde ich die
Workbook.SaveCopyAs-Methode
verwenden.
Für geschlossene die
FileCopy-Anweisung
In beiden Fällen danach die Datei öffnen und das entsprechende Tabellenblatt umbenennen.
Datei speichern und schließen.
Gruß Tino
AW: noch Fragen,...
29.05.2011 16:24:48
Horst
Hallo Tino,
die Datei, die kopiert werden soll wird von einem externen Programm (kein Excel) generiert und jede Minute neu geschrieben. Von anderen Usern wird die Datei nicht verwendet bzw. geöffnet, d.h. man hat max. 60 Sekunden für den Kopiervorgang Zeit, was sich aber ausgehen sollte.
Das Makro soll in einer externen .xls laufen, also NICHT in der Datei, die kopiert werden soll.
Könntest du ein kurzes Makro reinstellen, dass die folgenden Schritte automatisiert ausführt:
Externe Datei kopieren und umbenennen
Datei öffnen, Tabellenblatt umbenennen
Datei speichern und schließen
Wäre super! Besten Dank vorab.
Horst
Anzeige
AW: noch Fragen,...
29.05.2011 18:02:19
Tino
Hallo,
ein Code dazu könnte so aussehen, Pfadangaben noch anpassen und den Tabellennamen.
Sub Test()
Dim strQuelle$, strZiel$, strNewTabname$
Dim WB_Ex As Workbook
Dim oApp As New Excel.Application

strQuelle = "C:\Ordner\A.xls" 'Quelldatei 
strZiel = "C:\Ordner\B.xls" 'Zieldatei 
strNewTabname = "B" 'Tabellenname in Ziel 

FileCopy strQuelle, strZiel

With oApp
    .EnableEvents = False
    .DisplayAlerts = False
        On Error Resume Next
        Set WB_Ex = .Workbooks.Open(strQuelle)
        If Not WB_Ex Is Nothing Then
            If Not WB_Ex.ReadOnly Then
                '1. Tabelle bekommt diesen Namen, evtl. anpassen 
                WB_Ex.Sheets(1).Name = strNewTabname
                WB_Ex.Close True
            End If
        End If
    .EnableEvents = True
    .DisplayAlerts = True
    .Quit
End With
End Sub
Gruß Tino
Anzeige
AW: noch Fragen,...
29.05.2011 19:52:58
Horst
Hallo Tino,
danke für den Code, hab ihn gerade getestet. Die Arbeitsmappe wird kopiert, allerdings steht in der Kopie wieder der gleiche Tabellenname, d.h. im gegebenen Fall heißt die kopierte Mappe "treffer.xls", Arbeitsblatt heißt ebenfalls "treffer", es sollte aber "B" heißen. Was mache ich falsch? Pfadangaben habe ich angepasst. Kann das etwas mit den Einstellungen in der Arbeitsmappe zu tun haben?
Sub Test()
Dim strQuelle$, strZiel$, strNewTabname$
Dim WB_Ex As Workbook
Dim oApp As New Excel.Application
strQuelle = "C:\Dokumente und Einstellungen\User\Desktop\Test_Order\Test_Order\hit.xls" ' _
Quelldatei
strZiel = "C:\Dokumente und Einstellungen\User\Desktop\Test_Order\Test_Order\treffer.xls" ' _
Zieldatei
strNewTabname = "B" 'Tabellenname in Ziel
FileCopy strQuelle, strZiel
With oApp
.EnableEvents = False
.DisplayAlerts = False
On Error Resume Next
Set WB_Ex = .Workbooks.Open(strQuelle)
If Not WB_Ex Is Nothing Then
If Not WB_Ex.ReadOnly Then
'1. Tabelle bekommt diesen Namen, evtl. anpassen
WB_Ex.Sheets(1).Name = strNewTabname
WB_Ex.Close True
End If
End If
.EnableEvents = True
.DisplayAlerts = True
.Quit
End With
End Sub

Anzeige
AW: noch Fragen,...
29.05.2011 20:14:35
Horst
Tino!
... was ich gerade Kurioses bemerkt habe: Startet man das Makro 2x hintereinander, ändert sich der Tabellennamen, d.h. dann funktioniert es (beim zweiten Durchlauf), sonst nicht. Wie müsste man den Code verändern, damit er einfach zweimal hintereinander startet (evtl. ein Do ... Loop einbauen?)
Gruß, Horst
AW: noch Fragen,...
29.05.2011 21:31:20
Tino
Hallo,
tausche bei
Set WB_Ex = .Workbooks.Open(strQuelle)
strQuelle durch strZiel aus.
Gruß Tino
AW: noch Fragen,...
29.05.2011 21:42:47
Horst
Hallo Tino,
sorry, aber das bringt leider auch nichts. Im nachfolgenden Makro heißt die kopierte Datei "test.xls" und das Tabellenblatt immer wieder "test" statt "B". Keine Ahnung was es da auf sich hat.
Sub Test()
Dim strQuelle$, strZiel$, strNewTabname$
Dim WB_Ex As Workbook
Dim oApp As New Excel.Application
strQuelle = "C:\Dokumente und Einstellungen\User\Desktop\Test_Order\Test_Order\treffer.xls" ' _
Quelldatei
strZiel = "C:\Dokumente und Einstellungen\User\Desktop\Test_Order\Test_Order\test.xls" ' _
Zieldatei
strNewTabname = "B" 'Tabellenname in Ziel
FileCopy strQuelle, strZiel
With oApp
.EnableEvents = False
.DisplayAlerts = False
On Error Resume Next
Set WB_Ex = .Workbooks.Open(strZiel)
If Not WB_Ex Is Nothing Then
If Not WB_Ex.ReadOnly Then
'1. Tabelle bekommt diesen Namen, evtl. anpassen
WB_Ex.Sheets(1).Name = strNewTabname
WB_Ex.Close True
End If
End If
.EnableEvents = True
.DisplayAlerts = True
.Quit
End With
End Sub

Gruß, Horst
Anzeige
AW: hier meine Testdateien
29.05.2011 22:20:04
Horst
Hallo Tino,
ich bin drauf gekommen, dass es mit der vom externen Programm generierten Datei zusammenhängt, die irgendwie anders aufgebaut sein dürfte als eine "manuell" erstellte .xls. Mit den downloadbaren Beispiel-Dateien gibt es keinerlei Probleme. Ich habe dir anbei mal diese ominöse "treffer.xls" upgeloadet, kannst mal ausprobieren:
https://www.herber.de/bbs/user/75072.zip
Ziel ist es, dass der Name der Datei und der Tabellennamen NICHT ident sind. Eventuell muss man die Datei auch per Makro nochmal extra unter .xls-Format abspeichern, bevor das Umbenennen des Tabellennamens funktioniert?
Option Explicit
Sub Test()
Dim strQuelle$, strZiel$, strNewTabname$
Dim WB_Ex As Workbook
Dim oApp As New Excel.Application
Dim sPath$
sPath = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
strQuelle = sPath & "treffer.xls"   'Quelldatei
strZiel = sPath & "B.xls" 'Zieldatei
strNewTabname = "C" 'Tabellenname in Ziel
FileCopy strQuelle, strZiel
With oApp
.EnableEvents = False
.DisplayAlerts = False
On Error Resume Next
Set WB_Ex = .Workbooks.Open(strZiel)
If Not WB_Ex Is Nothing Then
If Not WB_Ex.ReadOnly Then
'1. Tabelle bekommt diesen Namen
WB_Ex.Sheets(1).Name = strNewTabname
WB_Ex.Close True
End If
End If
.EnableEvents = True
.DisplayAlerts = True
.Quit
End With
End Sub

Besten Dank für die Hilfe,
Horst
Anzeige
AW: hier meine Testdateien
29.05.2011 22:57:14
Tino
Hallo,
scheint eine nicht richtig konvertierte Datei aus einer höheren Version größer 11.0 zu sein.
Versuchen wir es so
https://www.herber.de/bbs/user/75074.zip
Gruß Tino
AW: hier meine Testdateien
29.05.2011 23:24:35
Horst
Tino!
mit vereinten Kräften haben wir's geschafft! ;-))
Es funktioniert, lag tatsächlich an der Datei.
Du bist der Größte!
Beste Grüße, Horst

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige