アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、マクロを使って単純な作業を繰り返したいと思っているのですが、その中でいくつかわからない点があるので質問することにしました。
まず、貼り付けたい元データ(説明上data1と呼びます)が40種類あります。
これらは、すべて異なるファイル名をつけており、1つのフォルダ内に保存しています。
data1上のコピーをしたいと思っている場所は40種類ともすべて同じ場所(セルのH3)です。
これを、まったく新しいエクセルファイル(説明上resultと呼びます)に貼り付けたいと思っています。
このとき、data1の40種類のデータをresultのシート上にA1から順番に縦に並べていきたいと思っています。
この作業をdata1のファイル数である40回繰り返したいと思っているのですが、どうすればいいのでしょうか。

回答をお願いします。

A 回答 (4件)

データのコピー元およびコピー先を明確に書いていただいてないので適当に作成しtwみました。


以下の前提です。

元データはすべて同じフォルダ内にあるBOOKの1枚目(一番左)のシート(名前を問わない)のH3セルにある。
あなたがresultと呼んだコピー先のBOOKの1枚目(一番左)のシートのA1セル以降に順番に貼り付ける。

それでよければ以下のマクロをresultと呼んだコピー先のBOOKの標準モジュールに貼り付け、元データと同じフォルダ内に保存してください。
マクロは書いたことは無くとも、標準モジュールに貼り付けるくらいはできるんですよね?

Sub TEST01()
  Dim myFn As String
  Dim i As Long
  Dim wb As Workbook '以上変数宣言
  Application.ScreenUpdating = False '画面更新一時停止
  myFn = Dir(ThisWorkbook.Path & "\*.xls?") 'エクセルBOOK検索
  Do While myFn <> "" '対象が存在する限り続行
    If myFn <> ThisWorkbook.Name Then 'ファイル名がresultの名と違っていれば
      Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & myFn) '開く
      i = i + 1 'カウント
      wb.Worksheets(1).Range("H3").Copy ThisWorkbook.Worksheets(1).Cells(i, "A") 'コピペ
      wb.Close False '閉じる
    End If
    myFn = Dir() '次検索
  Loop '繰り返し
  Application.ScreenUpdating = True '画面更新停止解除
End Sub

ALT+F8キーでマクロを呼び出し、TEST01を実行してみてください。
    • good
    • 1
この回答へのお礼

わざわざプログラムまで組んでくださって本当にありがとうございます。
こちらのプログラムを用いたことでとてもスムーズに作業が進みました。
本当に感謝しています。

お礼日時:2011/06/06 17:42

200回以上繰り返すなら、それも質問文に書くべきでしたね。


そうだとしても、40ファイルを処理するマクロを、200回繰り返すマクロを作ればいいだけです。
それをやるにしても、40ファイルを処理するマクロを作らないと始まりません。

ところで、40ファイルの処理を200回繰り返す、という状況が想像できないのですが・・・
同じ40ファイルに対して、同じ処理を200回繰り返す?
40ファイル入っているフォルダが200個あって、すべてのフォルダで同じ処理をする?
???

>この場合、1つ目のデータを貼り付けた後に次のデータ貼り付け場所を指定し、ファイルを自動で読み込む方法などはどのようにしたらよいのでしょうか。

???
それは、

>・マクロの記録を開始して
>・data1の1つのファイルを開いて
>・H3をコピーして
>・resultのA1に貼り付けて
>・data1のファイルを閉じて
>・マクロの記録を終了する

これをやってみた上での質問でしょうか?

>ちなみに、VBAマクロは書いたことがないです。

そうなのであれば、まず、マクロの記録のやりかたと、記録したマクロの実行のやり方を覚えましょう。

ネットで検索すればたくさん見つかります。
検索キーワードは
excel マクロの記録 実行
こんな感じで良いです。
    • good
    • 0
この回答へのお礼

何度も回答していただいてありがとうございました。
おかげで無事に解決することができました。

お礼日時:2011/06/06 17:41

40程度なら、



resultシート(のファイル)を開いた状態で、

・マクロの記録を開始して
・data1の1つのファイルを開いて
・H3をコピーして
・resultのA1に貼り付けて
・data1のファイルを閉じて
・マクロの記録を終了する

これで書き込まれたマクロを39回コピペして、読み込むファイル名と、貼り付け先を変更していけば良いです。
40なんてたいした数ではありません。

「すぐに回答してほしい」ほど急ぎなんですよね。
たった40回の繰り返しであれば、繰り返し構文やDir関数を勉強するより早いです。
ましてや、あなたがVBAマクロを書いたことが無かったりしたら、なおさらです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確かに、たった40程度のファイル数なので上記のやり方でも問題ないのですが、
これの作業を200回以上繰り返さなければならないので困っています。

この場合、1つ目のデータを貼り付けた後に次のデータ貼り付け場所を指定し、ファイルを自動で読み込む方法などはどのようにしたらよいのでしょうか。
この方法がわからないのだと書いていなくてすいません。

ちなみに、VBAマクロは書いたことがないです。

お礼日時:2011/06/06 15:34

仮に、ファイル名が、・・・



   data1
   data2
   data3
   data4
    :

ようなネーミングになっていれば、

VBA の for next を使った繰り返しで、ファイル名を生成し
処理することができます。

http://excelvba.pc-users.net/fol6/6_3.html

  ※ data + <繰り返しのカウンター値>


 しかし、ファイル名がまちまちであると、ファイルの数分の
処理を記載する必要があります。


 ただ、ファイル名の一覧を、シート上に、順番に配置しておけば、
上記の for next の繰り返しを使って、ファイル名を生成する代わりに
上から順番に ファイル名を取り出して、処理することは可能です。

参考URL:http://excelvba.pc-users.net/fol6/6_3.html
    • good
    • 0
この回答へのお礼

回答していただいてありがとうございました。
おかげさまで無事に解決しました。

お礼日時:2011/06/06 17:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!