假设我想要使用宏创建一个新的excel工作簿(空白),并且应该提示用户输入文件名和位置,新文件不应该覆盖一些与用户输入的名称相同的现有文件
用户输入的文件名应保存在我运行宏的现有工作表的某个单元格中
直到现在我一直在使用这个
Workbooks.Add
Dim file_name As Variant
ActiveWorkbook.file_name = _
Application.GetSaveAsFilename(FileFilter:="Microsoft Excel file (*.xls), *.xls")
我不知道如何将名称复制到单元格
我收到错误消息:运行时错误'438',上面的代码
我不知道如何修复它,我是初学者,请帮忙
答案 0 :(得分:0)
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
就我理解您的要求而言,这可能是一个解决方案:函数wbNewWB添加一个新工作簿,然后请求一个文件名并检查具有此文件名的文件是否已存在。如果提供了文件名但尚不存在,则工作簿将保存在提供的文件名下,并且文件名将作为值确定为您确定为函数的输入参数的单元格中的值。最后,新工作簿作为函数的返回值提供。
为了说明函数的用法,我进一步添加了一个sub,其中调用了函数。
要使用此代码,您只需将模块添加到现有项目中并复制&amp;粘贴代码。