Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Druckbereich+Inhalt in vorh. Datei kopieren

VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 09:32:36
Christian
Hallo liebe VBA-Gemeinde,
ich habe ein kleines VBA-Problem, bei dem ihr mir sicher helfen könnt.
Ich habe 2 vorhandene Dateien (Datei 1, mit Makros; Datei 2, ohne Makros) die sich im selben Ordner befinden.
Datei 1 enthält ein Arbeitsblatt in dem ein festes Formular hinterlegt ist, in welches die Mitarbeiter Daten eingeben und das Formular per Markro ausdrucken können. Das Formular ist dabei als Druckbereich festgelegt damit das ausgefüllte Formular ohne großen Aufwand auf einer DIN A4-Seite ausgedruckt werden kann. Datei 1 enthält außerdem Schaltflächen mit Makros, um alle Daten aus dem Formular zu löschen und die Datei automatisch zu drucken und zu speichern. Soweit so gut.
Jetzt möchte ich die Eingaben des Formulars, die bei einer der Eingabe von neuen Daten durch den nächsten MA wieder gelöscht werden, in einer vorhandenen Datei (Datei 2) als Tabellenblatt archivieren.
Optimalerweise sieht meine bzw. eure Lösung am Ende folgendermaßen aus:
1. Auswahl des eingestellten Druckbereichs aus Datei 1 als Quelle
2. Öffnen der Archivdatei (Datei 2)
3. Anlegen eines neuen Tabellenblattes in der Datei 2 mit dem Namen einer (verbundenen) Zelle aus der Datei 1
4. 1:1-Übertragung des Druckbereichs in dieses Arbeitsblatt der Datei 2 (am besten ohne die Makros aus Datei 1 - Zahlenformatierungen usw. des Formulars sollen erhalten bleiben)
5. Speichern & Schließen der Datei 2
Probiere jetzt schon seit 2 Tagen mit Hilfe von Foreneinträgen herum, hab aber keine Lösung für das Problem gefunden. Vielleicht habt ihr ein paar Tipps oder Vorschläge für mich?
Vielen Dank.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 09:40:35
Rudi
Hallo,
Optimalerweise sieht meine bzw. eure Lösung am Ende folgendermaßen aus:
Was ist daran optimal?
Ich würde lediglich die veränderbaren Inhalte des Formulars speichern.
Gruß
Rudi

AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 10:30:54
Christian
Hallo Rudi,
das Problem ist, dass es vorkommen kann, das das Formular nachträglich geändert werden muss und dafür muss es archiviert werden. Eine Ablage in eine Tabelle, wie es bereits geschieht, ist deshalb nicht hilfreich.
Es würde folgendermaßen ablaufen:
- MA füllt Formular in Datei 1 aus und druckt es aus
- dann wird das Formular in gedruckter Form innerhalb des UN weitergereicht
- nun kann es sein, dass am Formular (welches deshalb ins Archiv muss) eine oder mehrere Einträge geändert werden müssen und das Formular nochmals ausgedruckt werden muss (aus diesem Grund soll auch das Formular an sich im Archiv erhalten bleiben
Danke für eure Hilfe.
Gruß
Chris

Anzeige
AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 10:48:31
Rudi
Hallo,
als Ansatz
Sub archivieren()
Dim wkbArchiv As Workbook, wksArchiv As Worksheet
Dim wkb As Workbook, wksForm As Worksheet
Const strArchiv As String = "Archiv.xls"
Set wksForm = ActiveSheet
For Each wkb In Workbooks
'Archiv bereits geöffnet?
If wkb.Name = strArchiv Then
Set wkbArchiv = wkb
End If
Next
If wkbArchiv Is Nothing Then
' Archiv ggfs. öffnen
Set wkbArchiv = Workbooks.Open(ThisWorkbook.Path & "\" & strArchiv)
End If
'Blatt bereits vorhanden?
On Error Resume Next
Set wksArchiv = wkbArchiv.Sheets(wksForm.Range("A1"))
On Error GoTo 0
If wksArchiv Is Nothing Then
'nicht vorhanden
wkbArchiv.Worksheets.Add
Set wksArchiv = ActiveSheet
wksArchiv.Name = wksForm.Range("A1")  'anpassen
End If
With wksForm
.Range(.PageSetup.PrintArea).Copy
End With
With wksArchiv.Cells
.PasteSpecial xlPasteValuesAndNumberFormats
.PasteSpecial xlPasteColumnWidths
.PasteSpecial xlPasteFormats
End With
wkbArchiv.Close True
End Sub

Gruß
Rudi

Anzeige
AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 10:53:55
Christian
Hallo nochmal,
ich habe jetzt nochmal mit meinem Chef gesprochen und das ganze verhält sich jetzt wie folgt:
Es muss nur ein bestimmter Zellbereich (B7:M53) aus der Datei 1 in eine neue Datei kopiert werden.
Dabei sollten alle Formatierungen, Formeln usw. erhalten bleiben.
Dieser Zellbereich ist in der Originaldatei gleichzeitig der Druckbereich, es wäre optimal, wenn dieser auch in die neue Datei übertragen werden würde.
Der Dateiname sollte nach einer bestimmten Zelle (diese ist immer die gleiche) aus dem aktiven Arbeitsblatt benannt werden und in einem Unterordner (...\Archiv) abgelegt werden.
Jemand eine Lösung?
Danke und Gruß

Anzeige
AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 11:03:21
Christian
Und danke Rudi für deinen Vorschlag, habe ich gerade erst gesehen. :)

AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 11:37:52
Rudi
Hallo,
sowas?
Sub archivieren()
Dim wkbArchiv As Workbook, wksArchiv As Worksheet
Dim wksForm As Worksheet
Set wksForm = ActiveSheet
Set wkbArchiv = Workbooks.Add(1)
Set wksArchiv = wkbArchiv.Sheets(1)
wksArchiv.Name = wksForm.Range("A1")
With wksForm
.Range(.PageSetup.PrintArea).Copy wksArchiv.Range(.PageSetup.PrintArea)
.Range(.PageSetup.PrintArea).EntireRow.Copy
wksArchiv.Range(.PageSetup.PrintArea).PasteSpecial xlPasteFormats
wksArchiv.PageSetup.PrintArea = .PageSetup.PrintArea
End With
With wkbArchiv
.SaveAs wksForm.Parent.Path & "\" & wksForm.Range("A1")
.Close
End With
End Sub

Gruß
Rudi

Anzeige
AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 11:59:13
Christian
Hallo Rudi,
vielen Dank für den Code. Es funktioniert ziemlich gut.
Es gibt jedoch noch 2 Probleme:
Er übernimmt den Druckbereich in der neuen Datei, aber: die Formatierungen werden nicht richtig übernommen (Zeilen- und Spaltenbreite, Formatierungen einzelner Zellen [z.B. wird das Datum in der Archivdatei als Zahl ausgegeben]; letztendlich soll der Bereich der kopiert wird in der Zieldatei genauso aussehen und formatiert sein wie das Original
Er legt mir die Datei jetzt in den gleichen Ordner. Wie muss ich die SaveAs-Zeile abändern, dass er die Datei in einem Unterordner (z.B. Archiv) ablegt wird? Der Unterordner befindet sich im gleichen Ordner wie die Datei 1.
Vielen Dank schon mal.
Gruß
Chris

Anzeige
AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 12:56:06
Rudi
Hallo,
Sub archivieren()
Dim wkbArchiv As Workbook, wksArchiv As Worksheet
Dim wksForm As Worksheet
Set wksForm = ActiveSheet
Set wkbArchiv = Workbooks.Add(1)
Set wksArchiv = wkbArchiv.Sheets(1)
wksArchiv.Name = wksForm.Range("A1")
With wksForm
.Range(.PageSetup.PrintArea).Copy
With wksArchiv.Range(.PageSetup.PrintArea)
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteColumnWidths
.PasteSpecial xlPasteAll
End With
.Range(.PageSetup.PrintArea).EntireRow.Copy
wksArchiv.Range(.PageSetup.PrintArea).PasteSpecial xlPasteFormats
wksArchiv.PageSetup.PrintArea = .PageSetup.PrintArea
End With
With wkbArchiv
.SaveAs wksForm.Parent.Path & "\archiv\" & wksForm.Range("A1")
.Close
End With
End Sub

Gruß
Rudi

Anzeige
AW: VBA - Druckbereich+Inhalt in vorh. Datei kopieren
18.06.2013 14:46:22
Christian
Hey Rudi,
danke nochmals für deine Antwort. Ich habe das Makro entsprechend angepasst. Das Ganze mit dem Dateinamen klappt auch wunderbar. Nur will das mit dem Format nicht so ganz klappen: das Formular sieht einfach anders aus. Leider habe ich es auch nach längerem probieren nicht hin bekommen.
Ich hab jetzt deshalb nochmal mit meinem Chef gesprochen, er meinte folgende Lösung wäre auch ok:
1. Aktives Tabellenblatt einfach komplett als eigenes Workbook in den Archivordner speichern
2. Die ActiveX-Schaltflächen aus dem Original-ActiveWorksheet können zwar mit übertragen werden (logisch, wenn das ganze Blatt kopiert wird), aber die Makros sollten nach Möglichkeit nicht mitkopiert werden.
2. Dateiname soll wieder aus einer Zelle im ActiveWorksheet ausgelesen werden
3. Die Archivdatei soll gespeichert und geschlossen werden
Sorry das ich jetzt wieder mit was anderem komme und danke nochmal für deine Hilfe!
Gruß
Chris
2.

Anzeige
Worksheet als Datei
18.06.2013 14:52:56
Rudi
Hallo,
im Archiv gibt's massenhaft Beispiele.
Gruß
Rudi

350 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige