|
マスターとなるブック("base.xls"とします)に数値データがあり,あるブック("output.xls"とします)が存在する場合は,このブックを開き,ない場合は,新規ブックを開き,"aaa.xls"又は新規ブックに"base.xls"の数値データをコピーするマクロを作成しています。
以下のようにしました。
With Application.FileSearch
.Filename = "output.xls"
If .Execute > 0 Then
Workbooks.Open Filename:="output.xls"
Else
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="output.xls"
End If
End With
そして,次のようにして,コピーを行わせてます。
Windows("base.xls").Activate
Sheets("sheet1").Select
range("A1:A50").select
Selection.Copy
Windows("output.xls").Activate
Sheets("sheet1").Select
range("A1").select
ActiveSheet.Paste
(Sheet2についても同様にしてコピー作業を行い,
以降のSheetも繰り返し行わせています。)
この後,コード化は省略しますが(Call文等があったり長くなるので・・・),貼付した"output.xls"のデータを利用して,さらに別ブック(例えば"result.xls")に必要なデータだけを貼り付けて,別ブックで最終計算を行わせます。
最後にKill "output.xls"として,"output.xls"自体消去させ,マクロが終了します。
(直接,"base.xls"から別Sheetに貼り付ければ等と指摘を受けそうですが,今回は無視してください)
今回は新規ブックを"output.xls"と名前を付けて保存させましたが,仮に名前の変更を行わない場合(ActiveWorkbook.SaveAs Filename:="output.xls"を省略),新規ブック名は"Book1.xls"となると思います。
(自動マクロで新規ブックを開いてコピーをさせる作業を記録させて確認した結果, 勝手に"Book1.xls"となっていました。)
ただし,この場合,すでに"Book1.xls"が開いていた場合,"Book2.xls"となってしまい,Excelの使用条件によって,一定の名前にならないことが考えられます。
ここで質問なのですが,上記から,新規ブックに特定の名前を付けて保存しておかなければ,いかなる条件においても正常にマクロが作動しないのではと思い,上記のようにコード化したのですが,新規ブック名の変更作業を表すコードは必要なものなのでしょうか?
マクロとしては正常に流れるので問題はないのですが,最後に"Book1.xls"自体も消去させるので,ファイル名の変更作業がなければ,よりベストと考えています。
簡潔なコードがあれば是非ご教示願います。
よろしくお願いします。
|
|