• ベストアンサー

CSVファイルをEXCELに変換の自動化作業

CSVファイルをEXCELに変換の自動化作業 {CSVファイルをEXCELに変換するため、 excel  ツールバーよりデータ(D)→外部データの取り込み(D)→テキストファイルのインポート→ファイルの種類変更→全てのファイル→○○.csvのファイル指定→“,”の区切り選択、、ウィザードに従って変更し次へで進む→A1が指定されるのでそのまま完了→CSVがEXCELファイルに変換された。 参照したabc1.csvの名前に対して新しいabc1.xlsとなずけて登録する。これらの作業をMYドキュメントのhenkan ホルダーに入っているCSVファイルに同様に作業して同じくhenkan ホルダーに入れる。} 上記の{ }内の作業を何か,excelのVBAのマクロのようなもので実行することはできませんか。 やり方を教えてください。

  • taktta
  • お礼率72% (1031/1430)

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

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

もともと、CSVとはカンマ区切りのはずですから、そうではないということなら、このコードは、違っています。こういう質問系掲示板は、質問者が分らない部分をお助けするような形で出来上がるものだと思いますので、回答者の回答を最初から否定するような発言は控えていだきたいと思いました。なお、フォルダーの中を一気に変換してしまうようなコードは、必ず変換後の様子を確認してからでなくてはなりませんので、それを確認していただくつもりでした。 私自身は、ここのカテゴリで、私は、一ゲンではありませんので、後々のためにコードを掲示しておきます。以下は、私が考えていたコードであって、その処理後の状態を保証するものではありません。 '<標準モジュール推奨> Sub DirectryCSV2XLS()   Dim myCSVFnames() As String   Dim myCSVFname As String   Dim xlFileName As String   Dim i As Long   Dim j As Long   Dim n As Variant   Dim msg As String '=====================================   '以下 フォルダー要設定   Const MY_FOLDER As String = ""C:\Documents and Settings\<User>\My Documents\" '=====================================   If Left$(MY_FOLDER, 1) <> "\" Then MsgBox "フォルダーの設定の最後は、「\」が必要です。": Exit Sub   If Dir(MY_FOLDER, vbDirectory) = "" Then _    MsgBox "そのフォルダーは存在しません。", vbCritical: Exit Sub     myCSVFname = Dir(MY_FOLDER & "*.csv")   Do While myCSVFname <> ""    ReDim Preserve myCSVFnames(i)    myCSVFnames(i) = myCSVFname    i = i + 1    myCSVFname = Dir()   Loop   If i = 0 Then MsgBox MY_FOLDER & " には、CSVファイルが存在しません。", vbCritical: Exit Sub   Application.ScreenUpdating = False   Application.DisplayAlerts = False   For Each n In myCSVFnames    xlFileName = Mid$(n, 1, InStrRev(n, ".csv")) & ".xls"    If Dir(MY_FOLDER & "\" & xlFileName) = "" Then      With Workbooks.Open(MY_FOLDER & "\" & n, Format:=2)       .SaveAs MY_FOLDER & xlFileName       Workbooks(xlFileName).Close False       j = j + 1      End With    End If   Next n   Application.DisplayAlerts = True   Application.ScreenUpdating = True   If i <> j Then msg = "既に" & CStr(i - j) & "個のCSV ファイルは、XLSに変換されています。"   MsgBox i & "個のCSVの内、" & j & "個のファイルをXLSに変換しました。" & vbCrLf & msg End Sub

taktta
質問者

お礼

自分が何もわからないのに、便りすぎ失礼な発言申し訳ない、 回答にはとても感謝しています。

taktta
質問者

補足

4個ほど質問があります。Q(1)などで示す。 素人の質問でもうしわけないが、よろしくお願いします。 <標準モジュール推奨> Sub DirectryCSV2XLS()     '以下 フォルダー要設定   Const MY_FOLDER As String = ""C:\Documents and Settings\<User>\My Documents\" ---------------------------------------- Q(1)””の対応が、先頭2つ、最後1つは先頭1つが正しいのですか。  ""C:\Documents and Settings\<User>\My Documents\" ------------------------------------------   If Left$(MY_FOLDER, 1) <> "\" Then MsgBox "フォルダーの設定の最 ------------------------------------------------------ Q(2) Left$(MY_FOLDER, 1) <> "\" は、Right$ですね また次のif分のTHENの次の_は続いているという意味ですか。     For Each n In myCSVFnames Q(3)  In myCSVFnames 他のmyCSVFnamesは(i)が付いていてここは付いていないが、これはいいのですね。(私もいいと思いますが念のため)       If Dir(MY_FOLDER & "\" & xlFileName) = "" Then      With Workbooks.Open(MY_FOLDER & "\" & n, Format:=2)       .SaveAs MY_FOLDER & xlFileName   Q(4)Withというのは何ですか、     .SaveAs の前の.は何ですか。     

その他の回答 (8)

回答No.9

この質問は、昔から繰り返されてますね。 マクロにしてもVBAにしてもコーディングの手間が必要な為だと思われます。 自分で使う用途で作りましたが、使えるか試してみてください。 http://blog.labo-miya.com/rnote.php?u=prog/20060208.htm 機能  CSVファイルをドラック&ドロップすると、列をすべて文字型にしてExcelが開かれ、同名の.xlsファイルを作成します。  一括で処理は出来ませんが、やってる事は同じです。  Win2000+Excel2000でしか試してないので他の環境で動くかどうか?

参考URL:
http://blog.labo-miya.com/rnote.php?u=prog/20060208.htm
taktta
質問者

お礼

ご回答どうもありがとうございました。

taktta
質問者

補足

私の利用の場合は、日付けらしきデータは日付けとして表現してもらわなくてはいけないのですが。

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

こんにちは。Wendy02です。 >前よりやりにくくなりました。 >よく考えてみれば、ひとつずつ開いてXLSに変えて保存したほうがはやそうです。 そうですか。とても残念な対応の仕方です。どうぞ、ひとつずつ開いて変換してください。こちらは、手を引かせていただきます。

taktta
質問者

お礼

意味がわかりましたのでこの補足は削除します。

taktta
質問者

補足

ANo.8のコードの中で Then MsgBox "フォルダーの設定の最後は、「\」が必要です。": とある フォルダーの設定の最後という意味がどういうことなのかわかりません。 (フォルダ名なら記号¥はつけられないし、説明をお願いしたいのですが、よろしくお願いいたします。まだコードは実行していません。自分でまずコードの意味を理解したいと思います。

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

#4のWendy02です。 >1列目に表示され、 すみません。コードが間違っていました。(^^; 真中辺りに、以下のようなコードがあります。  On Error GoTo NextStatus × With Workbooks.Open(fn) '間違い ↓ On Error GoTo NextStatus  With Workbooks.Open(fn, Format:=2) '正解 でした。 元のほうにも訂正いれておきましたので、恐れ入りますが、もう一度試してみていただけますか?

taktta
質問者

補足

今度はダイアログが,MYDOCのものがでてきて、前よりやりにくくなりました。 更にXLSの内容も、”.”カンマでくぎられているだけ。 よく考えてみれば、ひとつずつ開いてXLSに変えて保存したほうがはやそうです。 もともとめざしていたのは 、マクロを実行すれば自動的に同じフォルダのものが自動的に変換されることだが、このまくろはひとつずつ、操作者がクリックしないとだめです。

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.5

>abc1.csvをExcelのアイコンに重ねるというのは、意味がよくわかりません。 >どういう画面状態でExcelプログラムはどういう状態でしょうか。 アプリケーション本体のアイコンもしくはショートカットにabc1.csvをドラッグして、abc1.csvをExcelで開くという意味です。 ファイルをデフォルトでリンクされていない特定アプリケーションで開くときの常套手段であるため、「Excelのアイコンに重ねる」と単純に書いてしまいました。たとえば、Word書類を一太郎で開く場合、html書類をエディタで開く場合、csvをWordで開く場合など(ほかいろいろ)に使用します。そのため、頻繁に使用するアプリケーションのショートカットのコレクションを作成しておきます。ショートカットを作成していないときには、エクスプローラ表示を使用すれば簡単にアプリケーションにアクセスできます。

taktta
質問者

補足

ショートカットというのはExcelのショートカットのことですか。 その場合、CSVをドラッグしても何もならなかった。 拡張子csvのEXCELへの関連付けでもするんですか。

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

こんにちは。#2のWendy02です。 とりあえず、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1853661  または、 http://security.okwave.jp/kotaeru.php3?q=1853661 の#5 の私のコードを試していただけませんか? 一気にxls ファイルに変換しまいますので、とりあえず、数ファイル選んで、どのような上がりになるか調べてみてください。もし、そのまま使えれば、それに越したことはありません。 こちらは、「テキストファイルのインポート」を使用しておりませんので、もしかしたら、支障があるかもしれません。その場合は、新たに書き直します。

taktta
質問者

補足

コードを入れてためしてみました。マクロ起動後、CSVファイルを選択すると確かにXLSという名前のファイルが、対応してできますがその内容をみると、” 1:テキスト情報,MMM-MNT,010.010.xxx.xxx,tanashi,00:00:0e:fa:69:d3,,Text,9/26/2002 18:48というのが1列目に表示され、本来”,"の区切り毎に別列に表示したいのが、そのようになっていません。

回答No.3

マクロを使えばできます。 処理手順は次のようになります。 (1) Dir関数で指定したフォルダのCSVファイル名を取得する。 (2) Sheetをクリアする。 (3) CSVファイルを外部データの取込でSheetに取り込む。 (4) Sheetを名前を付けて保存する。(Excel形式で) (5) Dir関数で次のCSVファイル名を取得する。 (6) 次のCSVファイル名が取得できたら(2)に戻る。 (7) 処理終了

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

こんばんは。 おっしゃっていることが、私の思っていることと合っていれば、マクロを作ってみます。たぶん、検索すれば出てくるのでしょうけれども、それが目的にかなったものかどうかは、判別できないと思います。 >→外部データの取り込み(D) >→テキストファイルのインポート これを使わなくてはならない理由があるわけですね。.csv ファイルをクリックして開いてしまうと、一部の数字などに自動変換機能があって、違うものになってしまうこと。 もう1つは、 >MYドキュメントのhenkan ホルダーに入っているCSVファイル は、かなり多くあること。 ということでしょうか?そういう理由なら、マクロはやむを得ないと思います。 なお、VBA Excel97 以降となりますが、Excel 97 には、機能的に足りない部分がありますので、それ以降のものとコードとは違いますので、私は、自信がありません。 それと、この場合は、OS のVersion とExcelのVersion は、明示したほうが作りやすいかもしれません。

taktta
質問者

補足

OS のVersion:w-2000 ExcelのVersion :Excel 2000 ファイル:毎月20個処理 自動でクリック一発でできれば、もし可能ならすごいこと。

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.1

>VBAのマクロのようなもので実行することはできませんか 「VBAのマクロのようなもので実行」しなければならない理由がある場合には見当はずれの答えになってしまいますが、abc1.csvをExcelで開き、abc1.xlsで保存というだけであれば、abc1.csvをExcelのアイコンに重ね、ExcelのBookとして保存するだけでよいような気がします。

taktta
質問者

補足

abc1.csvをExcelのアイコンに重ねるというのは、意味がよくわかりません。 どういう画面状態でExcelプログラムはどういう状態でしょうか。

関連するQ&A

  • CSVをExcelに変換したい

    お世話になります。 CSVファイルをExcelファイルに変換する場合、CSVファイルをExcelで開いて拡張子を「xls」もしくは「xlsx」を指定して保存すればよいかと思いますが、PCにExcelがインストールされてない環境の場合、Excelに変換することは不可能でしょうか。 今回、Accessにてツールを作成し、CSV(カンマ区切り)のデータを読み込もうとしておりますが、そのデータの中には単語の中にカンマが含まれているものがある為、普通にCSVをインポートしようとすると、ズレてしまいます。 なので、インポートする前準備としていったんExcelに変換したいと考えているのですが。。そのPCにExcelがインストールされてないと、やはり変換することは出来ないでしょうか。 もしくは、カンマ区切りのCSVファイルをタブ区切りに変換したりすることは出来ますでしょうか。 ご教授の程、宜しくお願い致します。

  • EXCELで保存しているファイルをCSV(カンマ区切り)にしたい

    EXCELで作成されたファイル(1)(拡張子:xls)をCSV(カンマ区切り)のファイル(2)(拡張子:csv)にしたいのですが、方法として、(1)をEXCELで開き、CSV(カンマ区切り)で保存し、(2)を作成する方法しかないのでしょうか? 例えば、DOSのコピーコマンドなどで変更する方法や、エクスプローラー上で拡張子を変更する方法などなど。 できれば、画面を開いたり、閉じたりしたくない(自動で変換させたい) 宜しくお願い致します。

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

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

  • エクセルデータからCSVファイルへの変換について

    現在エクセルファイルにあるデータをCSVファイルへ変換する作業(エクセルでデータを作成して、保存時にCSVファイルを選択)をしているのですが、以下の例の場合うまく変換ができません・・・。 基本的な質問かもしれませんがどなたかご存知でしたら教えていただけると助かります。 よろしくお願いします。 【例】         (エクセル) ⇒  (CSV) うまくいく   12345     12345 うまくいかない 01234     1234 上記のようにエクセル上は文字列で管理されている ケースだとCSVファイルに変換した時数列に変換 され、上記例のうまくいかないケースのように 頭に0がある場合CSVだと0が消えてしまいます。 よろしくお願いします。

  • csvをxlsに変換する方法を教えてください

    CSVファイルをXLSに変換する方法を教えてください。 「名前を付けて保存」で拡張子をcsvからxlsに指定して保存したものを開くとデータが”、”で区切られただけで、1列の形にごちゃごちゃデータが詰まった表示になってしまいます。最初に開いた形でそのままxlsの形にしたいのですが何か方法はありますでしょうか。 エクセルのバージョンは2003です。 よろしくお願い致します。

  • ExcelでのCSVファイルの編集について、

    ExcelでのCSVファイルの編集について、 オートフィルタ機能を使いたいため、 ExcelでCSVファイルの編集しようとしているのですが、ちょっと苦戦しています。。。 私が試してみたこと 1.もとのCSVファイルの拡張子を○○.csv → ○○.txtに変更。   ↓ 2.Excelの「開く」からその○○.txtを読み込む。   ↓ 3.テキストファイルウィザードに従い、   1「カンマやタブなどの区切り文字によって~ 」にチェック   2「区切り文字」→ カンマ、「文字列の引用符」 → "   3「列のデータ形式」 → 文字列 ※090などの数字を、90と先頭の0を消されないように 上記のような手順でCSVファイルを取り込み、編集を終え、 保存する時は   「○○.txtにはテキスト(タブ区切り)と互換性のない機能が含まれている可能性があります。    この形式でブックを保存しますか?」 → このまま保存するため「はい」を選択 これでバッチリOK!…かと思われたのですが、 元の編集前の○○.txt は"名前","ヨミ","電話番号1", …… ""とカンマ区切りであったのが、 編集後の○○.txtは名前 ヨミ 電話番号1  …… タブ区切り(?) となってしまっています。 (CSVファイルとしてはタブ区切りでも問題ないのでしょうが…) どうすれば元のカンマ区切りの形式のまま保存できますでしょうか。 アドバイスよろしくお願い致します。

  • XLSファイルをCSVファイルに変換してエクセルで読み込ませたい

    こんにちは。シグマリオン1の連絡先に入力していたファイルをポケットエクセルにコピーしてPxlcsvファイル(Pxlファイル?)で保存しました。それを、XLSファイルに変換して、ノートパソコンにコピーしました。そのXLSファイルをCSVファイルにしてエクセル又は、Outlookで読み込ませたいのですが、どうしたらいいのでしょうか?教えて下さい。宜しくお願いします。

  • エクセルファイルをCSVファイルに変換する方法

    初歩的な質問ですいません。 時間のある方教えてください。 今、エクセルで保存しているものをCSVファイルへ変換するマクロを教えていただきたいのですが、 たとえばマクロを実行すると waka.xlsというファイルが、 waka.csv になるというだけなのですが、よく分からないので よろしくお願いします。

  • CSVファイルを読んでシートに書き込む方法

    エクセルのマクロ(VB6.5)でCSVファイルをよんでシートに書き込みたいのですが誰か教えて下さい。 例えば CSVファイルはこんな感じだとします。 ファイルID:test.csv ファイル内容  (1レコード)123,123,123,123,123,123  (2レコード)456,456,456,456,456  (3レコード)789,789,789,789 書き込むシートは「abcシート」とします。 CSVファイルはカンマ区切りですがレコード毎にカンマ区切りのデータ数が違います。 シートには指定したセルに書き込めば一番いいのですが、上から順番に書き込んでもいいです。 申し訳ありませんが、宜しくお願い致します。

  • Excel ワークシート から csvファイルに変換するには?

    エクセルに記入された内容は各マスで区切られておりますが マスではなく「,」で区切られる csvに変換したいのですが これは可能でしょうか? 既に入力済みのエクセルシートから ファイル→名前を付けて保存→ファイルの種類→csv→保存 というようにしてエクセルからcsvに変換しようとしましたが 「選択したファイルの種類は複数のシートを含むブックをサポートしていません」 というエラーが出て、そこでOKを押すと 「CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります、この形式でブックを保存しますか?」 と出てきますのでここで「はい」をおすと ファイルの拡張子自体はcsvになるのですが カンマでの区切りではなく未だにエクセルのラインが残っております どうすればエクセルで区切られたマスをカンマに置き換える事ができるのでしょうか? 変換しようとした際に出てくるエラーに問題があるのでしょうか? そうだとしてもエラーの意味がわかりません… 教えてください よろしくお願いします

専門家に質問してみよう