首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA Excel:对文本文件/自定义文件类型使用SaveAs对话框

VBA Excel:对文本文件/自定义文件类型使用SaveAs对话框
EN

Stack Overflow用户
提问于 2014-08-01 15:13:00
回答 1查看 2.4K关注 0票数 0

我有一个Excel宏,它将一个特定的字符串写入文本文件。问题是,我需要将它保存为自定义文件(".us1")。我在下面附加我的当前代码。最后,我做了一个奇怪的反转打开对话框。如何将此代码转换为使用SaveAs对话框?

代码语言:javascript
复制
Private Sub CommandButton2_Click()

Dim fso As New FileSystemObject
Dim stream As TextStream
Dim FilePath As String
Dim ofD As Object
CommandButton2.Height = 53.25
CommandButton2.Width = 83.25
CommandButton2.Left = 222.75
CommandButton2.Top = 508.5

If OptionButton5.Value = True Then

    MsgBox "NOTE! This is a bi-phasic script. Every other bit, starting with the first, is a sign bit!!! DISREGARD the graph!!!"

    Set ofD = Application.FileDialog(3)
    ofD.AllowMultiSelect = False

    If ofD.Show = False Then
        MsgBox "Script Generation Canceled"
    Else
        FilePath = ofD.SelectedItems(1)
        Set stream = fso.OpenTextFile(FilePath, ForWriting, True)

        stream.WriteLine "F3 07 00 31 FA 12 // "
        stream.WriteLine "F3 07 00 31 FB " + Cells(27, 2) + " // "
        stream.WriteLine "F3 07 00 31 FC 00 // "
        stream.WriteLine "F3 25 00 31 FF " + Cells(33, 2) + "// "
        stream.WriteLine "F3 07 00 31 FA 13 // "

        stream.Close
    End If
Else
    Set ofD = Application.FileDialog(3)

    ofD.AllowMultiSelect = False

    If ofD.Show = False Then
        MsgBox "Script Generation Canceled"
    Else
        FilePath = ofD.SelectedItems(1)
        Set stream = fso.OpenTextFile(FilePath, ForWriting, True)

        stream.WriteLine "F3 07 00 31 FA 10 // "
        stream.WriteLine "F3 07 00 31 FB " + Cells(27, 2) + " // "
        stream.WriteLine "F3 07 00 31 FC 00 // "
        stream.WriteLine "F3 25 00 31 FF " + Cells(33, 2) + "// "
        stream.WriteLine "F3 07 00 31 FA 11 // "

        stream.Close
    End If
End If
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-01 16:09:31

我能够通过通过saveAs对话框选择文件路径来解决我的问题。令人惊讶的是,我对文件过滤器没有任何问题。

代码语言:javascript
复制
Private Sub CommandButton2_Click()

Dim fso As New FileSystemObject
Dim stream As TextStream
Dim FilePath As String
Dim saveDialog As Variant
CommandButton2.Height = 53.25
CommandButton2.Width = 83.25
CommandButton2.Left = 222.75
CommandButton2.Top = 508.5

If OptionButton5.Value = True Then

    MsgBox "NOTE! This is a bi-phasic script. Every other bit, starting with the first, is a sign bit!!! DISREGARD the graph!!!"

    saveDialog = Application.GetSaveAsFilename(FileFilter:="Script Files(*.us1), *.us1")

        Set stream = fso.OpenTextFile(saveDialog, ForWriting, True)

        stream.WriteLine "F3 07 00 31 FA 12 // "
        stream.WriteLine "F3 07 00 31 FB " + Cells(27, 2) + " // "
        stream.WriteLine "F3 07 00 31 FC 00 // "
        stream.WriteLine "F3 25 00 31 FF " + Cells(33, 2) + "// "
        stream.WriteLine "F3 07 00 31 FA 13 // "

        stream.Close

Else
    saveDialog = Application.GetSaveAsFilename(FileFilter:="Script Files(*.us1),*.us1")

        Set stream = fso.OpenTextFile(saveDialog, ForWriting, True)

        stream.WriteLine "F3 07 00 31 FA 10 // "
        stream.WriteLine "F3 07 00 31 FB " + Cells(27, 2) + " // "
        stream.WriteLine "F3 07 00 31 FC 00 // "
        stream.WriteLine "F3 25 00 31 FF " + Cells(33, 2) + "// "
        stream.WriteLine "F3 07 00 31 FA 11 // "

        stream.Close
End If

End Sub
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25083325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档