簡體   English   中英

如何將Excel工作簿中的所有工作表另存為一個文本文件?

[英]How to save all worksheets in Excel workbook as one text file?

我有一個帶有多個工作表的Excell工作簿。 我想將所有工作表的文本導出到一個文本文件。 我已經看到了多種解決方案(主要使用VBA-下面的示例)將每個工作表導出為自己的文本文件,但是還沒有找到一種將所有工作表導出為一個文本文件的解決方案。 關於如何使用VBA(或Python)完成此操作的任何想法?

Sub ExportSheetsToText()
Dim xWs As Worksheet
Dim xTextFile As String
For Each xWs In Application.ActiveWorkbook.Worksheets
    xWs.Copy
    xTextFile = CurDir & "\" & xWs.Name & ".txt"
    Application.ActiveWorkbook.SaveAs Filename:=xTextFile, FileFormat:=xlText
    Application.ActiveWorkbook.Saved = True
    Application.ActiveWorkbook.Close
Next
End Sub

生成這些文本文件后,您可以使用Windows Command Prompt輕松地將許多文本文件合並為一個。 例如,假設您的所有文件名的名稱都有某種模式。 *.txt但我建議您給它們添加一些其他名稱,例如temp_something.txt:

xTextFile = CurDir & "\temp_" & xWs.Name & ".txt"

然后將它們合並為一個文本文件,並在命令提示符下顯示如下:

type temp_*.txt >> mergedFile.txt

要么

copy temp_*.txt mergedFile.txt

如果要完全自動化VBA例程中的操作,可以將命令集成到其中,如下所示:

For Each xWs In Application.ActiveWorkbook.Worksheets
    xWs.Copy
    xTextFile = CurDir & "\temp_" & xWs.Name & ".txt"
    Application.ActiveWorkbook.SaveAs Filename:=xTextFile, FileFormat:=xlText
    Application.ActiveWorkbook.Saved = True
    Application.ActiveWorkbook.Close
Next

Dim shl As Object: Set shl = CreateObject("WScript.shell")
shl.CurrentDirectory = CurDir
shl.Run "cmd /C copy temp_*.txt " & ThisWorkbook.name & ".txt" ' merge the temporary text files

shl.Run "cmd /C del temp_*.txt" ' clean up the temporary text files

最后,您將獲得一個與您的工作簿同名的文本文件,以及擴展名.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM