1

こんにちは、Excel スプレッドシートを txt ファイルに変換する際に問題に直面しています。

私がやりたいことは、すべての xls ファイルを 1 つのフォルダーに取り、それらを txt ファイルに変換できるマクロを作成することです。

現在取り組んでいるコード

Sub Combined()

  Application.DisplayAlerts = False

  Const fPath As String = "C:\Users\A9993846\Desktop\"
  Dim sh As Worksheet
  Dim sName As String
  Dim inputString As String

  With Application
    .Calculation = xlCalculationManual
    .EnableEvents = False
    .ScreenUpdating = False
  End With

  sName = Dir(fPath & "*.xls*")

  Do Until sName = ""
    With GetObject(fPath & sName)
      For Each sh In .Worksheets
        With sh
          .SaveAs Replace(sName, ".xls*", ".txt"), 42 'UPDATE:
        End With
      Next sh
      .Close True
    End With
    sName = Dir
  Loop

  With Application
    .Calculation = xlAutomatic
    .EnableEvents = True
    .ScreenUpdating = True
  End With
End Sub

しかし、期待どおりに機能していません。VBに関する知識はありません。手を差し伸べてくれる人はいますか?

4

2 に答える 2

4

以下のコードは、特定のフォルダー内のすべての Excel ワークブック ("xlsx" のテスト ファイル拡張子) を CSV ファイルに変換します。ファイル名は [ワークブック名​​][シート名].csv になります。つまり、「foo.xlsx」は「foo.xlsxSheet1.scv」、「foo.xlsxSheet2.scv」などになります。実行するには、プレーン テキスト ファイルを作成します。 、名前を .vbs に変更し、以下のコードをコピーして貼り付けます。パス情報を変更して実行します。

Option Explicit

Dim oFSO, myFolder
Dim xlCSV

myFolder="C:\your\path\to\excelfiles\"


Set oFSO = CreateObject("Scripting.FileSystemObject")
xlCSV = 6 'Excel CSV format enum
Call ConvertAllExcelFiles(myFolder)
Set oFSO = Nothing

Call MsgBox ("Done!")


Sub ConvertAllExcelFiles(ByVal oFolder)
Dim targetF, oFileList, oFile
Dim oExcel, oWB, oWSH

    Set oExcel = CreateObject("Excel.Application")
    oExcel.DisplayAlerts = False
    Set targetF = oFSO.GetFolder(oFolder)
    Set oFileList = targetF.Files
    For Each oFile in oFileList
        If (Right(oFile.Name, 4) = "xlsx") Then
            Set oWB = oExcel.Workbooks.Open(oFile.Path)
            For Each oWSH in oWB.Sheets
                Call oWSH.SaveAs (oFile.Path & oWSH.Name & ".csv", xlCSV)
            Next
            Set oWSH = Nothing
            Call oWB.Close
            Set oWB = Nothing
        End If
    Next
    Call oExcel.Quit
    Set oExcel = Nothing

End Sub

必要に応じて、ファイルの命名、エラー処理などを改善できます。

于 2013-06-17T08:41:37.147 に答える