編集:コメントに基づいてコードを更新しましたが、同じ症状が発生します。
編集 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 ファイルに分割する必要がありますか? ありがとう!