如何在VBA中使用InputBox保存工作簿?

时间:2018-08-14 15:43:03

标签: excel vba excel-vba

我正在尝试根据用户决定命名文件的方式打开并保存工作簿。我可以打开并保存工作簿,但无法弄清楚如何为用户提供更改保存文件名称的选项。这是我的代码:

Sub Sheets()

Dim wb1 As Workbook

wb1save = Application.InputBox("What would you like to save this file as?")

Set wb1 = Workbooks.Add

    wb1.SaveAs ("e:\excel\"Filename:=wb1save")

End Sub

任何帮助将不胜感激。

谢谢

G

2 个答案:

答案 0 :(得分:3)

我看不出在普通的旧Excel.Application.InputBox上使用VBA.Interaction.InputBox的原因。如果用户取消了提示,该函数将返回一个空字符串指针(尽管有未记录的行为),所以您应该处理该提示。

Dim result As String
result = InputBox(prompt, default)
If StrPtr(result) = 0 Then Exit Sub
wb1.SaveAs result

但是不要为此使用InputBox(无论Excel.Application.InputBox还是VBA.Interaction.InputBox-都不是用于这种用户输入的)。改用Application.GetSaveAsFileName,并获得一个实际的“另存为”对话框,提示用户输入文件名,并让他们浏览文件夹而不输入错字。

如果用户取消了提示,该函数将返回一个Boolean值(False),因此您应该对此进行处理。

Dim result As Variant
result = Application.GetSaveAsFileName
If VarType(result) = vbBoolean Then Exit Sub
wb1.SaveAs result

这样就可以保证您具有有效的文件/路径。有了InputBox,就不用那么多了。

该对话框将在CurDir所在的任何位置打开,因此您可以使用ChDriveChDir来控制默认目录。

答案 1 :(得分:2)

您在这里:

Sub Sheets()
Dim wb1 As Workbook
wb1save = Application.InputBox("What would you like to save this file as?")
Set wb1 = ActiveWorkbook
wb1.SaveAs ("e:\excel\" & wb1save)
End Sub