2016-08-22 6 views
0

ich diese Codezeile haben, dass ein Arbeitsblatt in eine neue Arbeitsmappe kopiert:VBA: Umbenennen eines kopierten Arbeitsblatt

OrderForm.Copy ' copy worksheet to new workbook 

Die neue Arbeitsmappe zeigt sich als Buch n .xlsx: enter image description here


Beim Speichern das ist, was oben zeigt: enter image description here

I Es ist in Ordnung, wenn es als Buch n auf der Titelleiste angezeigt wird und ich möchte es nicht automatisch speichern, aber was ich möchte, ist ein Standardname (auch standardmäßig .xlsx), wenn der Benutzer beschließt zu speichern es, wie folgt aus:

enter image description here

+1

Blick in 'Application.GetSaveAsFilename '. –

Antwort

1

Verwenden sie das Ereignis Before den Benutzer Einsparung zu erfassen, dann einen eigenen Dialog mit einem Anfangswert zeigen (wie so):

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    Dim fName As String 

    Cancel = True 

    fName = Application.GetSaveAsFilename("Default Name", _ 
     "Excel Workbook (*.xlsx), *.xlsx," & _ 
     "Macro Enabled Workbook (*.xlsm), *xlsm") 
    ThisWorkbook.SaveAs fName 
End Sub 
+0

Wo würde ich das hinstellen? Wie ich bereits erwähnt habe, soll es auf die Arbeitsmappe angewendet werden, die erstellt wird, wenn mein Makro den Code OrderForm.Copy ausführt. – PuggyLongLegs

+0

@PuggyLongLegs Versuchen Sie, hier den Code zu erstellen: (http://www.mrexcel.com/forum/excel-questions/428213-programmatically-inserting-worksheet-change-event.html). Es zeigt, wie Sie Code zu einem anderen Modul hinzufügen können, z. B. der neuen Arbeitsmappe, die Sie erstellen. Andernfalls könnten Sie Ihre eigene Ereignisbehandlungsklasse erstellen und sie mit einem ereignisgebundenen Verweis auf die neue Arbeitsmappe instanziieren. Etwas wie: (http://stackoverflow.com/questions/31686542/addign-an-event-for-another-wb-from-a-module) – Mikegrann

Verwandte Themen