CSVファイルをEXCELに変換の自動化作業
{CSVファイルをEXCELに変換するため、
excel ツールバーよりデータ(D)→外部データの取り込み(D)→テキストファイルのインポート→ファイルの種類変更→全てのファイル→○○.csvのファイル指定→“,”の区切り選択、、ウィザードに従って変更し次へで進む→A1が指定されるのでそのまま完了→CSVがEXCELファイルに変換された。
参照したabc1.csvの名前に対して新しいabc1.xlsとなずけて登録する。これらの作業をMYドキュメントのhenkan ホルダーに入っているCSVファイルに同様に作業して同じくhenkan ホルダーに入れる。}
上記の{ }内の作業を何か,excelのVBAのマクロのようなもので実行することはできませんか。
やり方を教えてください。
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
この回答への補足
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 の前の.は何ですか。
No.9
- 回答日時:
この質問は、昔から繰り返されてますね。
マクロにしてもVBAにしてもコーディングの手間が必要な為だと思われます。
自分で使う用途で作りましたが、使えるか試してみてください。
http://blog.labo-miya.com/rnote.php?u=prog/20060 …
機能
CSVファイルをドラック&ドロップすると、列をすべて文字型にしてExcelが開かれ、同名の.xlsファイルを作成します。
一括で処理は出来ませんが、やってる事は同じです。
Win2000+Excel2000でしか試してないので他の環境で動くかどうか?
参考URL:http://blog.labo-miya.com/rnote.php?u=prog/20060 …
No.7
- 回答日時:
こんにちは。
Wendy02です。>前よりやりにくくなりました。
>よく考えてみれば、ひとつずつ開いてXLSに変えて保存したほうがはやそうです。
そうですか。とても残念な対応の仕方です。どうぞ、ひとつずつ開いて変換してください。こちらは、手を引かせていただきます。
この回答への補足
ANo.8のコードの中で
Then MsgBox "フォルダーの設定の最後は、「\」が必要です。": とある
フォルダーの設定の最後という意味がどういうことなのかわかりません。
(フォルダ名なら記号¥はつけられないし、説明をお願いしたいのですが、よろしくお願いいたします。まだコードは実行していません。自分でまずコードの意味を理解したいと思います。
No.6
- 回答日時:
#4のWendy02です。
>1列目に表示され、
すみません。コードが間違っていました。(^^;
真中辺りに、以下のようなコードがあります。
On Error GoTo NextStatus
× With Workbooks.Open(fn) '間違い
↓
On Error GoTo NextStatus
With Workbooks.Open(fn, Format:=2) '正解
でした。
元のほうにも訂正いれておきましたので、恐れ入りますが、もう一度試してみていただけますか?
この回答への補足
今度はダイアログが,MYDOCのものがでてきて、前よりやりにくくなりました。
更にXLSの内容も、”.”カンマでくぎられているだけ。
よく考えてみれば、ひとつずつ開いてXLSに変えて保存したほうがはやそうです。
もともとめざしていたのは 、マクロを実行すれば自動的に同じフォルダのものが自動的に変換されることだが、このまくろはひとつずつ、操作者がクリックしないとだめです。
No.5
- 回答日時:
>abc1.csvをExcelのアイコンに重ねるというのは、意味がよくわかりません。
>どういう画面状態でExcelプログラムはどういう状態でしょうか。
アプリケーション本体のアイコンもしくはショートカットにabc1.csvをドラッグして、abc1.csvをExcelで開くという意味です。
ファイルをデフォルトでリンクされていない特定アプリケーションで開くときの常套手段であるため、「Excelのアイコンに重ねる」と単純に書いてしまいました。たとえば、Word書類を一太郎で開く場合、html書類をエディタで開く場合、csvをWordで開く場合など(ほかいろいろ)に使用します。そのため、頻繁に使用するアプリケーションのショートカットのコレクションを作成しておきます。ショートカットを作成していないときには、エクスプローラ表示を使用すれば簡単にアプリケーションにアクセスできます。
この回答への補足
ショートカットというのはExcelのショートカットのことですか。
その場合、CSVをドラッグしても何もならなかった。
拡張子csvのEXCELへの関連付けでもするんですか。
No.4
- 回答日時:
こんにちは。
#2のWendy02です。とりあえず、
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1853661
または、
http://security.okwave.jp/kotaeru.php3?q=1853661
の#5 の私のコードを試していただけませんか?
一気にxls ファイルに変換しまいますので、とりあえず、数ファイル選んで、どのような上がりになるか調べてみてください。もし、そのまま使えれば、それに越したことはありません。
こちらは、「テキストファイルのインポート」を使用しておりませんので、もしかしたら、支障があるかもしれません。その場合は、新たに書き直します。
この回答への補足
コードを入れてためしてみました。マクロ起動後、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) 処理終了
No.2
- 回答日時:
こんばんは。
おっしゃっていることが、私の思っていることと合っていれば、マクロを作ってみます。たぶん、検索すれば出てくるのでしょうけれども、それが目的にかなったものかどうかは、判別できないと思います。
>→外部データの取り込み(D)
>→テキストファイルのインポート
これを使わなくてはならない理由があるわけですね。.csv ファイルをクリックして開いてしまうと、一部の数字などに自動変換機能があって、違うものになってしまうこと。
もう1つは、
>MYドキュメントのhenkan ホルダーに入っているCSVファイル
は、かなり多くあること。
ということでしょうか?そういう理由なら、マクロはやむを得ないと思います。
なお、VBA Excel97 以降となりますが、Excel 97 には、機能的に足りない部分がありますので、それ以降のものとコードとは違いますので、私は、自信がありません。
それと、この場合は、OS のVersion とExcelのVersion は、明示したほうが作りやすいかもしれません。
この回答への補足
OS のVersion:w-2000
ExcelのVersion :Excel 2000
ファイル:毎月20個処理
自動でクリック一発でできれば、もし可能ならすごいこと。
No.1
- 回答日時:
>VBAのマクロのようなもので実行することはできませんか
「VBAのマクロのようなもので実行」しなければならない理由がある場合には見当はずれの答えになってしまいますが、abc1.csvをExcelで開き、abc1.xlsで保存というだけであれば、abc1.csvをExcelのアイコンに重ね、ExcelのBookとして保存するだけでよいような気がします。
この回答への補足
abc1.csvをExcelのアイコンに重ねるというのは、意味がよくわかりません。
どういう画面状態でExcelプログラムはどういう状態でしょうか。
お探しの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
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) Excel VBAでフォルダが何層にもなっていて最下層の中にCSVファイルがあり最上層のファイルを指 4 2022/06/08 20:41
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Access】クエリで抽出...
-
Excelのデータ(数字)をテキス...
-
SQLSever 一括インポートについて
-
Wordの文章をExcelに内容ごとに...
-
mdbをテキストに変換するツール...
-
ExcelVBAを使ってテキストファ...
-
VBAのQueryTableオブジェクトの...
-
ダブルクォーテーション囲いカ...
-
ACCESS でインポートフ...
-
CSVファイルを固定長のテキスト...
-
アクセス2007でのインポートエ...
-
複数のエクセルファイルをアク...
-
【ACCESS2002】csv形式データの...
-
エクセル(アクセス)での操作方法
-
Excelでhtml形式のテキストを表...
-
notepad++ で作成した文書を cs...
-
多数のeml形式ファイルを1つの...
-
AccessのマクロでCSVファイルを...
-
差し込み印刷の元データファイ...
-
ISOファイルとMDSファイル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Access】クエリで抽出...
-
Wordの文章をExcelに内容ごとに...
-
Excelのデータ(数字)をテキス...
-
Excelでhtml形式のテキストを表...
-
複数eml形式のBecky!への一括イ...
-
SQLSever 一括インポートについて
-
アクセス(ACCESS) インポート...
-
ダブルクォーテーション囲いカ...
-
アクセス2007でのインポートエ...
-
多数のeml形式ファイルを1つの...
-
VBA 複数のCSVファイルを一度...
-
ACCESS CSV形式でエクスポート...
-
複数のメールファイルを1つの...
-
アクセスで小数点以下1桁まで...
-
ACCESS でインポートフ...
-
エクセル2000で65536行を超える...
-
[VBA]csvファイルを開いて保存...
-
CSVファイルを固定長のテキスト...
-
複数のエクセルファイルをアク...
-
ACCESS複数テキストファイルを...
おすすめ情報