使用 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")