2017-01-19 48 views
1

我有一个Excell工作簿和多个工作表。我想将所有工作表的文本导出到一个文本文件。我已经看到了多个解决方案(主要使用VBA - 下面的示例)将每个工作表导出为自己的文本文件,但尚未找到将所有工作表导出为一个文本文件的解决方案。有关如何使用VBA(或者Python)来实现这一点的任何想法?如何将Excel工作簿中的所有工作表保存为一个文本文件?

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 

回答

2

后生成的文本文件,你可以很容易地合并多个文本文件转换为使用Windows Command Prompt之一。假设所有的文件名都有其名称中的某种模式。即*.txt但我建议你给他们以他们的名义一些额外的模式,如temp_something.txt:

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

然后你将它们合并为一个文本文件INE命令提示符是这样的:

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的文本文件。

+0

这真的很有帮助。非常感谢彻底的指导。干杯。 –

相关问题