Googleando encontré un código para elegir una ruta y otro código que guarda el archivo en una ruta predefinida, por lo que los "fusioné" y logré lo que quería, que pudiera guardar un archivo en una ruta que tuviese que elegir... Obviamente, habrá otro código más simple o correcto, por eso pregunto si alguien conoce un código que guarde el contenido de un TextBox (o Label) de manera que pregunte la ruta.
Os dejo lo que yo conseguí con los códigos de la ruta y el "save":
Código:
Option Explicit
Private Declare Function GetSaveFileName Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" ( _
pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Dim OFName As OPENFILENAME
Código:
Private Function GuardarComo() As String
With OFName
.lStructSize = Len(OFName)
.hwndOwner = Me.hWnd
.hInstance = App.hInstance
.lpstrFile = Space$(254)
.nMaxFile = 255
.lpstrFileTitle = Space$(254)
.nMaxFileTitle = 255
.lpstrInitialDir = "C:\"
.lpstrTitle = "Guardar archivo como"
.flags = 0
End With
If GetSaveFileName(OFName) Then
GuardarComo = Trim$(Replace(OFName.lpstrFile, Chr(0), ""))
Else
GuardarComo = ""
End If
End Function
Código:
Private Sub sacoas_Click() '// Los cambios los efectué en este campo
Dim Savefile As Long, Nombre As String
Dim sFile As String
Savefile = FreeFile
sFile = GuardarComo
If sFile <> "" Then
MsgBox "Directory: " + sFile
Savefile = FreeFile
Nombre = sFile & ".txt"
Open Nombre For Output As #Savefile
Print #Savefile, Text2.Text
Close #Savefile
Else
MsgBox "Canceled"
End If
End Sub