質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

2781閲覧

CSVを読み込んでExcelに書き出したい

MorningSmash

総合スコア3

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/06/04 13:24

編集2020/06/04 13:53

CSVを読み込んでファイルに書き出したい

データ1,値,1,2,3...8,9のように1つの行に12個要素のあるCSVを読み込み、ファイルに指定のセルから縦に書き出したいのですが、エラーが出て実行できません。

エラーメッセージ

実行時エラー'1004'; アプリケーション定義またはオブジェクト定義のエラーです。

ソースコード

VBA

1Sub CommandButton1_Click() 2 Dim ofn As Variant, buf As String 3 Dim tmp As Variant 4 Dim j As Integer, i As Integer 5 ofn = Application.GetOpenFilename("ブック, *.csv") 6 Workbooks.Open ThisWorkbook.Path 7 If ofn <> "False" Then 8 Open ofn For Input As #1 9 Line Input #1, buf 10 i = 0 11 j = 0 12 Do While i < 12 13 Print #1, Cells(i + 2, j).Value = tmp(i) 14 i = i + 1 15 j = j + 1 16 Loop 17 Close #1 18 Else 19 MsgBox "キャンセルされました" 20 End If 21End Sub 22

また、これを基にして数字のみをExcelに書き出す方法はございますでしょうか?

わからないのでお教えください。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

CSVファイルを一行毎に読み込んで行と列を入れ替えてEXCELに展開するには先ずVBAの基礎をもっと勉強すべきです。

ただし、目的を達成する為なら、他のやり方があります。
0. 取り込み用のEXCELを予め作成しておく。
0. 1のEXCELで以降のVBA処理を実行する。
0. 対象のCSVファイルを開く(参考VBA-1)
0. 3で開いたCSVのシートの有効範囲をコピーする。(参考VBA-2)
0. 1のEXCELの貼り付け先シートに行と列を入れ替えてペーストする。(参考VBA-3)

VBA

1' 参考VBA-1 CSVファイルを開く 2Workbooks.Open Filename:="取込み対象CSVファイルのフルパス" 3 4' 参考VBA-2 有効範囲をコピーする 5Workbooks("CSVファイル名").Sheets(1).Range("A1:L2").Copy 6 7' 参考VBA-3 コピーしたセルを行と列を入れ替えて貼り付ける 8ThisWorkbook.Sheets("コピー先のシート名").Range("B2").PasteSpecial Paste:=PasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

サンプルコードでは、CSVファイル2行で、取込み先シートの開始位置をB2としています。
有効範囲を取得する方法は過去のteratailに記載されていると思います。

投稿2020/06/05 01:51

DreamTheater

総合スコア1095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MorningSmash

2020/06/07 12:54

ご回答ありがとうございます! 確かに基礎を疎かにしてあまり考える間もなくすぐに聞いてしまっていました… 私の至らぬところの多いコードを直してくださりありがとうございます!
guest

0

まず、エラーが出たのなら、どの行で出たのかくらいの情報は載せてください。

CSVファイルをブックとして開いて処理したいのか、直接ファイルを開いて処理したいのか、で処理が異なります。
Openしているので、後者とは思いますので、その前提で回答させていただきます。

Workbooks.Open ThisWorkbook.Path

不要な処理です。

If ofn <> "False" Then

GetOpenFilenameの戻り値を受け取る変数の方がVariantの場合は"False"ではなく、Falseで比較する必要があります。
http://officetanaka.net/excel/vba/file/file02.htm

と、ここまで書いたところで、その後の読み込み処理がでたらめ過ぎて指摘するのも面倒になりました。
ここらへんのサイトで基本的なことを学んでみてください。

投稿2020/06/04 23:49

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MorningSmash

2020/06/07 12:51

ご意見ありがとうございます! 確かにそうですね…回答者様の立場に立って考えると仰るとおりどの行でエラーが出たかを書かないとわからないですね… ご丁寧に勉強するサイトも提示してくださってありがとうございます! 以後気をつけます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問