1

Access VBA を使用して、フォルダーの場所にすべての .xls ファイルをテキストとして保存しようとしています。以下のコードにパッチを当てました。ただし、最初の Excel ファイルをテキストとして正常に保存するだけで、ハングしているように見えます。

私が望むものに似た何かを達成すると思うこの投稿をレビューしました: 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
4

1 に答える 1

2

xlApp.Visible = True発見した後に追加することによりSet xlApp = New Excel.Application、保存しようとしているファイルと同じ名前の既存のファイルを上書きするかどうかを Excel が判断するのを待っています。

これは、値をmyfileに一度だけ割り当てるために発生します...

myfile = Dir(strPath & "\*.xls")

...しかし、保存しようとする各.txtファイルの名前を生成するための基礎として同じ名前を再利用します...

FileName:=strPath & "\" & Replace(myfile, ".xls", ".txt")

現在のワークブック ファイルの名前と一致する必要があるため、そこにobjFile.Nameを置き換えることができると思います...つまり、.txtFor Eachファイル名はループ のたびに異なります。

FileName:=strPath & "\" & Replace(objFile.Name, ".xls", ".txt")
于 2015-07-15T18:22:34.510 に答える