VBA - Originale Datei schließen und Kopie öffnen

Hallo, ich habe ein kleines Problem in Excel/VBA.

Ich bin da noch ein ziemlicher Neuling und fuchse mich gerade erst in die ganze Geschichte rein.

Jetzt habe ich folgende Aufgabe bekommen, die sich für mich zur Zeit irgendwie nicht lösen lässt und hoffe, dass hier ein Experte sitzt, der mir das beantworten kann.

Folgendes ist Sache: Ich habe eine Kalkulation in meinem Ordner, die ich bearbeite. Dort sind hinter den ganzen Preisen natürlich Formeln hinterlegt (Rabatte, Aufschläge etc.). Jetzt will ich jemandem diese Datei schicken, jedoch ohne dass er meine Berechnungen sehen kann sondern die Ergebnisse als vollen Wert. Dazu soll Excel mir eine Kopie mit den Ergebnissen erstellen (damit ich diese Kopie in einen anderen Ordner speichern kann). So weit so gut, das funktioniert auch bereits.

Nun zu meinem Problem: Ich habe bereits einen Dialog, der beim Klicken auf das Makro das Druckfenster öffnet und bestimmte Einstellungen (anpassen auf eine Seite breit und hoch) direkt auswählt. Sobald ich mich entschließe, zu drucken (oder auch nicht), soll Excel diese Kopie öffnen UND das Original mit den Berechnungen speichern und schließen.
Da liegt jedoch mein Problem, weil es bei meinen Versuchen bislang nicht funktioniert hat, da sich entweder gar nichts tat oder die neue Datei geschlossen wurde…

Ich kopiere euch mal das gesamte Makro hier rein und hoffe, dass jemand das, was ich da markiert habe, erfolgreich bearbeiten kann. :smile:

Danke schon einmal im Voraus und falls es Fragen gibt, immer her damit. :wink:

Sub Tabellenblattkopieren()
Dim Spa As Long, Eing, AC As Long, Dateiname As String
On Error GoTo Ende
Dateiname = ActiveWorkbook.Name
AC = ActiveCell.Column
'Dateiname in Variable übergeben oder Pfad incl. Dateiname in Variable übergeben

ActiveWorkbook.Save
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Application.PrintCommunication = True
Application.Dialogs(xlDialogPageSetup).Show
Application.Dialogs(xlDialogPrint).Show

Application.ScreenUpdating = False
ActiveSheet.Copy
—> 'Ursprüngliche Datei schließen AC Then
Columns(Spa).Copy
Columns(Spa).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If
Next Spa
Application.CutCopyMode = False
Ende:
Application.ScreenUpdating = True
Range(„A1“).Select
If Err.Number 0 Then MsgBox „Es ist ein Fehler aufgetreten. Diese Datei muss leider per Hand bearbeitet werden!“

'Neue Datei Speichern unter Dialog öffnen mit Speicherpfad F:/Email Send und Vorschlag Dateiname der Ursprungsdatei

Hallo BK,

Dazu soll Excel mir eine Kopie mit den
Ergebnissen erstellen (damit ich diese Kopie in einen anderen
Ordner speichern kann). So weit so gut, das funktioniert auch
bereits.

mit dem gezeigten Code? Was spielt ActiveCell.Column für eine Rolle?
Printcommunication sagt mir nix in XL2000, ich schaue mal in XL2007
nach was das sein könnte. Deine Version, falls nötig?
Fehlt am Code außer End Sub noch was?

Nun zu meinem Problem: Ich habe bereits einen Dialog, der beim
Klicken auf das Makro das Druckfenster öffnet und bestimmte
Einstellungen (anpassen auf eine Seite breit und hoch) direkt
auswählt.

Das direkte Auswählen sehe ich nicht im Code.
Oftmals sehr hilfreich, kannst du eine Beispielmappe hochladen mit
file-upload, s. FAQ:2606

Gruß
Reinhard

Hi,

auf die Schnelle und ganz ungetestet: bei meinen wenigen VBA-Experimentierereien fand ich es immer ärgerlich, daß Excel einen Befehl hat: ActiveWorkbook.SaveCopyAs, während ein entsprechender Befehl für ActiveDocument in Word nicht existiert. Der Excel-Befehl speichert die Mappe unter neuem Namen, läßt aber das Original aktiv. Genau das wollte ich in Word auch haben.
In Word aber gibt’s nur .SaveAs - was es auch in Excel gibt - und das schließt das Original und aktiviert die Kopie. Willst Du dieses?

Gruß

Markus

VBA - SaveCopyAS in Word

auf die Schnelle und ganz ungetestet: bei meinen wenigen
VBA-Experimentierereien fand ich es immer ärgerlich, daß Excel
einen Befehl hat: ActiveWorkbook.SaveCopyAs, während ein
entsprechender Befehl für ActiveDocument in Word nicht
existiert. Der Excel-Befehl speichert die Mappe unter neuem
Namen, läßt aber das Original aktiv. Genau das wollte ich in
Word auch haben.

Hallo Markus,

ungetestet:

Sub SaveCopyAs(doc As Document, NeuerPfad As String)
 Dim fs As Object
 Dim f As Object
 doc.Save 'damit auch neue (nicht gespeicherte) Änderungen in der Kopie 
 ' sind
 Set fs = CreateObject("Scripting.FileSystemObject")
 Set f = fs.GetFile(doc.FullName)
 f.Copy NeuerPfad, True
End Sub

Quelle: http://www.vbarchiv.net/forum/id2_i124331t124308_sav…

Gruß
Reinhard