Я думаю, что вы хотите Application.GetSaveAsFilename. Вот пример.
Sub Test()
Dim sFile As String
Dim lFile As Long
Dim sSql As String
sFile = Application.GetSaveAsFilename(, "*.txt,*.txt", , "Save SQL File")
If sFile <> "False" Then
sSql = "Select * from abc"
lFile = FreeFile
Open sFile For Append As lFile
Print #lFile, sSql
Close lFile
End If
End Sub
sFile будет строкой, которая является полным путем и именем. Я не знаю, что такое «файл SQL», поэтому я догадался, что это файл с расширением SQL. sFile будет «False», если пользователь нажимает кнопку «Отмена» в диалоговом окне.
Чтобы скопировать файл после его создания
Sub TestCopy()
Dim sNewFile As String, sOldFile As String
Dim lFile As Long
Dim sSql As String
sNewFile = Application.GetSaveAsFilename(, "*.txt,*.txt", , "Save SQL File")
If sNewFile <> "False" Then
sSql = "Select * from abc"
sOldFile = "C:\Book1.txt"
lFile = FreeFile
Open sOldFile For Append As lFile
Print #lFile, sSql
Close lFile
FileCopy sOldFile, sNewFile
End If
End Sub
В итоге вы получите два файла - один по адресу C: \ Book1.txt, а другой - по выбору пользователя.