excel のマクロ(VBA)に関する質問です。

ファイル名に番号を振ってあるブック
data-01.xls,data-02.xls...(沢山ある)をあけて、シート名data-01 という名前のシートの特定の範囲をとってきて、同名のシートとして、別のブックにつけたしてゆくのはどういったスクリプトをかけばいいのでしょうか? つまり、複数のブックから該当すルシートを切り出してきて、それをひとつのブックにまとめたいのです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/04/06 16:18:16
  • 終了:--

回答(2件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982005/04/06 16:29:21

ポイント25pt

Workbooks.Open Filename:= ブックファイル名 コピー元

Workbooks.Open Filename:= ブックファイル名 コピー先

で ブックを開き


Workbooks(ブックファイル名 コピー元).Worksheets(シート名).Select

で シートを選択


Workbooks(ブックファイル名 コピー元).Worksheets(シート名).Range(コピーしたい範囲).Copy

で、コピーしたい範囲(例:”A1:B4”)をクリップボードに取り込み


Workbooks(ブックファイル名 コピー先).Worksheets(シート名).Select

で シートを選択


Workbooks(ブックファイル名 コピー先).Worksheets(シート名).Rows(貼り付け開始位置).Select

で、貼り付けを開始する位置(左上のセル)を選択させ


Workbooks(ブックファイル名 コピー先).Worksheets(シート名).Paste

で貼り付け

といった感じでできるでしょう。

id:kaiketsu

ありがとうございます。

ファイルがたくさんあるので、for 文をつかってファイル名を発生させて処理したいのですが、変数名などどうかけばいいのでしょうか? VBA詳しくないので、よろしくお願いします。

2005/04/06 16:35:36
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982005/04/06 16:52:35

ポイント25pt

不明な部分があったので、主なやり方だけ記述したのですが


>シート名data-01という名前のシートの特定の範囲をとってきて、

これは、セルの範囲かなぁと思ったけど、


シートの複写ぽい気もするので そちらのスクリプトを書いてみます。


dim a as string

dim k as integer


Workbooks.Open Filename:= ”c:¥copyato.xls”


for k=1 to 99

a=100+k

a=right(a,2)

Workbooks.Open Filename:= ”c:¥data-” & a & ”.xls”

Workbooks(”data-” & a & ”.xls”).Sheets(”data-01”).Copy before:=Workbooks(”copyato.xls”).Sheets(Workbooks(”copyato.xls”).Sheets.Count)

Workbooks(”data-” & a & ”.xls”).Close (False)

next k

上記でダメならば、ダイアリーのほうに補足します。

id:kaiketsu

ありがとうございます。変数名の結合の書式 & a & などがわからなかったので助かります。

2005/04/06 17:39:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません