我正在尝试根据用户决定命名文件的方式打开并保存工作簿。我可以打开并保存工作簿,但无法弄清楚如何为用户提供更改保存文件名称的选项。这是我的代码:
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
答案 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
所在的任何位置打开,因此您可以使用ChDrive
和ChDir
来控制默认目录。
答案 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