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

时间:2014-03-13 08:55:52

标签: excel vba excel-vba

假设我想要使用宏创建一个新的excel工作簿(空白),并且应该提示用户输入文件名和位置,新文件不应该覆盖一些与用户输入的名称相同的现有文件

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

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

Workbooks.Add
Dim file_name As Variant

ActiveWorkbook.file_name = _
Application.GetSaveAsFilename(FileFilter:="Microsoft Excel file (*.xls), *.xls")

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

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

我不知道如何修复它,我是初学者,请帮忙

1 个答案:

答案 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;粘贴代码。