• 締切済み

エクセルのマクロを教えて下さい

csvファイルなのですが、ファイルサイズが大きくて、エクセルでは全部を開くことが出来ません。 csvファイルを開くことなく、指定行から指定行までを取り出すようなマクロを教えて下さい。 なおエクセルは、エクセル2000を使用しています。 (会社の指定でエクセル2000以降のバージョンは使えません)

みんなの回答

  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.3

WindowsやExcelで処理可能なテキスト形式だとして・・・ 過去の質問を検索したところ、同様のものがありました。 タイトル:VBAで巨大なファイルの途中からの読み込み 投稿日時:2007/10/07 00:21 http://okwave.jp/qa/q3407338.html No.1さんの解答にある最初のリンク(asahi-netのもの)のCSV読込の方法と上記の質問の質問文中の行読み飛ばしの方法を組み合わせればよいのではないでしょうか。 (上記質問の解答ではなく質問文中の記載です) さらに高度な方法として、上記の過去の質問の解答No.3にSQLを使う方法についての説明があります。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

James-Bondさん、こんにちは マクロを利用してやれないことはありませんが、本件については、実は非常に面倒くさいものになる可能性があります。なぜなら、そのcsvファイルの実態がどのようなものかが私からは見えないからです。 65536行を超えた(ひょっとしたら256列も超えているかもしれませんね)csvファイルというのは、たいていの場合、誰かがExcelで編集して作成したものではなく、どこかの基幹系システムから検索・ダウンロードされたものである可能性が高く、そうしたものは、得てして、WindowsやExcelの規則にのっとっていないことがあるからです。 具体的には、 ・「改行コード」がWindowsのものと異なっている(改行コードについては別途検索してください) ・全て、あるいは一部のデータが「"」(ダブルクォーテーション)で囲まれている場合がある という2点です。 特に前者の場合、そうとは知らずマクロを作成すると、データ量によってはマクロが途中で固まってしまう恐れがあります。 というわけであくまで行数だけが問題で、列数が256列を超えていないのであれば、少々手間がかかるかとは思いますが、Excelではなく「テキストエディタ」を利用することをお勧めします。 テキストエディタとは、文字を編集するだけのソフトウェアのことで、Windowsに標準で入っている「メモ帳」もそれにあたるのですが、メモ帳は機能が少ないため、別途ソフトウェアをインストールしてください。 ここでは無償で利用できる「サクラエディタ」を利用します。(サクラエディタについては別途検索し、ダウンロード・インストールをしてください) さて、インストールができたら、目的のcsvファイルを右クリックして、「SAKURAで開く(E)」を選択するか、サクラエディタを開いてから目的のcsvファイルをドラッグするなどして、サクラエディタ上で目的のファイルを開きます。 必要な行を選択し、コピーしたあと、新規作成で新しいウィンドウを開き、貼り付けたあと、名前を付けて保存します。その際、「ファイルの種類(T)」は「全てのファイル(*.*)」とし、ファイル名の最後に「.csv」を必ずつけましょう。 ちなみに、例えば10001行目から20000行までといったように、大量すぎてマウスで選択するのは難しいが、選択したい行が具体的に分かっている場合は、以下の操作にて選択可能です。 1) Ctrlを押しながらJを押し、行番号として「10001」を記入し、ジャンプボタンを押します。 2) 10001行目の先頭にカーソルが合ったら、「F6」キーを押します(範囲選択モードになります)。 3) 再びCtrlを押しながらJを押し、行番号として、20000行の次、すなわち「20001」と記入し、ジャンプボタンを押します。 (少し慣れてきたら、上の操作を「キーマクロの記録」で保存し、一発処理することも可能です) 新しく作成したcsvファイルをダブルクリックすれば、Excelで開くことができます。 お使いのPCに秀丸が入っていれば、http://okwave.jp/qa/q190399.html の方法で上と同様指定行の選択が可能となります。 あくまでマクロで行いたいのであれば、まずは該当のcsvファイルが、2007以上のExcelで手作業にて作成したものかどうかを教えてください。そしてもしそうでないならば、サンプルcsvではなく、実際に加工したいcsvファイルを、恐らくセキュリティや秘密保持の関係で不可能と承知の上で言いますが、どこかのアップローダにアップロードしていただく必要があります。それができないのであれば、 ・改行コードが"CR"なのか?"CR+LF"なのか?"LF"なのか?はたまたそれ以外か?(それ以外ということはないでしょうが)  ⇒ 改行コードがLFの場合、通常のデータ量を列数・行数・バイト数にて提示いただく必要有り ・データの全てがダブルクォーテーションで囲まれているか?また、データそのものにダブルクォーテーションが存在するか?そのあたりの規則性をできるだけ詳しく という、最低2点をご回答いただく必要がございます。そして回答いただいた上で、「やはりマクロを利用するのはあきらめてください」となるかもしれません。 CRって何?LFって何?・・・といったように、もし上の私の質問が何を言っているのか分からないのであれば、お手数かとは存じますが、テキストエディタを利用した上の方法で対応ください。

James-Bond
質問者

お礼

元データが16万行もあることがわかり、エクセル単独での作業は断念しました。 ご教授誠にありがとうございました。

  • kamikami30
  • ベストアンサー率24% (812/3335)
回答No.1

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_020.html こんなのはいかが? そもそも基本的な事からわからないなら、こちらもどうぞ。 http://excelvba.pc-users.net/ 丸投げしてるのなら、 何が問題で、何をどうしたいか明確にしてください。 自分でやるにも明確化できていないと無理です。 サイズが大きい。 →行数が多いのか?一行の要素数が多いのか?また、その両方か? CSVを開く →なにで開く?多分excelだろうけど、省略しないように。 →何を使うにしてもファイルは開かないと内容はわからないと思う。 取り出す →取り出すって具体的になんでしょう? →excelのシート上に表示すること? →どんなシートに? →どんな風に? 指定行A~指定行Bまで B<Aのときはどうするの? →逆順表示する? |A-B|+1(指定範囲の行数)がexcelで開ける最大行数超えたらどうする? というくらいは、考えられないとコードは書けないと思います。

James-Bond
質問者

補足

アクセスで開くと16万行もありました。エクセルの守備範囲外だと思いますので、エクセルでの抽出は断念します。 『エクセルのマクロを教えて下さい』というタイトルからして、エクセルで開こうと考えるのは常識の範囲だと思います。 そもそもご指摘のような条件が、事前に自分で考えられるのなら、自分でマクロを組んでいたと思います。

関連するQ&A

  • Excelのマクロで困ってます

    エクセルのマクロを使用しているのですが、CSVで作成済のエクセルのファイルを1行づつセルに展開するマクロを記述したいのですが、どうすれば良いのか困ってます。  教えてください。

  • EXCEL マクロで下から10行目までを削除する方法

    はじめまして。 EXCELでhistory.csvというファイルを読み込んで指定列をコピーし 貼り付けるマクロを作って使用しています。 そのcsvファイルはどんどん更新されて行が増えていきます。 できればコピーする前に、下から10行目までを削除した後に コピペしたいのですが、下から10行目までというような行の指定方法は あるのでしょうか。 上級者の方々、アドバイスをいただけないでしょうか。 よろしくお願いします。

  • エクセルマクロについて

    いつもお世話になっております。 エクセルのマクロについて質問させていただきます。 仕事上測定した10回データを、エクセルで計算させ平均やσ出すという処理を毎回しているのですが、測定したデータというのが、csvファイルで10個できあがり、それを一つずつ開いては貼っての繰り返しをしています。 この作業をマクロで自動的に出来ないものかと思い質問させていただきました。 装置によって毎回.csvの前のファイル名が変る恐れがあるので、csvファイルの入っているフォルダ(ディレクトリを指定)を指定し、その中にあるcsvファイルを自動的に貼る事が出来る事が理想です。 VBAではこのような処理のサンプルプログラムがあるのですが、VBAはあまり解らないので出来ればマクロの記録からできればと思います。 宜しくお願い致します。

  • csv取込マクロについて

    添付画像の通り、 csvファイルの各行を、エクセルの指定の行(場所)に取り入れるマクロを教えていただきたいです。

  • このようなエクセルマクロを組みたいのですが...

    下記のようなマクロを組みたいと思っていますが、 知見がほとんどないので教えていただきたいと思います。 "csv"というフォルダにランダムなファイル名でcsv形式のファイルが100以上保存されています。 目的は、 そのcsvファイル内の一部のデータをひとつのファイル(ファイル名を"まとめ"とします)に移して並べたいと思います。 <前提> "csv"フォルダと"まとめ"ファイルは既に開かれている状態とします。 "まとめ"ファイルを開いた状態で、マクロを走らせると、 (1)csvファイルが開く (2)セルA1とB1をコピー (3)"まとめ"ファイルのA1、A2へ貼り付け(行と列を変更) (4)csvファイルを閉じる (5)次のcsvファイルが開く (6)セルA1とB1をコピー (7)"まとめ"ファイルのB1、B2へ貼り付け(行と列を変更) (8)csvファイルを閉じる 以降、"csv"フォルダの中身をすべて処理できるまで繰り返し。 という風に考えていますが、 当方あまり知識が無くアレンジが難しいためできる限りシンプルにと考えています。 そのため、もしこうした方が...等あればアドバイスいただけるとありがたいです。 すみませんがよろしくお願いいたします。

  • エクセル初心者です。マクロなのか関数なのか

    エクセル初心者です。マクロ or VBAを使えばいいのか関数なのかわからないです・・・・・ デスクトップにある新しいフォルダという名前の中に50以上のエクセルCSVブックがあります。 これをひとつも展開させずに新しいブックにひとつにまとめたいのですが、最低でもフォルダ内には50~100ぐらいのエクセルのCSVブックがあるので(ひとつひつ展開するのも手間なので)ワンクリックか何かでまとめる方法はないでしょうか?(フォルダ内にある名前は全てばらばらです) Book1.CSV A B C 1 1 1 Book2.CSV A B C 2 2 2 Book3.CSV A B C 3 3 3 例えば上のような3つのブックがあって中には一行目はすべて固定で二行目以降から数字が入っています。 最終的には・・・・ 新しいBook A B C 1 1 1 2 2 2 3 3 3 ↑ 一行目は固定で2行目以降から各ブックに入っている行を追加するだけのようにしたいのです。 こういことはマクロでも可能でしょうか?それとも関数のほうがいいのでしょうか? ご存知であればぜひマクロの登録手順とその方法を教えてください。 いろいろと調べたのですがマクロは書いていた記述をそのまま貼り付けてもうまく動作しなかったんです。 マクロであればその手順まで教えていただけると非常に助かります。 エクセルのverは2003です。よろしくお願いいたします。

  • EXCELマクロについて

    csvファイルを一旦EXCELで保存して、見やすい表にしたいのですが、その作業をマクロに記憶させることができる考えております。 ただ、その記憶したマクロを他のパソコンにもコピーできますでしょうか。同じ環境のWindowsで同じバージョンのExcel 一応Excelは2003を考えております。 よろしくお願いいたします。

  • エクセルマクロ

    やりたいことは、毎回更新されて開くエクセルCSVの画面で、自分仕様にマクロの記録を行い、(枠固定や、セルの幅変更、色を付けておいたり)、そして再度 更新されたエクセルCSV画面がを開かれたときに、前回記録したマクロ設定された状態で開きたい。 現在は、CSVファイルが開かれると、自分の見やすいように操作して見ているのですが、これをいったん閉じて(毎回更新される内容なので保存しないで閉じています) またCSVファイルを開くとき繰り返し自分の見やすいように操作してから見ていますが、この見やすいようにする操作を毎回行わず設定するやり方を教えてください。 パソコンは詳しくないです、プログラムみたいな画面はさっぱりわかりません。 ちなみに、毎回更新されて開くCSVエクセルファイルは、フィルター選択で自分の見たい部分を選択して見ています。 職場で使用しているのでなるべくはやく解決したいです。

  • マクロでのcsv読み込みについて

    エクセルのマクロにてcsvファイル(カンマ区切り)のデータを読み込むマクロを制作しているのですが、そのcsvファイルが1行めを2行目がデータ本体ではない為カンマの数が違い、openを使って読み込みを行うとうまくいきません。何かいい方法はないでしょうが。よろしくお願いいたします。

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

専門家に質問してみよう