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

VBAを勉強中で、分からないので教えてください。

2つのWorkbook間でCopy、Pasteを繰り返し、必要なデータ
を一覧に書込みするマクロを作成する時

Excelデータ(同じフォーマットでセルに入っているデータが少し
ずつ違う)で、異なるファイル名、異なるシート名になってしまって
いるものをマクロで処理をしたいのですが、VBAで書き込む時
にはWorkbooks("○○").Worksheets("○○")と指定しなくて
は動作してくれないので、どのように指定したらいいか困っています。
「直前にアクティブだったWorkbook指定する」「先頭に位置する
sheetを指定する」なんてコードがあれば、一番いいのですが、
そういうコードはあるのかもわかりません。

最終的には"あるセル"に入っているファイル名で保存してしまう
ので、一時的に仮ファイル名、仮シート名に変えて、後に削除
して処理をすればいいかなとが思うのですが、どうやって処理
したらいいのかわかりません。

やりたい事をうまく説明出来ているかわかりませんが、ファイル名、
シート名が違う元のデータから、一覧表へ書き込むマクロを組み
たいのです。その際の元データの指定方法を知りたい or 一時的
に名前を変えて処理する方法を知りたいです。

一覧表へ書込みをした後にメールで添付してその元データ
(”あるセル”にファイル名変更したもの)を送り返したいのですが、
メールへ添付する事までマクロで出来ると助かります。マクロで
そこまで出来ますか?これも合わせて教えていただけたらと思います。

つたない説明ですみませんが、よろしくお願いします。

A 回答 (2件)

オブジェクトの指定方法はいろいろ用意されています。

目的に応じて使いやすい方法で指定すればよいでしょう。

Worksheetを例にすると
シート名で指定:Worksheets("シート名")   シート名は変数でも可
インデックス:Worksheets(index)   インデックスは数値(変数も可)
        Worksheets.Item(index)も同様    名前指定も可
        (インデックスだとシートの見出し順となります)
オブジェクト名:(シートの)オブジェクト名  (例:Sheet1←シート名とは別)
特定のシート:ActiveSheet
  などです。

Workbookもほとんど同様ですが、特定のブックの指定ではActiveWorkbookのほかにThisWorkbookなどもあります。

さらにこれらのオブジェクトを効率よく使い分けるために、No1様もおっしゃっているように変数に代入しておけば、仮のシート名(?)などは不要でしょう。
 nam="元シート"
 Set Src=Worksheets(nam)
 Set Dst=Worksheets(1)
   ・・・・・・・・・
 Dst.Cells(1,1).value=Src.Cells(1,10).value
などといった使い方をしているのが通常のようです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
変数にActiveWorkbookやThisWorkbookなども入れられる
のですね?なんとかやりたい事が出来そうです。ありが
とうございました。

お礼日時:2008/12/01 10:53

変数を使って処理してください。


Dim Src As Workbook 'コピー元
Dim Dst As Workbook '一覧(コピー先)
Set Src = Workbooks.Open("C:\~")
Set Dst = Workbooks.Add '新規作成の場合
'= = = コピー作業 = = =
Dst.SaveAs "C:\~" '「名前を付けて保存」と同じ操作
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Dimを使用してどうにか出来そうです。
まだまだVBAは奥が深い、、、
ありがとうございました。

お礼日時:2008/12/01 14:00

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