VBA 另存为自定义文件
VBA Save as custom file
我一直在尝试将一些 excel 数据保存为自定义文本文件格式。通过关注 this post,我并没有走得太远。 Excel 抛出 运行 时间错误“13”:类型不匹配。知道为什么会这样吗?
错误发生在第三行:
设置对话框=Application.GetSaveAsFilename(FileFilter:="Custom file, *.custom")
Sub SaveCustomData()
Dim dialog As Variant
Set dialog = Application.GetSaveAsFilename(FileFilter:="Custom file, *.custom")
' !!! The code runs this far !!!
With dialog
.InitialFileName = Application.ActiveWorkbook.Path & Application.PathSeparator
.AllowMultiSelect = False
Dim file As String
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fileStream As TextStream
If .Show = True Then
file = .SelectedItems(1)
Set fileStream = fso.CreateTextFile(dialog, ForWriting, True)
' Writing data to file here
fileStream.Close
End If
End With
End Sub
Application.GetSaveAsFilename
returns selected 文件的名称(或者 False
如果用户取消了对话框)。您不能(也不想)将其分配给您的 dialog
变量
你引用的post的问题使用Application.FileDialog(3)
(3应该被常量msoFileDialogFilePicker
代替),这个returns a Dialog
- 这就是其余代码的构建方式。
但是,在 answer 的 post 中,使用了 Application.GetSaveAsFilename
。由于此命令使用实际 sheet 的文件夹作为起始文件夹并且不允许多个 select,您的代码可以减少到
Sub SaveCustomData()
Dim fileName As Variant
fileName = Application.GetSaveAsFilename(FileFilter:="Custom file, *.custom")
if fileName = False then
MsgBox "No filename selected, data not saved"
exit sub
end if
Dim file As String
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fileStream As TextStream
Set fileStream = fso.CreateTextFile(fileName, ForWriting, True)
...
End Sub
我一直在尝试将一些 excel 数据保存为自定义文本文件格式。通过关注 this post,我并没有走得太远。 Excel 抛出 运行 时间错误“13”:类型不匹配。知道为什么会这样吗?
错误发生在第三行:
设置对话框=Application.GetSaveAsFilename(FileFilter:="Custom file, *.custom")
Sub SaveCustomData()
Dim dialog As Variant
Set dialog = Application.GetSaveAsFilename(FileFilter:="Custom file, *.custom")
' !!! The code runs this far !!!
With dialog
.InitialFileName = Application.ActiveWorkbook.Path & Application.PathSeparator
.AllowMultiSelect = False
Dim file As String
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fileStream As TextStream
If .Show = True Then
file = .SelectedItems(1)
Set fileStream = fso.CreateTextFile(dialog, ForWriting, True)
' Writing data to file here
fileStream.Close
End If
End With
End Sub
Application.GetSaveAsFilename
returns selected 文件的名称(或者 False
如果用户取消了对话框)。您不能(也不想)将其分配给您的 dialog
变量
你引用的post的问题使用Application.FileDialog(3)
(3应该被常量msoFileDialogFilePicker
代替),这个returns a Dialog
- 这就是其余代码的构建方式。
但是,在 answer 的 post 中,使用了 Application.GetSaveAsFilename
。由于此命令使用实际 sheet 的文件夹作为起始文件夹并且不允许多个 select,您的代码可以减少到
Sub SaveCustomData()
Dim fileName As Variant
fileName = Application.GetSaveAsFilename(FileFilter:="Custom file, *.custom")
if fileName = False then
MsgBox "No filename selected, data not saved"
exit sub
end if
Dim file As String
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim fileStream As TextStream
Set fileStream = fso.CreateTextFile(fileName, ForWriting, True)
...
End Sub