我正在使用VBA在MS excel中编写一个宏。我需要打开或创建一个要写入的文件。 文件可能具有不同的扩展名(即.cal),但在内部它只包含文本。
我查看过很多通过明确说明新文件路径来创建文件的示例(这里是我找到的路径):
strFileName = "C:\test.txt"
Open strFileName For Output As #iFileNumber
其他示例打开已存在的文件。
我想有一个弹出窗口/对话框,允许用户"或者#34;打开现有文件"或"创造一个新的。我认为这是可能的。
到目前为止,我使用字符串/路径和对象来使用Application.FileDialog(....)
函数并没有太大成功。
答案 0 :(得分:0)
使用Application.FileDialog(...)
,您的用户应该能够像在Windows资源管理器中一样创建新文本文件(通过右键单击并选择New-> Text File),然后他们可以选择该文件来输出数据到。
以下SelectFile(...)
函数返回所选文件的路径(如果未选择文件,则返回空字符串)。使用此功能,用户只能选择一个文件,但考虑到上下文,我希望这不是一个问题。
Public Sub SelectOrCreateFile()
Dim strFileName As String
Dim iFileNum As Integer
iFileNum = FreeFile
strFileName = SelectFile
If strFileName <> "" Then
Open strFileName For Output As #iFileNum
'### WRITE YOUR DATA ###
Close #iFileNum
End If
End Sub
'Returns File Path of file selected with file selection dialog
Public Function SelectFile(Optional DefaultPath As String = "", _
Optional FileType As String = "All Files", _
Optional FileExtension As String = "*.*") As String
Dim F As Object
Set F = Application.FileDialog(msoFileDialogFilePicker)
'Set up FileDialog properties
F.Filters.Clear
F.Filters.Add FileType, FileExtension
F.AllowMultiSelect = False
F.Title = "Select File"
F.ButtonName = "Select"
If DefaultPath <> "" Then F.InitialFileName = DefaultPath
'FileDialog.Show returns False if the user cancels
If F.show Then
SelectFile = F.SelectedItems(1)
Else
MsgBox "No File Selected", vbInformation, "Cancelled"
SelectFile = ""
End If
Set F = Nothing
End Function
希望这有帮助!