2

編集:コメントに基づいてコードを更新しましたが、同じ症状が発生します。

編集 2: コードを再度更新しましたが、.xlsx ファイルのディレクトリで動作することがわかりました。すべての .xlsm ファイルを .xlsx ファイルに変換してマクロ/コードを削除すると、コードはうまく機能します。この問題は局所的すぎる可能性があります。

今日、.xlsx ファイルのフォルダーをループして、すべてのシートをタブ区切りの .txt ファイルにエクスポートする方法を学びました。私のより大きな目標は、.xlsm ファイル (マクロがすべて私のマシンにあるわけではありません) のフォルダーをループ処理し、データ ワークシートを .txt ファイルに書き込むことです。

これが変更されたコードです。

Sub exportsSheetsToTextForAll()

    Application.AutomationSecurity = msoAutomationSecurityForceDisable

    excelFiles = Dir(ThisWorkbook.Path & "\" & "Payout data*.xlsm")
    fromPath = ThisWorkbook.Path

    Do While Len(excelFiles) > 0
        Debug.Print Files
        Set oWb = Workbooks.Open(Filename:=fromPath & "\" & excelFiles)
        Application.Run "exportSheetsToText", oWb
        oWb.Close SaveChanges:=False
        excelFiles = Dir
    Loop

End Sub

Sub exportSheetsToText(iWb As Workbook)

    For Each ws In iWb.Worksheets
        ws.Copy
        Set wb = ActiveWorkbook
        textFile = Left(iWb.FullName, InStr(iWb.FullName, ".") - 1) & "-" & ws.Name & ".txt"
        wb.SaveAs Filename:=textFile, FileFormat:=xlText
        wb.Close SaveChanges:=False
    Next ws
End Sub

.xlsm ファイルの構造のため、最初の質問に対する回答を修正しました。各 .xlsm ファイルには、クエリ エントリ用のセルとマクロ用のボタンを含むデータ クエリ ワークシート ("REQUEST_TABLE") があります。クエリを実行すると、エクスポートするデータを含む新しいシート ("Sheet1"、"Sheet2" など) が生成されます。

マクロを実行するexportAllSheetsToText()と、最初のワークシートが開きますが、データ クエリ ワークシート ("REQUEST_TABLE") から始まり、タブ区切りのテキスト ファイルに保存され、すべてのワークシートを処理せずに停止します。ディレクトリ内のすべてのワークブックとワークシートをループするための元のマクロと同様に、マクロはすべてのシートを処理すると考えました。

.xlsm ファイルでマクロを実行すると何が変わりますか? 最初にこれらのワークシートを独自の .xlsx ファイルに分割する必要がありますか? ありがとう!

4

0 に答える 0