Vba 保存与Excel文件同名的文本文件
我有一个将excel文件转换为文本文件的Visual Basic脚本。假设我有一个名为example.xlsx的excel文件;目前,脚本将其保存为example.xlsx.txt,这不是我想要的。我需要它另存为:example.txt 有什么想法吗Vba 保存与Excel文件同名的文本文件,vba,Vba,我有一个将excel文件转换为文本文件的Visual Basic脚本。假设我有一个名为example.xlsx的excel文件;目前,脚本将其保存为example.xlsx.txt,这不是我想要的。我需要它另存为:example.txt 有什么想法吗 Option Explicit Dim oFSO, myFolder Dim xlTXT myFolder="C:\..." Set oFSO = CreateObject("Scripting.FileSystemObject")
Option Explicit
Dim oFSO, myFolder
Dim xlTXT
myFolder="C:\..."
Set oFSO = CreateObject("Scripting.FileSystemObject")
xlTXT = 21 'Excel TXT format enum
Call ConvertAllExcelFiles(myFolder)
Set oFSO = Nothing
Call MsgBox ("Done!")
Sub ConvertAllExcelFiles(ByVal oFolder)
Dim targetF, oFileList, oFile
Dim oExcel, oWB, oWSH
Set oExcel = CreateObject("Excel.Application")
oExcel.DisplayAlerts = False
Set targetF = oFSO.GetFolder(oFolder)
Set oFileList = targetF.Files
For Each oFile in oFileList
If (Right(oFile.Name, 4) = "xlsx") Then
Set oWB = oExcel.Workbooks.Open(oFile.Path)
For Each oWSH in oWB.Sheets
Call oWSH.SaveAs (oFile.Path & ".txt", xlTXT )
Exit For
Next
Set oWSH = Nothing
Call oWB.Close
Set oWB = Nothing
End If
Next
Call oExcel.Quit
Set oExcel = Nothing
End Sub
FileSystemObject有一个类似于
GetBaseName
,GetFileName
。所以
Call oWSH.SaveAs (myFolder & "\" & oFile.GetBaseName & ".txt", xlTXT)
(GetFileName
将包括扩展名。)
但是,正如Harrison所描述的,您可能希望在文件名中包含sheetname或一些数字
你可以考虑使用工作表的索引作为文件名的一部分,而不是必须创建数字。
< P>你只保存了第一个表,因为你退出了FURACH循环。保存所有可以保存的工作表 替换 For Each oWSH in oWB.Sheets
Call oWSH.SaveAs (oFile.Path & ".txt", xlTXT )
Exit For
Next
与
注意:如果您只想保存第一张工作表,而不是在第一张工作表之后使用“退出”,则可以使用此选项
Call oWB.Sheets(1).SaveAs (oWB.Name & ".txt", xlTXT )
现在,您正在将.txt附加到需要实际更改的文件路径的末尾。似乎最简单的方法是调用oWSH.SaveAs(替换(oFile.path,.xlsx.txt),xlTXT)谢谢!如何将所有文本文件保存到不同的文件夹中?看起来您当前正在覆盖每个工作表的文件,因为您正在将每个文件保存到相同的名称。因此,如果工作簿中有多张工作表,那么除了最后一张工作表之外,您将丢失所有工作表。感谢大家提供的提示。
Call oWB.Sheets(1).SaveAs (oWB.Name & ".txt", xlTXT )