• 締切済み

エクセルでのマクロの作成(コピー、ファイル展開)

自身で作成しようとしたのですができなかったので質問させていただきます。 ExcelでAファイルからマクロを実行させて、Bというファイルを開き一部のセルをコピーし、 Aファイルの条件に該当するセルにペーストするマクロを組みたいと考えています。 以下にさらに具体的に内容を記載いたします。 「Xフォルダ内にAファイルとBファイル(20101010-XXX)があり、Aファイル内にてマクロを実行させる。」 1:指定したフォルダ内にある、条件に合う該当ファイルをリストアップする(名前順) 2:リストの一つ目のファイル(Bファイル)を開く 3:Bファイル内のセルF9を選択し、コピーする。 4:Bファイルを閉じる 5:Aファイルの指定セル(C6)に貼り付ける 6:リストの二つ目のファイル(Bファイル)を開く 7:      : (3、4は同様) 8:Aファイルの指定セル(C306)[以降C6+300ごとに増やす]に貼り付ける 9:リストの三つ目のファイル(Bファイル)を開く         :  以下リストアップされたファイルを繰り返し処理し、全て終えたら終了。 簡単ですが例も記載します。 ================(例 Aファイル)================== A        B       C 行  4    20101010←日付        時間    Bセル値  6      10:00     F9(Bファイル一つ目)←貼り付け対象  :        :       :                       306      20:00     F9(Bファイル二つ目)            :        :        :                       606      30:00     F9                                                               :        :       :                                                               ============================================= XXXにはAファイルBセルの時間と一致するようにする↓ ================(例 Bファイル(20101010-XXX))=== A     B       C      D     F                               ○○←コピー対象                           ============================================= どなたか、ご存知の方が居られればお教え願います。 よろしくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

この質問は質問文が長く、自分でやれる部分(自分でやるべき部分)まで含めているが、切り分けて、自分でやるべきです。 まずマクロの記録を取れば骨格はわかる(下記の部分)。 >ExcelでAファイルからマクロを実行させて、Bというファイルを開き一部のセルをコピーし、 Aファイルの条件に該当するセルにペーストするマクロを組みたいと の部分だ。 ーー >指定したフォルダ内にある、条件に合う該当ファイルをリストアップする 在るフォルダ内のエクセルファイルの名前を列挙するのは、WEBでも調べてみたか。 沢山の記事がある Googleででも「vba フォルダ ファイル一覧」で照会すれば http://itpro.nikkeibp.co.jp/article/COLUMN/20060120/227645/ http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html など ファイルの中身まで踏み込むとファイルを読まないといけないが、名前と拡張子のレベルで判別できるのか。 また >一部のセル >Aファイルの条件に該当するセル の部分はどういう条件なのか、書いてないが、自分でコードを書いてみて考えること。 その過程でわからない個所だけに絞って、各々別質問にでもして、質問すること。 この質問では丸投げで、文章を長々書いて、回答者に時間を取らすのは、困るし、質問者のためにもならない。 丸投げにしないためには、自分の課題を丸投げでなく、判るところ、WEBや本を見れば判るところは質問の記述から省いて、質問例にすること。 >2:リストの一つ目のファイル(Bファイル)を開く 3:Bファイル内のセルF9を選択し、コピーする。 4:Bファイルを閉じる 5:Aファイルの指定セル(C6)に貼り付ける などぐらい、質問回答で、教えてもらわなくても判るか、マクロの記録を取ればコードはわかるだろう。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>条件に合う該当ファイルをリストアップ ×「条件」が一体何なのか説明がありません ×ご質問の説明では「リストアップ」していません ×AやBのファイルの何て言うシートを対象にして作業したいのか説明がありません ×ご利用のエクセルのバージョンも不明です  ファイルの拡張子も不明なので,マクロでファイルを正しく開けない可能性があります ×AファイルのB4は「日付」と称していますが20101010という値のただの数字のようです  実は正しく「日付」が記入してあって書式によって20101010と表示して見せている場合は,マクロが正しく作動しない可能性が高くなります 手順: Aファイルに次のマクロを登録し,実行する sub macro1()  dim myPath as string  dim myFile as string  dim i as long  dim h as range  mypath = thisworkbook.path & "\"  with thisworkbook.worksheets("Sheet1")  for i = 6 to .range("B65536").end(xlup).row step 300   set h = .cells(i, "B")   myfile = .range("B4").text & "-" & format(h, "hhmm") & ".*"   myfile = dir(mypath & myfile)   if myfile <> "" then    workbooks.open filename:=mypath & myfile    h.offset(0, 1).value = activeworkbook.worksheets(1).range("F9").value    activeworkbook.close false   end if  next i  end with end sub

seraphicsun
質問者

補足

質問に不備があり申し訳ありません。 条件とは C:\Users\・・・のフォルダ内の.csvファイルをのみを対象としたいという意味です。 また、リストアップについては表現が悪く申し訳ありません。上記のフォルダ内の対象ファイルのみを対象としたいということを伝えたく記載いたしました。 シートに関してはAは“出力”、Bは“sheet1”です。 エクセルのバージョンはOffice2003を利用しています。 ファイルの拡張子はAが“.xls”,Bが“.csv”です。 最後に日付に関してですが、Aファイルは日付ごとにファイルがあり、Bファイルは同一フォルダ内に異なるファイルネームにて(20101010-XXX , 20101011-xxx)存在する状態であったため、区別する際に役立つかもと考えていました。 また、Keithin様のおっしゃるとおり、日付は書式によって20101010と表示して見せています。理由は上述した内容と同じでBファイルを選ぶ際に使えるかもと考え書式を変更しました。しかし、それではマクロが作動しない場合があることを知りませんでした。

関連するQ&A

  • エクセルで、コピーに関するマクロ

    コピー対象は、例えば、C5に"お"、D5に"は"、E5に"よ"、F5に"う"という感じで、一つのセルに一文字ずつ横に連なるように入力されています。 貼り付ける場所は、例えば、起点をB8にすると、B8に"お"、C9に"は"、D10に"よ"、E11に"う"と、斜め下に連なる形になります。 コピー対象の起点となるセルは毎回違いますが、常に起点と同じ行に一つのセルに一文字ずつ入力されている状態になっており、どこからどこまでをコピー対象にするかは毎回指定することになります。 コピー対象の文字列を構成する個々のセルの中に、空欄のセルが含まれることはありません。また、コピー対象を構成するセルの最後のセルの右隣のセルは、必ず空欄になります。 貼り付ける場所は毎回違います。起点となるセルを指定すると、そのセルから斜め下に連なる形で貼り付けられます。 上記のことができるマクロを教えてもらいたいのですが。

  • エクセル マクロ コピー 貼り付けについて教えて!

    お世話になります。 エクセルのマクロを利用し下記の 方法はできますでしょうか。 条件:1つのフォルダ内に2つのエクセルデータがあります。 (1)「リスト」名のエクセルデータ (2)「送付状」 (1)「リスト」名のエクセルには下記の内容があります。   A       B  1 山田 03-0000-0000 2 佐藤 04-0000-0000 3 樋口 05-0000-0000 4 加藤 06-0000-0000 「リスト」名のエクセルには事前にマクロを組みます。 (ここを教えてください!) マクロを起動すると (2)「送付状」のエクセルデータごとコピーし ファイル名を「リスト」のB1とします。 例:ファイル名/03-0000-0000 03-0000-0000のファイルを開き A3に「リスト」のA1をコピーし貼り付けます。 C10には「リスト」B1の電話番号をコピーし貼り付けます。 これでファイル名03-0000-0000を保存します。 次に同じ動作を繰り返しますが 新しく作成したエクセルファイル(貼り付け先) のコピー元((1)リスト)はA1またはB1 から次行のA2またはB2と行を変えてコピーし 貼り付け場所は変わらずA3・C10とします。 (1)「リスト」A1欄が空欄になるまでこの動作を つづけ、終わったら「完了」表示がされ作業終了にしたいです。 完成形 (1)「リスト」に100件の名前があった場合 フォルダ内には (1)「リスト」、(2)送付状 その他100件の電話番号名のエクセルファイル が存在する。 お手数をおかけいたいます。 宜しくお願いいたします。

  • エクセルのマクロ

    素人なのですみませんが教えてください エクセルのマクロを使用して エクセルを起動して ウィンドウズ内のあるフォルダ内のエクセルファイルをコピーをして違うフォルダに貼り付けをしたいのですが、どのようにマクロを組み込むのか教えてください(マクロの式) (例)エクセル起動後エクセルのマクロにて c\Aフォルダ\aファイル←コピー c\Bフォルダ\aファイル←貼り付け

  • 【エクセルVBA】エクセルファイル間で表のコピーと貼り付け

    そもそも出来るかどうか、わかりませんが、 もしかしたらと思い、質問させていただきました。 2つのエクセルファイル「個別」と「合計」があるとします。 「個別」はCドライブの「所属者」フォルダに 「合計」はCドライブの「集計」フォルダにあるとします。 「個別」ファイルには以下のような表とコマンドボタンがあります。 A1 A2・・・はセルの位置を表しています。    A1 A2 A3 B1 B2 B3 C1 C2 C3 コマンドボタンをクリックすると、この表と同じ内容が 「合計」ファイルの以下の位置に移動するようにしたいです。    E1 E2 E3 F1 F2 F3 G1 G2 G2 要するに「個別」ファイルにある表をコピーして、 「合計」ファイルの指定した位置に貼り付けるという操作を マクロを使ってコマンドボタンをクリックすることで 自動に行えるようにしたいのです。 もし可能ならば、 どのようにコードを入力するべきか教えてください。 マクロに関しては素人ですので、 できれば入力すべきものをそのまま回答していただけると ありがたいです。

  • エクセル・マクロを利用しセルをコピー 貼り付け

    お世話になります。 エクセルを利用して下記の作業を行いたいのですが可能でしょうか。 条件:1つのフォルダ内に下記のエクセルファイルが2つ存在します。    (1)リスト表    (2)送付状 やりたいこと: (1)のリスト内容   A   B 1名前 電話番号 2山田 03-0000-0000 3佐藤 04-0000-0000 4工藤 05-0000-0000 リストにはマクロを組んでおきます(←ここを知りたいです) リストのマクロを作動させると フォルダ内にある送付状ファイルをコピーして新規エクセルファイルを作成します。 ファイル名はリストのB2にあります電話番号を名前として置き換えます。 次にリストにありますA2の名前をコピーし 送付状のB4へ貼り付け リストB2の電話番号をコピーし 送付状のC10へ貼り付け 保存 次に上記と同じ動作を継続的に行いますが 次のファイル名はB3の電話番号 名前のコピー先はA3に変更 貼り付け先は新規ファイルのB4 電話番号のコピー先はB3に変更 貼り付け先は新規ファイルのC10 保存 これをリストのA列が空欄になるまで繰り返します。 作業が完了した場合。「完了」表示し終了としたいです。 たとえ100名前のリスト表を作業にかけた場合 完了後はフォルダ内には(1)リスト表 (2)送付状 マクロで作成したファイル100個のエクセルが 存在することになります。 お手数をおかけいたします。 何卒宜しくお願いいたします。

  • エクセル2007で複数ファイル間コピーマクロ

    エクセルでマクロを組もうとしていますが、初歩的なことでつまづいており、ぜひ助けを頂けたらと思います。 VBA言語はほとんどわかりませんが、エクセルでマクロを組んでいます。 一つのワークブック内での登録は問題なく行えるのですが、ワークブック間のコピペをマクロに登録するとうまくいかず困っています。 やりたいことは以下のようなことです。 file.Aのsheet1のA1セル ⇒ file.AAのsheet1のA1セル へコピー file.Bのsheet1のA1セル ⇒ file.BBのsheet1のA1セル へコピー     ・     ・     ・     ・ file.Zのsheet1のA1セル ⇒ file.ZZのsheet1のA1セル へコピー VBAを確認すると、ワークブック名が指定されているため、うまく次のファイルに移行できずにいるようです。 以下が黄色でハイライトされます。 Windows("file.A").Activate 初歩的なことだとは思うのですが、なかなか検索で答えが引っ張りだせないので、A-Zのファイルをコピペできるマクロにするにはどのようにしたら可能なのか教えてください。 よろしくお願いします。

  • エクセルで、コピーに関するマクロ

    CC列に入力されている文字列を以下のようにコピーしたいのですが。 CC1からCC100まで、順番にコピーしていきます。途中に空欄のセルもありますが、それはコピー対象から外します。 コピーの形式と貼り付ける場所ですが、CC1が"school"なら、A1に"s"、B1に"c"、C1に"h"、D1に"o"、E1に"o"、F1に"l"と、横に連なる形でコピーします。 次にCC2が"dog"なら、A2に"d"、B2に"o"、C2に"g"というふうに、先ほどの下の行にコピーします。 次のコピー対象に対しては、A3が貼り付けの起点となります。その次の起点はA4ですが、その次はM1が起点になります。M2、M3と起点が移り、M4までいくとその次はY1が起点となります。Y2、Y3と起点が移り、Y4までいくと次はAK1が起点となり、以後4行ごとに列が変わっていきます。 コピー対象セル内の文字数が13文字以上になると、以後のコピー時にかぶさってしまう部分が発生しますが、それはそれでかまいません。 コピー対象の列は常にCCで、範囲は常に1~100です。また、貼り付けるセルの出発点は常にA1です。 コピー対象セルの数が多いと、CC列にも貼り付けられてしまいますが、実際は空欄セルが多いのでCC列に貼り付けられるケースはまずあり得ません。そういうケースが生じた場合はそのままでかまいません。 上記のことができるマクロを教えてもらいたいのですが。

  • エクセル マクロ 特定のフォルダ内 ファイルコピー

    エクセルのセルに入力されたフォルダを参照して、 CSVファイルを シート1・2・3・4に1度にコピーしたいのですが 例えば C\ドキュメント¥フォルダA |-フォルダB |-フォルダC                 |-フォルダD                 |-フォルダE                        |-フォルダ1                             |-CSVファイルA                         |-フォルダ2                             |-CSVファイルB                          |-フォルダ3                             |-CSVファイルC                         |-フォルダ4                              |-CSVファイルD 上記のアドレスで シート1のA1セルに フォルダEを入力し  シート2に CSVファイルA シート3に CSVファイルB シート4に CSVファイルC シート5に CSVファイルD それぞれすべての内容を貼り付けたいのですが 何分初心者なもので ご指導いただければと思います。  ちなみに A1セルの入力は変わるため各シートは1度削除した上で再度貼り付けを行いたいです。     

  • エクセルのマクロを使用したコピー

    仕事でよく使うデータを入力が簡単に出来るように色々と試しているのですが、A1のセルに「A・B・C」と入力されており、ボタンかリストボックスでA・B・Cのいずれかを選ぶと選んだ文字に図形の丸で囲うようにしたいのですが、当初はそれぞれに丸をつけたセルを表の外のセルに作っておいてそれぞれを選択したした時にコピー→貼り付けにしていたのですが、その選ぶ項目がかなりあるので一つ一つのセルをマクロに入力するのは時間がかかるので現在選んでいるセルに特定のセルを貼り付けるか丸を書くと言った事は出来ないでしょうか?

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

専門家に質問してみよう