如何在Excel中创build新的工作簿(空白),并提示用户名称和文件位置

假设我想要使用macros创build一个新的Excel工作簿(空白),并提示用户input文件名和位置,新文件不应该覆盖一些与用户input的文件名相同的现有文件

用户input的文件的名称应保存在我运行macros的现有工作表的某个单元格中

直到现在我一直在使用这个

Workbooks.Add Dim file_name As Variant ActiveWorkbook.file_name = _ Application.GetSaveAsFilename(FileFilter:="Microsoft Excel file (*.xls), *.xls") 

我不知道如何将名字复制到单元格中

我得到错误消息:上面的代码运行时错误'438'

我不知道该如何解决,我是初学者,请帮忙

 Option Explicit Public Function wbNewWB(rngCelltoWriteTheFilenameTo As Range) As Workbook Dim wbNew As Workbook Dim vFilename As Variant Dim bFileexists As Boolean Set wbNew = Workbooks.Add bFileexists = True Do vFilename = Application.GetSaveAsFilename(fileFilter:="Microsoft Excel file (*.xls), *.xls") bFileexists = Dir(vFilename) <> "" Loop Until vFilename <> False And bFileexists = False wbNew.SaveAs Filename:=vFilename rngCelltoWriteTheFilenameTo.Value = vFilename Set wbNewWB = wbNew End Function Sub test() Dim wbMyWB Set wbMyWB = wbNewWB(ThisWorkbook.Worksheets(1).Range("A1")) Debug.Print "Finished" End Sub 

至于我正确理解你的要求,这可能是一个解决scheme:函数wbNewWB添加一个新的工作簿,然后要求一个文件名,并检查是否已经存在这个文件名的文件。 如果提供的文件名不存在,则将工作簿保存在提供的文件名下,并将文件名作为值存储在您确定为函数的input参数的单元格中。 最后,新的工作簿作为函数的返回值提供。

为了说明函数的用法,我进一步添加了一个子函数,在这里调用函数。

要使用此代码,您应该简单地将模块添加到现有项目中,并复制并粘贴代码。