お世話になります。
大量のCSV(.csvファイルをExcel(.xls)ファイルに変換したい
と考えております。
リネームソフトを使って、(.csv)⇒(.xls)の一括変換を
したところ、拡張子は確かに.xlsに変換されたのですが、
中身はCSVのままとなっておりました。
(↑ファイル名とシート名が同期を取っているので)
このCSVを確実にエクセル形式へと変換したいのですが、
どなた様かいいお考えをお持ちでしたら教えてください。
ググってみたところ、そういったアドインがあるのですが、
できれば費用をかけずに行いたいです…。
No.5ベストアンサー
- 回答日時:
こんにちは。
すでに、マクロが1つ出ているようですが、私も作ってみました。
これは、ファイルをマルチセレクトして、そのファイル群を、Excelのマクロにより、一気に、CSV から XLS(Excel標準フォーマット)変換するマクロです。出来上がったら、Explorer 等で、確認してみてください。
>アドインがあるのですが、
私の個人的な意見ですが、この程度のものは、アドイン化すべきものではありませんから、よほど付加価値をつけないと公開用のアドインにはなりませんが、一般的にみて、アマチュアの作ったアドインは、押しなべて、あまり出来の良いものが少ないように思います。ですから、なるべく、一般のマクロで解決するように望みます。
'---------------------------------------------------
'<標準モジュール>
Sub CSV2XLS()
'CSV を XLS に変換するマクロ
Dim myArray() As String
Dim FileName As Variant
Dim fn As Variant
Dim xlFileName As String
Dim xlFileBaseName As String
Dim TextLine As String
Dim FileNo As Integer
Dim i As Long
Dim k As Long
'基本となるフォルダ
'BASE_DIR=""なら、マクロのあるブックと同じ場所のフォルダ
Const BASE_DIR As String = ""
If BASE_DIR <> "" Then
ChDir BASE_DIR
Else
ChDir ThisWorkbook.Path
End If
FileName = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv", MultiSelect:=True)
If VarType(FileName) = vbBoolean Then
Exit Sub
End If
Application.ScreenUpdating = False
For Each fn In FileName
On Error GoTo NextStatus
With Workbooks.Open(fn)
xlFileName = Mid$(fn, 1, InStrRev(fn, ".") - 1) & ".xls"
Do
k = k + 1 '同名の時枝番をつける
If k > 3 Then Exit Do
If Dir(xlFileName) = "" Then
.SaveAs xlFileName
xlFileBaseName = Mid$(xlFileName, InStrRev(xlFileName, "\") + 1)
Workbooks(xlFileBaseName).Close False
k = 0
Exit Do
Else
xlFileName = Mid$(fn, 1, InStrRev(fn, ".") - 1) & "_" & CStr(k) & ".xls"
End If
Loop
End With
NextStatus:
Next fn
Application.ScreenUpdating = True
MsgBox "終了しました。",64
End Sub
'---------------------------------------------------
No.6
- 回答日時:
#5のWendy02です。
コードに間違いがありましたので、訂正を出しておきます。
真中辺りに、以下のようなコードがあります。
On Error GoTo NextStatus
× With Workbooks.Open(fn) '間違い
↓
On Error GoTo NextStatus
With Workbooks.Open(fn, Format:=2) '正解
でした。
No.4
- 回答日時:
>リネームソフトを使って、(.csv)⇒(.xls)の一括変換を
したところ、拡張子は確かに.xlsに変換されたのですが、
中身はCSVのままとなっておりました。
これにはコンピュターのファイルの拡張子やファイル形式の知識の
欠如を露呈しています。勉強してください。
>をExcel(.xls)ファイルに変換
エクセルのメニューのファイルの開くで読み込ませ、名前をつけて保存すればよい。
エクセルをもっていないという前提ですか。ならば質問に書くべきです
オープンオフィスでも入手するとか。
エクセルを通さずに
CSV-->ソフト--->エクセル形式ファイル
の(エクセルかワークス?以外の)ソフトは素人では作れません。
>確実に
この意味はわかりません。不必要な文章部分では。
>大量の
エクセルの行数制限以上のものは変換は難しい。
No.3
- 回答日時:
エクセル本体でマクロを使って出来ます。
「新しいマクロの記録」で、やりたい事を手作業しながらマクロに記録し、記録したマクロを手直しすれば良いのです。
例えば1個のファイルに対しての手順をマクロに記録し、そのマクロを手直しし、100個分繰り返すように書き換えるなどすれば良いのです。
以下のマクロは「新しいマクロの記録」を使って「CSVファイルを開いて、ファイル名とシート名が同期を取っているのをSheet1に変えて、Sheet2とSheet3を追加して、XLS形式で名前を付けて保存して、ファイルを閉じる」と言う操作を記録した物です。
ファイル名部分を変数にしてこのマクロを繰り返し呼ぶとか、必要なだけコピーペーストして全ファイル分だけ繰り返すとか、改造して使ってみて下さい。
Sub Macro1()
Workbooks.OpenText Filename:="CSVファイルがあるフォルダ\CSVファイル名.csv", StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(1, 1)
Sheets("CSVファイル名").Select
Sheets("CSVファイル名").Name = "Sheet1"
Sheets.Add
Sheets("Sheet2").Select
Sheets("Sheet2").Move After:=Sheets(2)
Sheets.Add
Sheets("Sheet3").Select
Sheets("Sheet3").Move After:=Sheets(3)
ActiveWorkbook.SaveAs Filename:="CSVファイルがあるフォルダ\CSVファイル名.csv", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
End Sub
No.1
- 回答日時:
>CSVを確実にエクセル形式へと変換したいのですが、
CSVというのは、テキストファイルです。
拡張子だけを変更してもエクセルファイルにはなりません。
基本的には、CSVファイルをエクセルで読み込んでエクセル型式で保存する事になります。
一括(連続)処理するなら、VBAで処理する事になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) Excelについて。 Excelからcsv変換したいのですが、 やり方はファイル→名前をつけて保存→ 7 2022/07/27 01:10
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) エクセルVBA 既存エクセルを開きその中のシートとしてCSVファイルを開く 3 2023/05/31 13:11
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
エクセルでcsvファイルを開いて...
-
Excelのマクロファイルを開くと...
-
PowerPoint 2002でファイル名を...
-
vbaでボタンをクリックして上書...
-
エクセルファイル名に更新日時...
-
エクセル UserForm 呼び出しで...
-
複数のexcelのファイルを一括で...
-
ExcelブックをGoogleスプレッド...
-
パスワード保護されたExcelファ...
-
Windows10でコマンドプロンプト...
-
カンマ区切りのCSVファイルから...
-
エクセルのマクロについて教え...
-
現在のブックを閉じないで、マ...
-
windowsでテキストファイルの各...
-
VBSを使用し、指定フォルダ内の...
-
Gitについて質問。 クローンし...
-
Excel VBA コードを教えてくだ...
-
パス名に2バイト文字(マルチバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
Wordで差込印刷した後に別々の...
-
ExcelブックをGoogleスプレッド...
-
Excel csv保存 列数が異なる場...
-
エクセル UserForm 呼び出しで...
-
エクセルファイル名に更新日時...
-
サブフォルダから部分一致のエ...
-
マクロ実行後、表示がおかしくなる
-
EXCEL 検索時の設定
-
PowerPoint 2002でファイル名を...
-
実行時エラー52
-
エクセルのマクロで行と列の削...
-
複数のexcelのファイルを一括で...
-
エクセルでcsvファイルを開いて...
-
VBAでマクロを使って、マクロ無...
-
For~Nextルーチンで最初の1回...
-
大量のCSVファイルをExcel形式...
-
vbaでボタンをクリックして上書...
-
エクセルの保存履歴を残す方法
おすすめ情報