• 締切済み
  • すぐに回答を!

複数のCSVファイルを自動でエクセルに変換したい

フォルダの中に、300近いCSVフォルダがあります。 ネットで探したマクロVBAでやってみたところ、一つのCSVファイルを選び、それをエクセルファイルに変換できました。 このマクロを使って、フォルダ内にあるすべてのCSVファイルを一気にエクセルに変換するには、どうしたらいいのでしょうか。 ご教授のほど、よろしくお願いいたします。 Sub CSVからXLSX() Dim varFileName As Variant varFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _ Title:="CSVファイルの選択") If varFileName = False Then Exit Sub End If Workbooks.Open Filename:=varFileName ActiveSheet.Cells.Copy ThisWorkbook.ActiveSheet.Cells ActiveWorkbook.Close SaveChanges:=False End Sub

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1196
  • ありがとう数1

みんなの回答

  • 回答No.1
  • keithin
  • ベストアンサー率66% (5278/7939)

空のブックを用意する 次のマクロを登録する sub macro1()  dim myPath as string  dim myFile as string  application.screenupdating = false  mypath = thisworkbook.path & "\"  myfile = dir(mypath & "*.csv")  do until myfile = ""   workbooks.open mypath & myfile   activeworkbook.saveas split(myfile, ".")(0), fileformat:=xlnormal   activeworkbook.close false   myfile = dir()  loop  application.screenupdating = true end sub CSVをイチイチ選択する代わりに、マクロブックをCSVのフォルダに保存する マクロを実行する。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早々に、ご回答いただきありがとうございました。 このマクロを実行すると、CSVフォルダのどこに保存されるのでしょうか。 どのように使うか教えていただけませんでしょうか。 せっかくお答えいただいたのに理解できなくてすみません。、

関連するQ&A

  • フォルダ内のExcelファイルを全てcsv変換

    初めまして。 現在Excelにマクロを組み込み、ボタンを押すと5行目以下が csvファイルとして出力されるというプログラムを使っております。 しかしながら、多数のExcelファイルでこの作業をする必要が生じました。 そのため、フォルダ内の全てのExcelファイルに同じこと (5行目以下をcsvファイルとして出力)をしたいのですが、 もしそのやり方をご存知でしたらお教えいただけませんでしょうか。 念のため現在使っているExcelマクロを記載致します。 Private Sub Workbook_Open() ActiveWindow.ScrollRow = 1 MsgBox "Workbook_Openイベントが発生しました。" Call AddMenu End Sub Sub AddMenu() Dim NewM As Variant, NewC As Variant Set NewM = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup) NewM.Caption = "変換ツール(&G)" Set NewC = NewM.Controls.Add With NewC .Caption = "csv書き出し(&R)" .OnAction = "henkan_conb" .BeginGroup = False .FaceId = 271 End With End Sub Sub henkan_conb() Sheets("sheet1").Select Rows("1:4").Select Selection.Delete Shift:=xlUp Row = 1 Do Until Cells(Row, 1) = "" Row = Row + 1 Loop If Cells(Row, 1) = "" Then Rows(Row).Select Selection.Delete Shift:=xlUp End If Range("A1").Select ActiveWorkbook.SaveAs Filename:= _ "C:\file.csv", _ FileFormat:=xlCSV, CreateBackup:=False End Sub

  • VB2010でCSVファイルを読み、配列に入れる

    ExcelVBAで、フォルダを選択しCSVファイルを表示⇒クリックで対象ファイルを選び配列に入れる次のプログラムを作りました。その後でデータを加工しグラフィック化してるのですが、VBAのグラフィック機能が遅いのでVB2010に変えようと思いいろいろやってみたのですが、どうもうまくいきません。 どなたか、VB2010ではどのようなプログラムになるのか、教えていただけないでしょうか。 'Excel VBA---------------------------------------- Sub CSVデータ() Dim xd(1000),yd(1000) 'フォルダを選ぶ ChDir ThisWorkbook.Path 'CSVファイルの一覧 pname = _ Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv" _ , FilterIndex:=1,Title:="開く",MultiSelect:=False) '対象ファイルをクリックで選ぶ If pname <> False Then Workbooks.Open Filename:=pname End If fname = ActiveWorkbook.Name 'CsVファイルのセルから配列へ移す nstart = 6 nend = nstart +500 k = 0 For i = nstart To nend '6行目から500行の2列、3列を読み配列に入れる k = k + 1 xd(k) = Cells(i, 2) yd(k) = Cells(i, 3) Next i End Sub

  • エクセルVBAでファイルをCSV保存の仕方

    エクセルのシートをCSVファイルに保存するため以下のようなマクロを書きました。 Sub Macro1() Cells.Select Selection.Copy Workbooks.Add ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\デスクトップ\Book1.csv", FileFormat _ :=xlCSV, CreateBackup:=False ActiveWindow.Close ThisWorkbook.Activate End Sub 一応これで保存できるのですが、自動記録でやったためファイルの名前が出てしまいました。 この部分をわたし以外の誰でも任意の名前をつけ、任意のフォルダーに保存できるように書き換えたいのです。 どのように記述すれば良いかお教えください。お願いします。

  • エクセルからCSVファイルに出力したい?

    エクセルのシートからマクロを使ってCSVファイルに出力したいです。 そこで調べたのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2376607 こちらの質問で以下のようなコードが参考になりました。 Sub Macro1() Dim myBook As String myBook = ActiveWorkbook.FullName myBook = Left(myBook, Len(myBook) - 3) & "CSV" ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:=myBook, FileFormat:=xlCSV ActiveWindow.Close False End Sub このコードではCSVのファイル名がエクセルシートのファイル名になってしまいます。 今回の質問ですが、CSVファイルを違う名前で保存するにはどのようにすればいいのでしょうか? (CSVファイルの名前は常にabc.csvで保存するものとします)

  • マクロを使用してCSVファイルの結合を行いたいのですが・・・

    エクセル2000を使用している初級者です。過去の質問の中から、素晴らしい結合のマクロを見つ けました。同一フォルダ内にあるファイルは見事に結合されました。ただ私が結合したいものは、 1時間で1ファイル、1日で1フォルダが作られており、フォルダが31個有ります。手作業で31個の フォルダをまとめるのも辛いので、1月分をまとめて結合するために、マクロの冒頭部分を私なり に色々手は加えてみたのですが、悲しいかな動きません。以下にコピーしますので、よろしくお願 い致します。又明日より出張のため、お礼が遅くなると思います。ご容赦下さい。 Sub Test() Dim Files, FilesCnt As Integer, i As Integer Dim cBook As Workbook, pBook As Workbook Files = Application.GetOpenFilename _ (FileFilter:="CsVFile(*.csv), *.csv", MultiSelect:=True) If IsArray(Files) Then Set pBook = Workbooks.Add(xlWBATWorksheet) FilesCnt = UBound(Files) For i = 1 To FilesCnt Workbooks.Open Files(i) Set cBook = ActiveWorkbook cBook.ActiveSheet.UsedRange.Copy With pBook.ActiveSheet .Cells(.Range("A65536").End(xlUp).Row, 1). _ PasteSpecial (xlPasteAll) End With Application.CutCopyMode = False cBook.Close Next i End If Set cBook = Nothing: Set pBook = Nothing End Sub

  • Excelのマクロでファイルを開くのダイアログをキャンセルしたときの挙

    Excelのマクロでファイルを開くのダイアログをキャンセルしたときの挙動についてです。 マクロで次のような記述をしています。 Sub tekitou() Dim vntFileName As Variant vntFileName = _ Application.GetOpenFilename( _ FileFilter:="エクセルファイル(*.xls),*.xls" & _ ",CSVファイル(*.csv),*.csv" _ , FilterIndex:=1 _ , Title:="ファイルを開く" _ , MultiSelect:=False _ ) If vntFileName <> "False" Then Workbooks.Open Filename:=vntFileName End If うんたらかんたら End Sub このとき、ファイルを開くのダイアログをキャンセルしたときでも「うんたらかんたら」の部分が実行されてしまいます。 キャンセルを押したときにそこでそれ以降をスキップして何もなかったかのような挙動をさせるためにはどのような記述をすればいいのでしょうか?

  • エクセルと同じファイル名でcsvを作成するマクロ

    エクセルからCSVファイルをYYMMDD付でマクロを使って 作ろうとしていますが拡張子の「.xls」がどうしても残ってしまいます。 例えば、「test.xls」が「test.xls070326.csv」のように。 これを「test070326.csv」とするにはどうしたらよいでしょう。 今のコードはつぎのようにしています。 Sub test1() Dim flname As Variant Dim wb As Workbook flname = ActiveWorkbook.Name + CStr(Format(Date, "yymmdd")) ActiveSheet.Copy ActiveSheet.SaveAs Filename:=flname, _ FileFormat:=xlCSV ActiveWindow.Close savechanges:=False ActiveWorkbook.Close End Sub これでもCSVとしては使えるのですが、気持ちがすっきりしません。 どなたか正解をお願いします。

  • エクセル・エラーを出さずに複数ブックをクローズしたい

    複数のファイルを閉じたいのですが、 Sub 必要ファイルを閉じる() Workbooks("あ.xls").Close SaveChanges:=False Workbooks("い.xls").Close SaveChanges:=False Workbooks("う.xls").Close SaveChanges:=False Workbooks("え.xls").Close SaveChanges:=False End Sub 開いていないファイルがあるとエラーで止まってしまいます。 この4つのファイルに該当するものがあれば、閉じる というマクロを組みたいです。 アドバイス、宜しくお願いします。

  • ExcelVBAの詳しい方教えてください。

    下のマクロが書かれているエクセルファイルがあるフォルダー内のエクセルファイルを全て印刷するマクロを組んだつもりですが、上手く動きません。 結構悩んだのですが、自力で解決できそうに無いので、どなたか?助けていただけないでしょか? 宜しくお願いいたします。 If .ExecuteSortBy:=msoSortByFileName,SortOrder:=msoSortOrderAscending) > 0 Then   For icount = 1 To .FoundFiles.Count Workbooks.Open FileName:=.FoundFile(icount) ActiveSheet.PrintOut ActiveWindow.Close savechanges:=False Next icount Else MsgBox "検索条件を満たすファイルはありません。" End If

  • CSVファイルの保存方法をお教えください

    Microsoft Office Personal 2010を使っています。 HogeHoge.csv をエクセルで開きます、この時シートの表示はHogeHoge.csv のままです 平均計算などの処理後このファイルを閉じようとすると下記のようなメッセージが出ます がこの時[はい]をクリックして閉じると正常に保存されるのですが マクロで保存をしようとするとなかなか上手くいきません。 A列の日付けが 2014/1/15 10:30 が 1/15/2014 10:30 となってしまいます。 HogeHoge.csvには、CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか? ・このまま保存するには、[はい]をクリックします。 ・機能を保存するには、[いいえ]をクリックしてから、最新のExcelの形式で保存します。 とでます   下記のようなマクロですがどのようにすれば良いのか分かりません   どうぞよろしくお願いいたします。 Sub 保存終了() ChDir "D:\DATA\BackT" ActiveSheet.SaveAs Filename:="D:\DATA\BackT\HogeHoge.csv", FileFormat _ :=xlCSV, CreateBackup:=False If Workbooks.Count = 1 Then Application.DisplayAlerts = False Application.Quit Else: ActiveWorkbook.Close False End If End Sub

専門家に質問してみよう