- ベストアンサー
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 すみませんがどうかアドバイス宜しくお願いします。 では失礼します。
- digital_taro
- お礼率67% (36/53)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
loopにはいる前に一行読んで(捨てて)しまえばよいだけです。 csvtitle = objts.readline Do Until objTS.AtEndOfStream ※この中で・・・ Loop のように。
その他の回答 (1)
- chie65535
- ベストアンサー率43% (8523/19372)
「タイトル行が常にある」と言う場合は GYO = 1 ' EOFまで繰り返す Do Until objTS.AtEndOfStream を 'タイトル行の分を空読みする objTS.ReadLine GYO = 1 ' EOFまで繰り返す Do Until objTS.AtEndOfStream に変えるだけ。 「タイトル行があるか無いか判らない場合」には、1行目を読み込んで、それがタイトルなのかデータなのか判断する必要がありますが、判断は「人間にしか出来ない」ので、プログラムで書く事が出来ません。 「まるでタイトル行のように見えるデータ」や「まるでデータのように見えるタイトル行」とかがあるので「人間が見て判断する以外、どうしようもない」です。 どうしてもプログラムで判断したいなら「1つ目のフィールドは必ず数値なので、1行目の最初のフィールドが数値に変換できない文字列になっていたら、それはタイトル行とみなす」など、何らかの「プログラム可能なデータの規則性」が必要です。
お礼
お礼が遅くなってすみません。 ありがとうございます。 参考にさせていただきます。 では、失礼します。
関連する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 すみませんがどうかアドバイス宜しくお願いします。 では失礼します。
- ベストアンサー
- Visual Basic
- 【VBA】郵便番号を入れたら住所が出てくる仕組み
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_050.html このサイトを参考に見たのですが かなり難しそうなのですが これは簡単にできるものでしょうか?
- ベストアンサー
- Visual Basic
- 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 のように横につなげるようにしたいです。
- 締切済み
- Visual Basic
- フォルダのファイルを開く
ExcelVBAについて。 「フォルダ内の「*.xls」ファイルを開く」という処理をVBAで行いたいですが、 ネット上の情報( http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_120.html )よりも 簡素に記述することは可能でしょうか? よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- 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 お手数ですが何か手法があれば、ご教授頂けると助かります。 宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- エクセル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() のような、動的配列を使うのですか? それとも使わなくても出来るものなんでしょうか? プロの方にとっては、簡単すぎる質問でしょうが、 分かる方、ぜひご教授お願いします。
- ベストアンサー
- Microsoft ASP
お礼
お礼が遅くなってすみません。 ありがとうございます。 なるほど、参考にさせていただきます。 では、失礼します。