• ベストアンサー

大量のCSVファイルをExcel形式に変換する

お世話になります。 大量のCSV(.csvファイルをExcel(.xls)ファイルに変換したい と考えております。 リネームソフトを使って、(.csv)⇒(.xls)の一括変換を したところ、拡張子は確かに.xlsに変換されたのですが、 中身はCSVのままとなっておりました。 (↑ファイル名とシート名が同期を取っているので) このCSVを確実にエクセル形式へと変換したいのですが、 どなた様かいいお考えをお持ちでしたら教えてください。 ググってみたところ、そういったアドインがあるのですが、 できれば費用をかけずに行いたいです…。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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 '---------------------------------------------------

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

#5のWendy02です。 コードに間違いがありましたので、訂正を出しておきます。 真中辺りに、以下のようなコードがあります。  On Error GoTo NextStatus × With Workbooks.Open(fn) '間違い ↓ On Error GoTo NextStatus  With Workbooks.Open(fn, Format:=2) '正解 でした。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

>リネームソフトを使って、(.csv)⇒(.xls)の一括変換を したところ、拡張子は確かに.xlsに変換されたのですが、 中身はCSVのままとなっておりました。 これにはコンピュターのファイルの拡張子やファイル形式の知識の 欠如を露呈しています。勉強してください。 >をExcel(.xls)ファイルに変換 エクセルのメニューのファイルの開くで読み込ませ、名前をつけて保存すればよい。 エクセルをもっていないという前提ですか。ならば質問に書くべきです オープンオフィスでも入手するとか。 エクセルを通さずに CSV-->ソフト--->エクセル形式ファイル の(エクセルかワークス?以外の)ソフトは素人では作れません。 >確実に この意味はわかりません。不必要な文章部分では。 >大量の エクセルの行数制限以上のものは変換は難しい。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答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

noname#17454
noname#17454
回答No.2

エクセルはお持ちではないのですか エクセルで読み込めるはず また フリーのオープンオフィスでも 可能

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>CSVを確実にエクセル形式へと変換したいのですが、 CSVというのは、テキストファイルです。 拡張子だけを変更してもエクセルファイルにはなりません。 基本的には、CSVファイルをエクセルで読み込んでエクセル型式で保存する事になります。 一括(連続)処理するなら、VBAで処理する事になります。

関連するQ&A