2013-10-31 142 views
2

我的目標是將excel文件導出爲txt文件格式。這個想法是有一個GUI讓用戶選擇他/她希望導出的excel文件,她/他可以決定保存哪個文件路徑和文件名。一旦用戶完成輸入和輸出設置,他/她只需點擊導出文本按鈕將excel文件導出到txt文件並保存在他/她已決定的位置。在GUI下面通過excel vba將excel文件導出爲txt格式GUI

enter image description here

我有一個宏來轉換Excel文件txt格式

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

我的問題是如何從的FileInput和FileOutput傳遞值變量上面的宏代替對文件路徑進行編碼。感謝您的幫助,如果您有更好的建議,請分享。由於

下面是完整的源代碼

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 

回答

1

使它所以你的子程序ConvertToText需要一個文件路徑/字符串參數:

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 sub:

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 
+0

How我可以重寫suroutine ConvertToText以接受來自ReadTextBox和WriteTextBox的值嗎? – user1902849

+0

請參閱修改:) –

+0

這是有效的。非常感謝 – user1902849