使用 Access VBA 将 Excel 个文件转换为文本
Converting Excel files to Text using Access VBA
我正在尝试使用 Access VBA 将文件夹位置中的每个 .xls 文件保存为文本。我已经将下面的代码拼凑在一起。但是,它只成功地将第一个 excel 文件保存为文本,然后它似乎挂起。
我已经查看了这个 post,我认为它实现了与我想要的类似的东西:HERE。但是我已经这样做了很长时间,以至于没有任何意义!有任何想法吗?它卡在 ActiveWorkbook.Close
了吗?
Public Sub FormatAsText()
Dim myfile As String
Dim xlApp As Excel.Application
Dim xlWB1 As Excel.Workbook
Dim objFso As FileSystemObject
Dim strPath As String
Dim objFolder As Folder
Dim objFile As File
Set xlApp = New Excel.Application
strPath = "C:FolderLocation..."
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(strPath)
myfile = Dir(strPath & "\*.xls")
For Each objFile In objFolder.Files
If objFile.Name Like "*.xls" Then
Workbooks.Open objFile, ReadOnly:=False
ActiveWorkbook.SaveAs FileName:=strPath & "\" & Replace(myfile, ".xls", ".txt"), FileFormat:=xlTextWindows
ActiveWorkbook.Close
End If
Next objFile
Debug.Print myfile
Set xlApp = Nothing
Set xlWB1 = Nothing
Set objFso = Nothing
Set objFolder = Nothing
Set objFile = Nothing
End Sub
通过在 Set xlApp = New Excel.Application
之后添加 xlApp.Visible = True
,您发现 Excel 正在等待您告诉它是否覆盖与您正在尝试的文件同名的现有文件保存。
发生这种情况是因为您只为 myfile 赋值一次 ...
myfile = Dir(strPath & "\*.xls")
...但随后重新使用相同的名称作为生成您尝试保存的每个 .txt 文件名称的基础 ...
FileName:=strPath & "\" & Replace(myfile, ".xls", ".txt")
我认为您可以将 objFile.Name 替换为那里,因为它应该匹配当前工作簿文件的名称...这意味着您的 。 txt 文件名每次通过 For Each
循环都会不同。
FileName:=strPath & "\" & Replace(objFile.Name, ".xls", ".txt")
我正在尝试使用 Access VBA 将文件夹位置中的每个 .xls 文件保存为文本。我已经将下面的代码拼凑在一起。但是,它只成功地将第一个 excel 文件保存为文本,然后它似乎挂起。
我已经查看了这个 post,我认为它实现了与我想要的类似的东西:HERE。但是我已经这样做了很长时间,以至于没有任何意义!有任何想法吗?它卡在 ActiveWorkbook.Close
了吗?
Public Sub FormatAsText()
Dim myfile As String
Dim xlApp As Excel.Application
Dim xlWB1 As Excel.Workbook
Dim objFso As FileSystemObject
Dim strPath As String
Dim objFolder As Folder
Dim objFile As File
Set xlApp = New Excel.Application
strPath = "C:FolderLocation..."
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(strPath)
myfile = Dir(strPath & "\*.xls")
For Each objFile In objFolder.Files
If objFile.Name Like "*.xls" Then
Workbooks.Open objFile, ReadOnly:=False
ActiveWorkbook.SaveAs FileName:=strPath & "\" & Replace(myfile, ".xls", ".txt"), FileFormat:=xlTextWindows
ActiveWorkbook.Close
End If
Next objFile
Debug.Print myfile
Set xlApp = Nothing
Set xlWB1 = Nothing
Set objFso = Nothing
Set objFolder = Nothing
Set objFile = Nothing
End Sub
通过在 Set xlApp = New Excel.Application
之后添加 xlApp.Visible = True
,您发现 Excel 正在等待您告诉它是否覆盖与您正在尝试的文件同名的现有文件保存。
发生这种情况是因为您只为 myfile 赋值一次 ...
myfile = Dir(strPath & "\*.xls")
...但随后重新使用相同的名称作为生成您尝试保存的每个 .txt 文件名称的基础 ...
FileName:=strPath & "\" & Replace(myfile, ".xls", ".txt")
我认为您可以将 objFile.Name 替换为那里,因为它应该匹配当前工作簿文件的名称...这意味着您的 。 txt 文件名每次通过 For Each
循环都会不同。
FileName:=strPath & "\" & Replace(objFile.Name, ".xls", ".txt")