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