- 複製函數產生的命令指令
- 將指令貼到記事本軟體
- 另存成 .bat 批次檔案
- 執行 bat 檔案
透過以下這段語法,可以將選擇 Excel 函數產生出來的結果複製成 bat 檔案。
Sub myTSave() Dim myFolder As String 'By Joe Was. 'Save Range as Text File. ActiveSheet.Activate 'Ask user to select range for text file. Set myRange = Application.InputBox(prompt:="請選擇要儲存的資料範圍!", _ Title:="Text File Range!", Type:=8) myRange.Select Selection.Copy 'This temporarily adds a sheet named "Test." Workbooks.Add Sheets.Add.Name = "Test" Sheets("Test").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Ask user for folder to save text file to. myFolder = Application.GetSaveAsFilename(fileFilter:="Text Files (*.bat), *.bat") 'Save selected data as text file in users selected folder. ActiveWorkbook.SaveAs Filename:=myFolder, FileFormat:=xlText, CreateBackup:=False 'Remove temporary sheet. Application.ScreenUpdating = False Application.DisplayAlerts = False ActiveWindow.SelectedSheets.Delete Application.DisplayAlerts = True Application.ScreenUpdating = True ActiveWorkbook.Close savechanges:=False 'Indicate save action. MsgBox "複製指令檔: " & myFolder & " 儲存成功!" 'Go to top of sheet. Range("A1").Select End Sub
ChatGPT補充 2024-09-15 Sunday
這段 VBA 程式碼 myTSave
是一個用於將 Excel 工作表中的選定範圍儲存為文字檔案的宏。以下是逐步解釋:
程式開頭與註解:
Sub myTSave()
定義了一個名為myTSave
的子程序(宏)。Dim myFolder As String
宣告了一個名為myFolder
的變數,將用來存儲檔案儲存的路徑。- 註解 (
'By Joe Was.
) 表示這段程式碼的作者是 Joe Was,並且它的目的是將範圍儲存為文字檔案。
選取範圍:
ActiveSheet.Activate
將目前的工作表設為活動狀態。Set myRange = Application.InputBox(...)
提示使用者選擇他們想要儲存為文字檔案的範圍。InputBox
使用Type:=8
,表明使用者必須選擇一個範圍。myRange.Select
將使用者選擇的範圍選取。Selection.Copy
複製選取的範圍內容。
創建臨時工作表:
Workbooks.Add
新增一個新的工作簿。Sheets.Add.Name = "Test"
新增一個名為 "Test" 的工作表並選取它。Sheets("Test").Select
選取這個新建的工作表。Selection.PasteSpecial
將複製的範圍粘貼到新工作表,且僅粘貼值 (xlPasteValues
),不包括公式或格式。
保存文字檔案:
myFolder = Application.GetSaveAsFilename(...)
顯示 "另存為" 對話框,允許使用者選擇保存檔案的路徑和檔名,並過濾檔案類型為.bat
(批處理檔案)。ActiveWorkbook.SaveAs Filename:=myFolder, FileFormat:=xlText, CreateBackup:=False
將當前工作簿(即包含選定範圍的新工作簿)儲存為文字檔案,使用者指定的檔名。
刪除臨時工作表並關閉工作簿:
Application.ScreenUpdating = False
停止更新螢幕,以防止視覺上的閃爍或延遲。Application.DisplayAlerts = False
停用顯示的警告訊息,防止詢問使用者刪除工作表是否確定。ActiveWindow.SelectedSheets.Delete
刪除剛才創建的臨時 "Test" 工作表。Application.DisplayAlerts = True
和Application.ScreenUpdating = True
分別重新啟用警告訊息和螢幕更新。ActiveWorkbook.Close savechanges:=False
關閉新建的工作簿,且不儲存變更。
完成動作:
MsgBox "複製指令檔: " & myFolder & " 儲存成功!"
顯示一個消息框,通知使用者文字檔案已成功儲存,並顯示檔案路徑。Range("A1").Select
將游標移動到當前工作表的 A1 儲存格。
總結:
這個宏的作用是讓使用者選擇 Excel 中的一個範圍,將該範圍的內容保存為一個文字檔案,並自動清理過程中使用的臨時工作表。