通过excel vba GUI将excel文件导出为txt格式

我的目标是将excel文件导出为txt文件格式。 这个想法是有一个GUI让用户select他/她希望导出的Excel文件,她/他可以决定保存哪个文件path和文件名。 用户完成input输出设置后,只需点击导出文本button,将excel文件导出到txt文件并保存到他/她已经决定的位置。 GUI如下

在这里输入图像说明

我有一个macros将Excel文件转换为TXT格式

Private Sub ConvertToText() ActiveWorkbook.SaveAs FileName:="C:\Projects\ExelToText\Text.txt", FileFormat:=xlCurrentPlatformText, CreateBackup:=False End Sub 

我的问题是如何将FileInput和FileOutput的值作为variables传递给上面的macros而不是对文件path进行编码。 感谢您的帮助,如果您有更好的build议,请分享一下。 谢谢

以下是完整的源代码

 Private Sub ReadButton_Click() OpenWorkbookUsingFileDialog End Sub ------------------------------ Private Sub WriteButton_Click() WriteWorkbookUsingFileDialog End Sub ------------------------------ Private Sub ExportButton_Click() ConvertToText End Sub ------------------------------ Private Sub OpenWorkbookUsingFileDialog() Dim fdl As FileDialog Dim FileName As String Dim FileChosen As Integer Set fdl = Application.FileDialog(msoFileDialogFilePicker) fdl.Title = "Please Select a Excel File" fdl.InitialFileName = "c:\" fdl.InitialView = msoFileDialogViewSmallIcons fdl.Filters.Clear fdl.Filters.Add "Excel Files", "*.xlsx; *.xls" FileChosen = fdl.Show If FileChosen <> -1 Then MsgBox "You have choosen nothing" ReadTextBox = Null Else MsgBox fdl.SelectedItems(1) FileName = fdl.SelectedItems(1) ReadTextBox = FileName End If End Sub ----------------------------------- Private Sub WriteWorkbookUsingFileDialog() Dim file_name As Variant file_name = Application.GetSaveAsFilename( _ FileFilter:="Text Files,*.txt,All Files,*.*", _ Title:="Save As File Name") If file_name = False Then Exit Sub If LCase$(Right$(file_name, 4)) <> ".txt" Then file_name = file_name & ".txt" End If WriteTextBox = file_name End Sub ---------------------------- Private Sub ConvertToText() ActiveWorkbook.SaveAs FileName:="C:\Projects\ExelToText\Text.txt",FileFormat:=xlCurrentPlatformText, CreateBackup:=False End Sub 

使它成为你的子程序ConvertToText需要一个文件path/string参数:

 Private Sub ConvertToText(sourcePath as String, destPath as String) Dim wb as Workbook Set wb = Workbooks.Open(sourcePath) wb.SaveAs FileName:=destPath, FileFormat:=xlCurrentPlatformText, CreateBackup:=False wb.Close End Sub 

然后,对ExportButton进行小的修改,将此参数发送到ConvertToText子文件:

 Private Sub ExportButton_Click() On Error Resume Next ConvertToText Me.TextBox1.Value, Me.TextBox2.Value 'Modify this so that it refers to the TextBoxes on your form If Err.Number <> 0 Then MsgBox "Unable to convert file. Please ensure a valid file was entered.", vbCritical End If On Error GoTo 0 End Sub