VBA Excel: utilizzo di salvas dialog per file di testo / tipi di file personalizzati

StackOverflow https://stackoverflow.com//questions/25083325

  •  02-01-2020
  •  | 
  •  

Domanda

Ho una macro Excel che scrive una stringa specifica in un file di testo.Il fermo è, ho bisogno di salvarlo come file personalizzato (".us1").Sto collegando il mio codice corrente qui sotto.Ho finito per fare una strana inversione del dialogo aperto.Cosa farei per cambiare questo codice per utilizzare il dialogo Salvas?

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
.

È stato utile?

Soluzione

Sono stato in grado di risolvere il mio problema selezionando il percorso del file attraverso il dialogo Salvas.Non ho sorprendentemente alcun problema con il filtro del file.

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top