Note: The other languages of the website are Google-translated. Back to English

Excelで複数のCSVファイルをXLS(X)ファイルにバッチ変換するにはどうすればよいですか?

CSVファイルをXlSまたはXLSXファイルに変換するには、[名前を付けて保存]機能を適用すると非常に簡単です。 ただし、フォルダから複数のCSVファイルをXLSまたはXLSXファイルに変換するには、XNUMXつずつ手動で保存するので時間がかかります。 ここでは、すべてのCSVファイルをフォルダーからXLS(x)ファイルにすばやくバッチ変換するマクロコードを紹介します。

CSVファイルをマクロコードを使用してXlS(X)ファイルにバッチ変換します


CSVファイルをマクロコードを使用してXlS(X)ファイルにバッチ変換します

複数のCSVファイルをXNUMXつのフォルダーからXLS(X)ファイルに変換するには、次の手順を実行します。

1.新しいワークブックを有効にして、を押します Altキー+ F11 開くキー アプリケーション向け Microsoft Visual Basic ウィンドウをクリックして インセット > モジュール。 スクリーンショットを参照してください:
docバッチ変換cvsxls 1

注意:変換するCSVファイルがすべて閉じていることを確認してください。

2.次に、以下のマクロコードを モジュール スクリプトを押して、 F5 コードを実行するためのキー。

VBA:CSVをXLSに変換

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlNormal
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

3.ポップアウトダイアログで、変換するCSVファイルを含む指定されたフォルダーを選択します。 スクリーンショットを参照してください:
docバッチ変換cvsxls 2

4。 クリック OK、選択したフォルダ内のすべてのCSVファイルがXLSファイルに変換されています。
docバッチ変換cvsxls 3

先端:CSVファイルをXLSXファイルに変換する場合は、以下のVBAコードを使用します。

VBA:CSVファイルをXLSXに変換します

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

シートの範囲をすばやく変換またはエクスポートして、XLS / Word / PDFまたはその他の形式のファイルを一度に分離します

通常、Excelは、範囲をCSVまたはExcelファイルとしてすばやくエクスポートまたは保存するオプションをサポートしていません。 ある範囲のデータをCSVまたはワークブックとしてExcelに保存する場合は、VBAマクロを使用してこれを行うか、範囲をクリップボードにコピーして新しいワークブックに貼り付けてから、ワークブックをCSVまたはワークブック。 Kutools for Excel Excelを拡張します 範囲をファイルにエクスポート 次の操作をすばやく処理したいExcelユーザー向けのユーティリティ:  クリックして 30・XNUMX日フル機能無料お試し!
docはセル範囲をファイルにエクスポートします
 
Kutools for Excel: 300 以上の便利な Excel アドインがあり、制限なしで無料で試すことができます 30 日。

関連記事:


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (38)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
逆のことをしたいのですが、XLSをCSVに変換します。 このスクリプトは機能しますか?
サブCSVtoXLS()
'UpdatebyExtendoffice20170814
Dim xFd As FileDialog
文字列としての薄暗いxSPath
文字列としての薄暗いxXLSFile
文字列としての薄暗いxWsheet
Application.DisplayAlerts = False
Application.StatusBar = True
xWsheet = ActiveWorkbook.Name
xFd = Application.FileDialog(msoFileDialogFolderPicker)を設定します
xFd.Title = "フォルダを選択してください:"
xFd.Show=-1の場合
xSPath = xFd.SelectedItems(1)

サブを終了
終了する場合
If Right(xSPath、1)<> "\" Then xSPath = xSPath + "\"
xXLSFile = Dir(xSPath& "* .xls")
xXLSFile <> ""
Application.StatusBar = "変換:"&xXLSFile
Workbooks.Open Filename:= xSPath&xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath&xXLSFile、 ".xls"、 ".csv"、vbTextCompare)、xlNormal
ActiveWorkbook.Close
Windows(xWsheet).Activate
xXLSFile = ディレクトリ
ループ
Application.StatusBar = False
Application.DisplayAlerts = True
End Subの
このコメントは、サイトのモデレーターによって最小化されました
サブConvertCSVToXlsx()



myfileを文字列として薄暗くする

Dim oldfname As String、newfname As String

薄暗いワークファイル

暗いフォルダー名を文字列として



Application.DisplayAlerts = False

Application.ScreenUpdating = False



'現在のファイルのキャプチャ名

myfile = ActiveWorkbook.Name



'作業するフォルダ名を設定します

folderName = "D:\ tmp \"



'フォルダ内のすべてのCSVファイルをループします

workfile = Dir(folderName& "* .CSV")

ワークファイル<>""

'CSVファイルを開く

Workbooks.Open Filename:= folderName&workfile

'古いCSVファイルの名前をキャプチャします

oldfname = ActiveWorkbook.FullName

'XLSXに変換

newfname = folderName&Left(ActiveWorkbook.Name、Len(ActiveWorkbook.Name)-4)&"。xlsx"

ActiveWorkbook.SaveAs Filename:= newfname、FileFormat:= xlOpenXMLWorkbook、CreateBackup:= True

ActiveWorkbook.Close

'古いCSVファイルを削除する

oldfnameを殺す

Windows(myfile).Activate

ワークファイル=Dir()

ループ



Application.DisplayAlerts = True

Application.ScreenUpdating = True



End Subの
このコメントは、サイトのモデレーターによって最小化されました
「ヒント:CSVファイルをXLXSファイルに変換する場合は、マクロActiveWorkbook.SaveAs Replace(xSPath&xCSVFile、 ".csv"、 ".xls"、vbTextCompare)で.xlsを.xlsxに変更する必要があります。」

これを試しましたが、Excelで結果のファイルを開くことができませんでした。 次のメッセージが表示されました。「ファイル形式またはファイル拡張子が無効なため、Excelでファイル'filename.xlsx'を開くことができません。ファイルが破損していないこと、およびファイル拡張子がファイルの形式と一致していることを確認してください。」

ただし、スクリプトは.xlsへの変換に成功しました。
このコメントは、サイトのモデレーターによって最小化されました
以前はその問題は見つかりませんでした。正しいコメントをありがとうございます。 先端を修正しました。
このコメントは、サイトのモデレーターによって最小化されました

このコメントは、サイトのモデレーターによって最小化されました
CSVからXLSへの優れたスクリプトをありがとうございます。 それは私の仕事にはるかに役立ちます
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、

スクリプトはすばらしいですが、セミコロンで区切られたcsvは変換されません。 それらの解決策を投稿していただけますか?

ありがとうございました
このコメントは、サイトのモデレーターによって最小化されました
申し訳ありませんが、ここでは解決策がありません。フォーラムに質問を投稿していただければ、他の誰かがお手伝いするかもしれません。 https://www.extendoffice.com/forum.html
このコメントは、サイトのモデレーターによって最小化されました
遅れるかもしれませんが、セミコロンのCSVファイルを変換する必要があるという問題が発生しました。これをコードに追加しましたが、これが誰かに役立つことを願って機能しました。

'Workbooks.Open Filename:= xSPath&xCSVFile'を変更します'Workbooks.Open Filename:= xSPath&xCSVFile、Delimiter:= ";"、Local:= True '
このコメントは、サイトのモデレーターによって最小化されました
私はファイル複数のcsvを複数のxlsに使用しましたが、間違ったxlsdecsvファイルがあります; 情報は分離されていますが、セル内で一緒になります。 これはどのように解決できますか?
このコメントは、サイトのモデレーターによって最小化されました
コードは、区切りのカンマcsvファイルをサポートできません。
このコメントは、サイトのモデレーターによって最小化されました
フォルダ名を付けると、プログラムは「検索に一致するファイルはありません」と言った。 ただし、フォルダには2,609個の.csvファイルがあります
このコメントは、サイトのモデレーターによって最小化されました
コードは区切りのコンマcsvファイルをサポートしていませんが、この場合のファイルはありますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、

素晴らしい記事-ありがとう! ほとんど私のために働きます。

問題は次のとおりです。パイプで区切られたcsvファイルがあります。 デフォルトのウィンドウ区切り文字(コントロールパネル/地域設定を使用)を「|」に変更しました。 そのため、Excelでcsvファイルを開くと、ファイルが開き、フィールドを直接読み取って列に正しく解析します。 私がしなければならないのは、xlsまたはxlsxとして保存することだけです。 私があなたのコードを見るとき、それはコードがすることであるはずです:それはフォルダ内のcsvファイルを開き、それらをxlsまたはxlsxとして保存し、そしてそれをループします。

問題は次のとおりです。これらのExcelファイルを開いても、パイプ区切り文字はまだ存在し、列に対して何も解析されません。 これは、Windows設定でパイプ区切りのデフォルト設定に変更する前と同じ動作でした。 したがって、ExcelはこれらのWindows設定を使用していないようです。 ファイルのコピーでパイプ区切り文字をコンマ区切り文字に置き換えることでこれを確認しました-XNUMXつのファイルのうち、パイプ区切り文字は解析されないままで、コンマ区切り文字は正常に変換されました。

そのExcelに組み込まれたコンマ区切りを見つけたり変更したりできる場所、またはコードにそれを行う方法があるかどうかについてのアイデアはありますか? 検索して置き換えてから保存する必要はありません...

ありがとう、HC
このコメントは、サイトのモデレーターによって最小化されました
Excelのパイプ区切り文字に基づいてデータを列に分割する場合は、Text to Columns関数を使用して、csvファイルをxlsに変換した後、データを分割します。
このコメントは、サイトのモデレーターによって最小化されました
コードがExcelファイルに役立つわけではありません。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、グーグルで利用可能な他のすべてのスクリプトを試した後、私のために働いた素晴らしいスクリプト。 必要な列へのテキスト操作を実行する行をさらに数行追加しました。 私は実際にシステムを自動化しているので、ダイアログボックスを開く代わりに、ローカルドライブ内のフォルダの場所を指定して、スクリプトを変更する方法を教えてもらえますか?
。 前もって感謝します
このコメントは、サイトのモデレーターによって最小化されました
Hi
テキストを列に実行するスクリプトを共有できますか?
宜しくお願いします
このコメントは、サイトのモデレーターによって最小化されました
グーグルで利用可能な他のすべてのスクリプトを検索した後の素晴らしいスクリプト。 私が実際にシステムを自動化しているので、ダイアログボックスを開くことを許可する代わりに、ローカルドライブ内のフォルダの場所を指定することによって、このスクリプトを変更する方法を誰かが助けることができますか? 前もって感謝します
このコメントは、サイトのモデレーターによって最小化されました
かっこいいコード。 非常に便利。 間違えなければ、.xlsxのコードは.xlsコードと同じように見えます。

この行:
ActiveWorkbook.SaveAs Replace(xSPath&xCSVFile、 ".csv"、 ".xls"、vbTextCompare)、xlWorkbookDefault

「.csv」、「。xlsx」、vbTextCompareなどである必要があると思います。
このコメントは、サイトのモデレーターによって最小化されました
上記のように、コードを変更しました。 これで、スクリプトは期待どおりに機能します。xlsxファイルが生成されます。
このコメントは、サイトのモデレーターによって最小化されました
いいえ、していません。 それでも、両方のバージョンでxlsと表示されます。
このコメントは、サイトのモデレーターによって最小化されました
このマクロは私のcsvファイルを表示しません
このコメントは、サイトのモデレーターによって最小化されました
このコードの小さな問題のXNUMXつは、csvを開いてxlsxとして保存すると、ある程度の精度(小数点以下の桁数)が失われる可能性があることです。
これを防ぐ方法は、開いた直後にすべてのセルを選択し、小数点以下の桁数を目的の量(個人的には15)に設定し、xlsxとして保存することです。

そうしないと、xlsxの詳細が元のcsvよりも低くなり(小数の精度が低くなり)、一部のアプリケーションで問題が発生する可能性があります。
このコメントは、サイトのモデレーターによって最小化されました
日付の列の形式がdd-mm-yyyyからdd/mm/yyyyに変更されます。このスクリプトが列の形式を変更しないようにする方法を教えてください。
どうもありがとう。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、バイパー、変換後、フォーマットを元に戻し、日付を選択し、右クリックしてコンテキストメニューから[セルのフォーマット]を選択します。[セルのフォーマット]ダイアログの[数値]タブで、[カテゴリ]リストの[カスタム]をクリックし、mm-dd-と入力します。 yyyyを右側のセクションのテキストボックスに入力します。 または、Kutools for Excelを使用している場合は、[日付形式の適用]を適用して、必要に応じて日付形式を変更します。
このコメントは、サイトのモデレーターによって最小化されました
素晴らしい記事。 変換されたすべてのファイルを新しい場所に保存するにはどうすればよいですか? コードを更新して送っていただけませんか。 ユーザーが宛先フォルダーを選択できるようにするようなものです。


感謝
このコメントは、サイトのモデレーターによって最小化されました
csvからxlsxの22行目にエラーがあります
エラーあり-ActiveWorkbook.SaveAsReplace(xSPath&xCSVFile、 ".csv"、 ".xls"、vbTextCompare)、xlWorkbookDefault
修正済み-ActiveWorkbook.SaveAsReplace(xSPath&xCSVFile、 ".csv"、 ".xslx"、vbTextCompare)、xlWorkbookDefault
このコメントは、サイトのモデレーターによって最小化されました
リマインダーをありがとう、私はそれを更新しました、もう一度ありがとう。
このコメントは、サイトのモデレーターによって最小化されました
この行で「オブジェクト変数またはブロック変数が設定されていません」というエラーが発生します。
xFd.Title = "/Users/ [my.name] / Documents / [myFolder]" >>これは、変換を実行しているコンピューター上の特定のフォルダーのパスです(フォルダーには多数のcsvファイルが含まれています) )。

私はここで何か間違ったことをしていますか?
このコメントは、サイトのモデレーターによって最小化されました
これは私のために働いていますが、ファイル拡張子は変更されていません。 任意のヒント?
このコメントは、サイトのモデレーターによって最小化されました
私も同じです。すべてのファイルは.csvのままです。
このコメントは、サイトのモデレーターによって最小化されました
選択したすべてのcsvファイルは新しいExcelファイルとして保存されており、元のファイル(csv)は変更されません。同じ内容の新しいExcelファイルが存在します。
このコメントは、サイトのモデレーターによって最小化されました
私も同じ問題を抱えていました。 ソースファイルに大文字(.CSV)の拡張子がある場合、それは機能しません。 22行目のコードで.csvを.CSVに置き換えるだけで、機能するはずです。 まあ、少なくとも私にとってはそうだった。
このコメントは、サイトのモデレーターによって最小化されました
XLSXバッチファイルルーチンにコードを組み込んで、データをセミコロンで別々の列に分割するにはどうすればよいですか? 共有されたコードは、ファイルを.csvから.xlsxに変換しますが、データを別々の列に分割しません。
このコメントは、サイトのモデレーターによって最小化されました
はい、動作しません。
このコメントは、サイトのモデレーターによって最小化されました
おはよう仲間

Adiciona a lo que hace el script、quisiera poder convertir inmediatamente el texto en columnas、porlaopciónqueno esdelimitadoporningúntipodecaracter、adicionallostamañosdelascolumnassondiferentes。 Vale la pena aclarar que si tomo cada archivo por separado yleaplicolaopcióndetextoencolumnas、bajoesaopciónlospuedo convertir sin problemas、abriéndolosunopor uno、pero si grabo esa macro y le aplico la misma macro a todos、in usandolaopciónde"USARREFERENCIAS RELATIVAS"、no hace el proceso bien、porque el graba lasposicionesdeladelimitacióndelarchivoqueuso de ejemplo、pero necesito que lo aplique nuevo a cada archivo、es decir、como si abri y lehicieramanualmentelaopcióndedelimitaciónynoapliquelosvaloresdeubicacióndelascolumnasidentificados en elarchivoejemplo。

Ya inserte esa opcion en este archivo、sin embargo pasa lo que indico en la lineas arriba、solo requiero saber como puedo hacer para aplicar la Conversion a cada archivo、aplicando la delimitacion del campo como su fuera unarchivonuevo。


Workbooks.Open Filename:= xSPath&xCSVFile
ActiveWorkbook.SaveAs Replace(xSPath&xCSVFile、 ".csv"、 ".xlsx"、vbTextCompare)、xlWorkbookDefault

ESTA PARTE ES LA QUE AGREGUE APLICANDO EL FORMATO DEL TEXTO A COLUMNAS

StartRow:= 1、DataType:= xlFixedWidth、FieldInfo:= Array(Array(0、1)、Array(18 _
、1)、Array(38、1))、TrailingMinusNumbers:= True
ActiveCell.Cells.Select
ActiveCell.Cells.EntireColumn.AutoFit
ActiveCell.Offset(1、0).Range( "A1")。Select
ActiveWorkbook.Save

HASTA AQUI AREGUE YO

ActiveWorkbook.Close
Windows(xWsheet).Activate
xCSVFile = ディレクトリ

ループ
Application.StatusBar = False
Application.DisplayAlerts = True
End Subの

No se si me hago explicar bien、pero esmiproblema。
ここにはまだコメントが投稿されていません
もっと読む
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護