- 締切済み
データをインポートして、規定のフォーマットで貼り付けをしてcsvでエクスポートするにはどうしたらいいですか?
エクセル上に、マクロのボタンをそれぞれ2個設定し、データをインポート、エクスポートできるようにしたいですのですが、どうしたらよろしいでしょうか? (マクロ勉強中ため、まだそこまで詳しくないです。) 具体的には、下記のようなマクロを組みたいです。 マクロのインポートボタンをクリックすると、任意のファイル(.xls)を選択して、ファイル内の下記のようにコピーを行う。 (1):F13~F251までのセルを1行飛ばしで、120回コピーする。 (2):AC13~AC251までのセルを1行飛ばしで、120回コピーする。 (3):AZ13~AZ251までのセルを1行飛ばしで、120回コピーする。 マクロのエクスポートボタンをクリックすると、新しいファイルの「test.csv」という名前で、下記のようにエクスポートを行う。 先頭行(A1~A5)に、No、店舗名、住所、担当者、TELと入力する。 (1)でコピーした情報を、B2からB121のセルに、値のみを貼り付ける。 (2)でコピーした情報を、C2からC121のセルに、値のみを貼り付ける。 (3)でコピーした情報を、D2からD121のセルに、値のみを貼り付ける。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
No1です。 >(1):F13~F251までのセルを1行飛ばしで、120回コピーする。 文章からだけでは、何をどこへどのようにコピーするのかよくわからないのですが、とりあえず13行から251行へ1行おきの繰り返しという構文に関しては… 繰り返しに、利用される代表的な構文がFor~Nextでしょう。 (他にも何種類かありますし、同様のことが可能です) 例えば、変数rwが行を表すと考えれば For rw = 13 To 251 Step 2 Cells(rw, 6).Value = "OK" Next rw を実行すると、セルのF13~F251が1行おきに、OKという値になります。 その他にも、rng(=Rangeの変数とする)に操作対象Rangeを入れておいて、次の対象セルを Set rng = rng.Offset(2) のようにして、2行下(1行とばし)のセルを求めるといった方法など、いろいろな方法があると思います。 「VBA」 「繰り返し」などをキーに検索すれば、繰り返しに関しての解説サイトがいくらでも見つかるはずですので、詳しくはそちらをご覧ください。 てっとり早いものでは、VBAのヘルプの情報なども役に立つと思います。
- fujillin
- ベストアンサー率61% (1594/2576)
何ができて何ができないのかご質問文からでは不明ですが(まさか、全部できないというわけでもないでしょうから)、勝手に想像して… セルの値の操作やループはできるものと仮定すれば、わからないのはファイルの入出力操作あたりでしょうか? <このあたりが参考になると思います> http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110.html http://officetanaka.net/excel/vba/file/index.htm http://makotowatana.ld.infoseek.co.jp/vba_file2.html
お礼
回答ありがとうございます。 今分からないところとして、 (1):F13~F251までのセルを1行飛ばしで、120回コピーする。 (2):AC13~AC251までのセルを1行飛ばしで、120回コピーする。 (3):AZ13~AZ251までのセルを1行飛ばしで、120回コピーする。 のように、1行飛ばしでセルを飛ばしてコピーしてインポートする部分が分かりません。 申し訳ございません。