人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: kaiketsu
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:Excel VBA xls ひとつ スクリプト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●25ポイント

http://www.hatena.ne.jp/awindow?

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

で貼り付け

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

◎質問者からの返答

ありがとうございます。

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


2 ● きゃづみぃ
●25ポイント

http://www.hatena.ne.jp/awindow

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


>シート名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

http://d.hatena.ne.jp/taknt/

takntの作り話

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ