• ベストアンサー

VBAでどのようにすればいいのでしょうか。

Excel2007でCSVファイルを取り込むVBAで作成しています。 下記のURLを参考にしています。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_030.html 皆さんにお聞きしたい事があり、投稿させていただきました。 CSVファイルの先頭行にタイトル行が指定されている場合、VBA上で除外する事は可能でしょうか。 できれば Do Until objTS.AtEndOfStream ※この中で・・・ Loop すみませんがどうかアドバイス宜しくお願いします。 では失礼します。

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

loopにはいる前に一行読んで(捨てて)しまえばよいだけです。 csvtitle = objts.readline Do Until objTS.AtEndOfStream ※この中で・・・ Loop のように。

digital_taro
質問者

お礼

お礼が遅くなってすみません。 ありがとうございます。 なるほど、参考にさせていただきます。 では、失礼します。

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.2

「タイトル行が常にある」と言う場合は   GYO = 1   ' EOFまで繰り返す   Do Until objTS.AtEndOfStream を   'タイトル行の分を空読みする   objTS.ReadLine   GYO = 1   ' EOFまで繰り返す   Do Until objTS.AtEndOfStream に変えるだけ。 「タイトル行があるか無いか判らない場合」には、1行目を読み込んで、それがタイトルなのかデータなのか判断する必要がありますが、判断は「人間にしか出来ない」ので、プログラムで書く事が出来ません。 「まるでタイトル行のように見えるデータ」や「まるでデータのように見えるタイトル行」とかがあるので「人間が見て判断する以外、どうしようもない」です。 どうしてもプログラムで判断したいなら「1つ目のフィールドは必ず数値なので、1行目の最初のフィールドが数値に変換できない文字列になっていたら、それはタイトル行とみなす」など、何らかの「プログラム可能なデータの規則性」が必要です。

digital_taro
質問者

お礼

お礼が遅くなってすみません。 ありがとうございます。 参考にさせていただきます。 では、失礼します。

関連するQ&A

  • エラー処理について

    お世話になっております。 現在、Excel2007でCSVファイルを取り込むVBAで作成しています。 下記のURLを参考にしています。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_030.html エラー処理について皆さんにお聞きしたい事があり、投稿させていただきました。 ダイアログでファイルを選択した際にエラーが発生した場合、どのようにエラー処理をしたらいいのでしょうか。 できれば Do Until objTS.AtEndOfStream ※この中で・・・ Loop 現在は下記のように記述していますがうまく処理できません。 正常でもエラーでもエラー扱いされてしまいます。  Do Until objTS.AtEndOfStream   On Error GoTo ErrHandler ErrHandler:   MsgBox "エラーが発生しました。Excelを強制終了します。", vbOKOnly + vbCritical, "終了"   Application.Quit   Windows("ファイル名").Close True  Loop すみませんがどうかアドバイス宜しくお願いします。 では失礼します。

  • 【VBA】郵便番号を入れたら住所が出てくる仕組み

    http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_050.html このサイトを参考に見たのですが かなり難しそうなのですが これは簡単にできるものでしょうか?

  • csvファイルをvbaで読み込みたいけど文字化け

    エクセル2007です。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_020.html を参考にcsvファイルをシートに書きだそうとしてるのですが、 リンク先のサンプルコードのの Input #intFF, X(1), X(2), X(3), X(4), X(5) の部分で、 ファイルにこれ以上データがありません。(Error 62) と言うエラーになってしまいます。 元のcsvファイルは、サンプル通り5項目(A列~E列)にしてみましたが エラーになってしまいます。 なので、 http://officetanaka.net/excel/vba/error/execution_error/error_62.htm を参考に、 Sub Sample1() Dim buf As String Open "C:\Users\test\Downloads\test.csv" For Input As #1 Do Until EOF(1) Line Input #1, buf Loop Line Input #1, buf Close #1 End Sub としてみたところ、やっぱり同じエラーになって、 ?bufをしたら、 ヨS_蘰 gqが返ってきました。 文字化けしてるようですが、フィールド(1行目)に日本語が入っていますが それが原因なのでしょうか? 日本語が入ってるcsvファイルをvbaで書き出す事は不可能なのか教えてください。

  • VBAで複数のCSVの読み込み

    http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_050.html こちらのサイトの「古くからあるステートメントの方法」を参考にしてCSVファイルを選択してエクセルのシート上にCSVの情報を貼れたのですが、 例えばグローバル変数を2つ作り、別プロシージャから2つの違うCSVファイルパスをそれぞれ受け取り、↑の方法で1つのシートに2つのCSV情報を貼るにはどのようにすればよいですか? AファイルとBファイルがあったとしてシートの中身を A A A B B B のように横につなげるようにしたいです。

  • フォルダのファイルを開く

    ExcelVBAについて。 「フォルダ内の「*.xls」ファイルを開く」という処理をVBAで行いたいですが、 ネット上の情報( http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_120.html )よりも 簡素に記述することは可能でしょうか? よろしくお願いします。

  • EXCEL VBAでデータをどんどん入力したいのですが・・・

    こんにちは。 EXCEL VBA の初心者です。 下記のURLのようなVBAを作りたいのですがうまくいきません。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_080.html 3~4項目のフォームを作って登録ボタンでシートにどんどん 記録されていくマクロを作りたいのです。 上記のURLを参考に作っていますがうまくできません。 どなたか助けて下さい。 よろしくお願いいたします。

  • Excel:値のある行だけをcsv保存したい

    エクセル(2003、2007)でcsvデータで保存をするマクロを作る際、 「式」ではなく、「値」がある行だけ書き出したいと考えております。 例えば図のようにsheet1に表があり、それを元にsheet2に データを転記する場合、sheet2にはそれぞれ転記する為の「式」 が入る事になると思います。 【=IF(Sheet1!A10="","",Sheet1!A10)】など このままマクロでcsvとして吐き出した場合、「式」が入っている行が 全て書き出されてしまうのですが、あくまで「値」が入っている行だけ csvとして抜き出したいです。 ※なお、csv書きだし自体は以下のサイトを利用させて頂いております。   ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_050.html お手数ですが何か手法があれば、ご教授頂けると助かります。 宜しくお願い致します。

  • エクセル2003にてカレントフォルダを確認する方法

    エクセル2007の場合は http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html のやり方で、「EXCELのオプション」から確認できるようですが エクセル2003の場合どこから確認できますか? ファイル→プロパティ→ファイルの情報を見てもありません。 その「ファイルの情報」のパスと、VBAでCurDirをした時の戻り値が違うので、 「ファイルの情報」のパスはカレントフォルダではないですよね?

  • エクセル VBA テキストファイル書き出す応用?

    以下のページより、 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html Option Explicit ' テキストファイル書き出すサンプル(2) Sub WRITE_TextFile2() Const cnsFILENAME = "\SAMPLE.txt" Dim intFF As Integer ' FreeFile値 Dim strREC As String ' 書き出すレコード内容 Dim GYO As Long ' 収容するセルの行 Dim GYOMAX As Long ' データが収容された最終行 ' 最終行の取得 GYOMAX = Range("A65536").End(xlUp).Row ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(出力モード) Open ThisWorkbook.Path & cnsFILENAME For Output As #intFF ' 2行目から開始 GYO = 2 ' 最終行まで繰り返す Do Until GYO > GYOMAX ' A列内容をレコードにセット(先頭は2行目) strREC = Cells(GYO, 1).Value ' レコードを出力 Print #intFF, strREC ' 行を加算 GYO = GYO + 1 Loop ' 指定ファイルをCLOSE Close #intFF End Sub ------------------------------------------------------------- これを参考にしてテキストファイル書き出すのは出来たのですが、 今回は、ちょっと応用で以下のようにしたいです。 Sheet1のA2~A20までテキストファイル名が書いてあるとします。 また、Sheet2~Sheet20ぐらいまで、各Sheetに文章が入っているとします。 テキストファイルに書きだしたいのですが、 Sheet2の内容は、Sheet1のA2のファイル名 Sheet3の内容は、Sheet1のA3のファイル名 Sheet4の内容は、Sheet1のA4のファイル名 このようにしたいのですが、どのようにすればいいのか教えてください。 よろしくお願います。

  • 合計金額を出すには動的配列?

    初投稿です。ASPで見積スクリプトを作っています。 ソースは・・・ Set ObjFSO = Server.CreateObject("Scripting.FileSystemObject") Set ObjTS = ObjFSO.OpenTextFile(data_file) Do Until ObjTS.AtEndofStream Arr = ObjTS.Readline Arr1 = split(Arr,"::") tanka = FormatCurrency(Arr1(1)) goukei = Arr1(1) * Arr1(2) Loop ObjTS.Close Set ObjTS = Nothing Set ObjFSO = Nothing ================================ この、変数:goukeiを全て加算して、 最後に見積合計を出したいんですが、 これを出すには Redim Preserve goukei() のような、動的配列を使うのですか? それとも使わなくても出来るものなんでしょうか? プロの方にとっては、簡単すぎる質問でしょうが、 分かる方、ぜひご教授お願いします。

専門家に質問してみよう