2016-08-22 252 views
0

我这行代码复制工作表到新工作簿:VBA:重命名复制工作表

OrderForm.Copy ' copy worksheet to new workbook 

新工作簿显示为书ñ的.xlsx: enter image description here


当保存这是显示的内容: enter image description here

我'好吧,如果它在标题栏上显示为Book n,我不想自动保存它,但是我想要的是当用户决定保存时具有默认名称(默认为.xlsx)它,就像这样:

enter image description here

+1

查找到'Application.GetSaveAsFilename '。 –

回答

1

使用BeforeSave事件捕获用户保存,然后用初始值显示自己的对话框(如下所示):

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

我该把这个放在哪里?正如我所提到的,我希望它适用于当我的宏运行代码OrderForm.Copy时创建的工作簿。 – PuggyLongLegs

+0

@PuggyLongLegs尝试在此构建代码:(http://www.mrexcel.com/forum/excel-questions/428213-programmatically-inserting-worksheet-change-event.html)。它显示了如何将代码添加到其他模块,例如您创建的新工作簿。否则,您可以创建自己的事件处理类,并使用对新工作簿的事件绑定引用对其进行实例化。像这样:(http://stackoverflow.com/questions/31686542/addign-an-event-for-another-wb-from-a-module) – Mikegrann

相关问题