Anzeige
Archiv - Navigation
652to656
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
652to656
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellenblätter aus Dateien kopieren

Tabellenblätter aus Dateien kopieren
15.08.2005 15:55:10
Daniel
Hallo,
ich möchte gerne in einer Datei bestimmte Tabellenblätter aus anderen Dateien zusammenführen.
Wie kann ich z.B. aus der Datei Schmidt.xls das komplette Tabellenblatt in die Datei Master.xls kopieren.
Dies möchte ich zusätzlich gerne per Makro jede Minute machen.
Wie geht sowas?
Vielen dank im Voraus für die nette Hilfe,
Daniel

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter aus Dateien kopieren
15.08.2005 17:02:56
Matthias
Hallo Daniel,
wie, du willst jede Minute ein Blatt aus der Datei Schmidt.xls in die Datei Master.xls kopieren?
Was soll dann mit dem alten Blatt passieren?
Gruß Matthias
AW: Tabellenblätter aus Dateien kopieren
15.08.2005 17:08:06
Daniel
Ja, ich will jede Minute z.B. das Blatt "Auswertung" aus der Datei Schmidt.xls nach Master.xls ins Blatt Schmidt kopieren.
Das Ganze soll in regelmäßigem Zeitabstand erfolgen, z.B. alle 60 Sekunden.
Bei den Zeitabtsänden geht es mir aber nur um eine Verdeutlichung.
Grüße,
Daniel
AW: Tabellenblätter aus Dateien kopieren
15.08.2005 17:25:08
Matthias
Hallo Daniel,
und das alte Blatt soll dabei gelöscht werden?
Ist denn die Datei Master.xls immer offen, oder soll sie bei Bedarf geöffnet werden?
Gruß Matthias
Anzeige
AW: Tabellenblätter aus Dateien kopieren
15.08.2005 17:28:47
Daniel
Nein, das alte Blatt soll nicht gelöscht werden.
Die Master Datei ist nicht ständig geöffnet.
Danke für die Hilfe!
AW: Tabellenblätter aus Dateien kopieren
15.08.2005 17:32:29
Matthias
Hallo Daniel,
und wie sollen die kopierten Blätter dann benannt werden?
Oder missverstehe ich dich, und du willst nur den Inhalt des bestehenden Blattes aktualisieren? Wenn ja, nach welchen Krieterien?
Gruß Matthias
AW: Tabellenblätter aus Dateien kopieren
15.08.2005 17:38:11
Daniel
Ohhh...Sorry, da habe ich mich dumm ausgedrückt.
Ich möchte den Inhalt (Werte) des Blattes kopieren, in ein bestehendes Blatt (Schmidt).
Und dabei das Blatt komplett überschreiben.
Grüße,
Daniel
AW: Tabellenblätter aus Dateien kopieren
15.08.2005 17:49:54
Matthias
Hallo Daniel,
da ist es aber fast einfacher, mann löscht das alte Blatt und kopiert das neue ;-)
Was kanst du davon denn selbst programmieren("kaum Excel/VBA-Kenntnisse")?
Gruß Matthias
Anzeige
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 07:55:26
Daniel
wie angegeben, habe ich kaum Kenntnisse. Ich bringe es gerade fertig ein Makro mit Kommentaren einigermaßen zu verstehen. Selbst programmieren ist im Moment nicht drin.
Nein, das alte Blatt MUSS unbedingt erhalten bleiben. Also das Blatt Auswertung in Schmidt.xls. Es sollen nur die Werte, die in diesem Blatt sind, in die "Master-Datei" kopiert werden. Es soll nichts gelöscht werden.
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 09:59:36
Matthias
Guten Morgen Daniel,
so, hier mal ein erster Entwurf, muss alles in die Mappe "Schmidt.xls"
UserForm1 (zur Anzeige einer Meldung während des Kopierens)
Erstelle eine Userform, nur mit einem Label namens "Label1", sonst keine Steuerelemente.
Ins Userform-Modul dieser Code:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub

(Das sorgt dafür, dass die UF nicht übers Schließkreuz geffnet werden kann.)
---------------------------------------------------------------------------------
DieseArbeitsmappe:
ins Modul von DieseArbeitsmappe:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopTimer
End Sub
Private Sub Workbook_Open()
StartTimer
End Sub

Beim Öffnen der Mappe wird der Timer gestartet, der gleich beim Öffnen sowie dann alle 60 Minuten eine Prozedur startet.
Beim Schlißen der MAppe wird der Timer gestoppt.
---------------------------------------------------------------------------------
in ein normales Modul:>

Option Explicit
Public NextTime As Date
Sub StartTimer()
NextTime = Now + TimeValue("01:00:00") 'alle 60 Minuten
Kopieren
Application.OnTime NextTime, "StartTimer"
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime earliesttime:=NextTime, Procedure:="StartTimer", Schedule:=False
On Error GoTo 0
Application.StatusBar = False
End Sub
Function WBIsOpen(ByVal n As String) As Boolean
Dim wb As Workbook
For Each wb In Workbooks
If UCase(wb.Name) = UCase(n) Then
WBIsOpen = True
Exit Function
End If
Next wb
WBIsOpen = False
End Function
Sub Kopieren()
Const QBlatt_Name = "Auswertung" 'Quellblatt
Const ZMappe_Name = "Master.xls" 'Zielmappe
Const ZBlatt_Name = "Schmidt"    'Zielblatt
Dim WB_Z As Workbook
Dim WS_Z As Worksheet
Dim WS_Q As Worksheet
Dim Zieloffen As Boolean
With UserForm1
.Label1 = "Mappe """ & ZMappe_Name & """ wird aktualisiert..."
.Show False 'nichtmodal anzeigen, d.h. es wird nicht aufs Schließen der UF gewartet
End With
DoEvents    'damit UF vollständig angezeigt wird
Application.ScreenUpdating = False
If Not WBIsOpen(ZMappe_Name) Then
Workbooks.Open ThisWorkbook.Path & "\" & ZMappe_Name
Zieloffen = False
Else
Zieloffen = True
End If
Set WS_Q = ThisWorkbook.Sheets(QBlatt_Name)
Set WB_Z = Workbooks(ZMappe_Name)
Set WS_Z = WB_Z.Sheets(ZBlatt_Name)
WS_Z.Cells.Delete 'Blattinhalt löschen
WS_Q.Cells.Copy
With WS_Z.Range("A1")
.PasteSpecial xlPasteValuesAndNumberFormats
.PasteSpecial xlPasteFormats
End With
Application.CutCopyMode = False
'Mappe Master speichern...
WB_Z.Save
'... und wieder schließen, wenn sie extra geöffnet wurde
If Not Zieloffen Then WB_Z.Close
Unload UserForm1
Application.ScreenUpdating = True
End Sub

Ich gehe hier davon aus, dass sich die Mappe "Master.xls" im gleichen Ordner befindet wied Schmidt.xls, wenn gewünscht, noch anpassen
(die Zeile Workbooks.Open ThisWorkbook.Path & "\" & ZMappe_Name)
So, jetzt schau erstmal, wie das läuft...
Gruß Matthias
Anzeige
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:14:13
Daniel
Hallo!
Nur damit ich das richtig verstehe:
ALLES Codes müssen in die Datei Schmidt.xls, also die aus der heraus die Daten gezogen werden?
Gruß
Daniel
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:16:25
Matthias
Hallo Daniel,
ja, genau.
Gruß Matthias
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:30:06
Daniel
Das mit dem Label1 verstehe ich leider nicht.
Was muss ich da in der Userform machen?
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:34:25
Matthias
Hallo Daniel,
Wenn du die Userform erstellst, siehst du ein kleines Fenster "Werkzeugsammlung". Klick auf das große A ("Bezeichnungsfeld") und ziehe ein Rechteck auf die Userform, so groß, wie es sein soll. Das heißt dann normalerweise automatisch "Label1".
Das mit der Userform ist ja eigentlich nur Schnickschnack ;-)
Gruß Matthias
Anzeige
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:36:40
Daniel
Das mit dem Rüberziehen funktioniert nicht. Bringt bei mir einen Fehler.
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:41:13
Matthias
Hallo Daniel,
klick auf das große A, so dass es "eingedrückt" ist (also Taste wieder losklassen), dann in die Userform und ein Rechteck aufziehen.
Oder lass die Userform und alle Befehle mit "Userform1" im Modul erstmal weg. Wie gesagt, ist nur Schnickschnack und hat mit der Funktionalität des Makros nichts zu tun.
Gruß Matthias
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:45:38
Daniel
Wie gesagt: Da kommt ein Fehler.
Dann lass ich das erstmal weg.
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:50:55
Matthias
Hallo Daniel,
hier nochmal der Code von "Kopieren" ohne Userform (auskommentiert):

Sub Kopieren()
Const QBlatt_Name = "Auswertung" 'Quellblatt
Const ZMappe_Name = "Master.xls" 'Zielmappe
Const ZBlatt_Name = "Schmidt"    'Zielblatt
Dim WB_Z As Workbook
Dim WS_Z As Worksheet
Dim WS_Q As Worksheet
Dim Zieloffen As Boolean
'With UserForm1
'    .Label1 = "Mappe """ & ZMappe_Name & """ wird aktualisiert..."
'    .Show False 'nichtmodal anzeigen, d.h. es wird nicht aufs Schließen der UF gewartet
'End With
'DoEvents    'damit UF vollständig angezeigt wird
Application.ScreenUpdating = False
If Not WBIsOpen(ZMappe_Name) Then
Workbooks.Open ThisWorkbook.Path & "\" & ZMappe_Name
Zieloffen = False
Else
Zieloffen = True
End If
Set WS_Q = ThisWorkbook.Sheets(QBlatt_Name)
Set WB_Z = Workbooks(ZMappe_Name)
Set WS_Z = WB_Z.Sheets(ZBlatt_Name)
WS_Z.Cells.Delete 'Blattinhalt löschen
WS_Q.Cells.Copy
With WS_Z.Range("A1")
.PasteSpecial xlPasteValuesAndNumberFormats
.PasteSpecial xlPasteFormats
End With
Application.CutCopyMode = False
'Mappe Master speichern...
WB_Z.Save
'... und wieder schließen, wenn sie extra geöffnet wurde
If Not Zieloffen Then WB_Z.Close
'Unload UserForm1
Application.ScreenUpdating = True
End Sub

Gruß Matthias
Anzeige
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:53:59
Daniel
Das Posting hatte ich nicht gesehen.
Dafür wird jetzt die Zeile StartTimer gelb markiert!?!?
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 11:13:13
Daniel
Also wenn ich diese Datei umbenenne in Schmidt.xls und ich dann die Datei öffne-die Master Datei ist bereits geöffnet, so wird die Zeile
.PasteSpecial xlPasteValuesAndNumberFormats
markerit und es kommt ein Fehler, der aussagt "kann im Haltemodus nicht ausgeführt werden".
Was nun?
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 11:17:02
Matthias
Hallo Daniel,
Du hast das (alte?) Makro noch laufen, der Fehler wahrscheinlich noch gelb markiert.
Beende Excel mal, und nochmal von neu.
Viel Erfolg,
Matthias
Anzeige
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 11:24:38
Daniel
Hmmm, ich habe jetzt nochmal Excel neu gestartet.
Wenn ich Schmidt.xls öffne - deine umbeannte Datei- dann markerit er diese pastezeile und sagt: "Fehler beim Kompilieren: Variable nicht definiert".
Wenn ich dann Ok drücke kommt der nächste Fehler
"Code kann im Haltemodus nicht ausgeführt werden".
Vielen Dank, dass du soviel Zeit investiert. Ich hoffe dir bringt das auch irgendwas.
Daniel
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 11:31:37
Matthias
Hallo Daniel,
hmmm, ich glaube, dem Wert "xlPasteValuesAndNumberFormats" gibt es unter Excel 2000 noch nicht (ich hab hier XP).
Ersetze das mal den With-Block durch diese Zeilen:

With WS_Z.Range("A1")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
End With

Gruß Matthias
Anzeige
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 11:39:23
Daniel
Juhuuuu, es geht!
Eine Bitte hätte ich aber noch an dich: Kannst du mir in das Makro noch ein paar erkärende Kommentare einfügen, damit ich das alles besser verstehen kann.
Ich muss das Ganze ja noch auf meine "reale" Umgebung anpassen.
Noch eine Frage:
was passiert wenn die Master Datei nicht geöffnet ist?
Auf jeden Fall vielen Dank für die Hilfe!
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 11:51:47
Matthias
Hallo Daniel,
wenn die Master-Datei nicht geöffnet ist, wird sie geöffnet:

If Not WBIsOpen(ZMappe_Name) Then
Workbooks.Open ThisWorkbook.Path & "\" & ZMappe_Name
Zieloffen = False
Else
Zieloffen = True
End If

Mit der Variablen Zieloffen wird später abgefragt, ob die Datei wieder geschlossen werden soll.
_______________________________________________________
Hier nochmal mit ein paar Kommentaren mehr:

Public NextTime As Date
'führt Prozedur "Kopieren" aus und bibt Excel Startzeit für die nächste Ausführung an:
Sub StartTimer()
NextTime = Now + TimeValue("01:00:00") 'alle 60 Minuten
Kopieren
Application.OnTime NextTime, "StartTimer"
End Sub
'Löscht die OnTime-Anweisung wieder
Sub StopTimer()
On Error Resume Next
Application.OnTime earliesttime:=NextTime, Procedure:="StartTimer", Schedule:=False
On Error GoTo 0
Application.StatusBar = False
End Sub
'Funktion prüft, ob angegebene Mappe geöffnet ist. Rückgabewert: True oder False
Function WBIsOpen(ByVal n As String) As Boolean
Dim wb As Workbook
For Each wb In Workbooks
If UCase(wb.Name) = UCase(n) Then
WBIsOpen = True
Exit Function
End If
Next wb
WBIsOpen = False
End Function
'Kopierroutine
Sub Kopieren()
Const QBlatt_Name = "Auswertung" 'Quellblatt
Const ZMappe_Name = "Master.xls" 'Zielmappe
Const ZBlatt_Name = "Schmidt"    'Zielblatt
Dim WB_Z As Workbook
Dim WS_Z As Worksheet
Dim WS_Q As Worksheet
Dim Zieloffen As Boolean
'Meldung anzeigen
With UserForm1
.Label1 = "Mappe """ & ZMappe_Name & """ wird aktualisiert..."
.Show False 'nichtmodal anzeigen, d.h. es wird nicht aufs Schließen der UF gewartet
End With
DoEvents    'damit UF vollständig angezeigt wird
Application.ScreenUpdating = False 'Bildschirmaktualisierung abschalten
'Mappe Master.xls bei Bedarf öffnen
If Not WBIsOpen(ZMappe_Name) Then
Workbooks.Open ThisWorkbook.Path & "\" & ZMappe_Name
Zieloffen = False
Else
Zieloffen = True
End If
'Veriablen zuweisen
Set WS_Q = ThisWorkbook.Sheets(QBlatt_Name)
Set WB_Z = Workbooks(ZMappe_Name)
Set WS_Z = WB_Z.Sheets(ZBlatt_Name)
WS_Z.Cells.Delete 'Blattinhalt löschen
WS_Q.Cells.Copy 'Blattinhalt kopieren
'in Blatt Schmidt einfügen:
With WS_Z.Range("A1")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
End With
Application.CutCopyMode = False 'Kopiermarkiereung entfernen
'Mappe Master speichern...
WB_Z.Save
'... und wieder schließen, wenn sie extra geöffnet wurde
If Not Zieloffen Then WB_Z.Close
'UserForm schließen
Unload UserForm1
'Bildschirmaktualisierung wieder einschalten
Application.ScreenUpdating = True
End Sub

Gruß Matthias
Anzeige
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 11:56:05
Daniel
Vielen lieben Dank. Du hast mir sehr, sehr geholfen.
Eventuell muss ich mich die nächsten Tage aber nochmal dazu melden, da ich das Makro dann vielleicht noch erweitern muss.
Dann melde ich mich einfach nochmal über das Forum.
Grüße,
Daniel
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 11:58:20
Matthias
Hallo Daniel,
Danke für die Rückmeldung.
Wenn du noch fragen hast, mache dazu dann aber einen neuen Threqad auf.
Grüße,
Matthias
AW: Tabellenblätter aus Dateien kopieren
16.08.2005 10:50:55
Daniel
Jetzt kommt ein Fehler im Modul, wenn ich die datei das 1. Mal öffne.
Und zwar wird die Zeile With UserForm1 gelb markiert.
Gruß
Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige