Excel,VBA,宏,文件 - 打开或创建,对话框

时间:2014-06-23 10:54:45

标签: excel vba file output

我正在使用VBA在MS excel中编写一个宏。我需要打开或创建一个要写入的文件。 文件可能具有不同的扩展名(即.cal),但在内部它只包含文本。

我查看过很多通过明确说明新文件路径来创建文件的示例(这里是我找到的路径):

strFileName = "C:\test.txt"  
Open strFileName For Output As #iFileNumber

其他示例打开已存在的文件。

我想有一个弹出窗口/对话框,允许用户"或者#34;打开现有文件"或"创造一个新的。我认为这是可能的。

到目前为止,我使用字符串/路径和对象来使用Application.FileDialog(....)函数并没有太大成功。

1 个答案:

答案 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

希望这有帮助!