Se lo devi mettere tutto in un Command Button il codice deve essere così :

codice:
Private Sub Command1_Click()

Dim NRFILE2 As Integer
    On Error GoTo ERRORE
    NRFILE2 = FreeFile

Commondialog1.CancelError = False
CommonDialog1.Flags = &H2
CommonDialog1.Filter = "File di Testo|*.txt"
CommonDialog1.FilterIndex = 0
CommonDialog1.ShowSave

If Commondialog1.FileName <> "" Then
    Open CommonDialog1.FileName For Output As NRFILE2
    Print #NRFILE2, Text1.Text
    Close NRFILE2
    MsgBox "Salvataggio effettuato!", vbInformation + vbOKOnly, "Salva"
    Exit Sub

Else

ERRORE:
    MsgBox "Si è verificato un errore nel salvataggio.", vbCritical + vbOKOnly, "Salva"

End If
End Sub
Non puoi mettere il comando di salvataggio prima, il programma percepisce di scrivere il contenuto della Text1 in un file inesistente !!!!

Ricorda che i computer in generale pensano in modo lineare, non sono una mente umana ( per ora :P ) che può processare una espressione in un secondo momento, se serve subito, tu devi inserirla prima di tutte le altre cose

E' come se ti dicessi di fare 1 + 2 * 5 = ?
tu faresti principalmente da come ti è stato insegnato fai la moltiplicazione e poi sommi e il risultato è 11 ma se ti dico
(1 + 2) * 5 = ?
il risultato cambia ( 15 per chi non lo sapesse hihihih )

Spero di essermi spiegato bene e spero che il problema è quello che ti ho appena proposto

P.S. : Se ti ho dato una spiegazione è perchè anche io toppavo ( e toppo tutt'ora ) su questi tranelli di programmazione