
こんにちは。VBA初心者です。
ブックを2つ開いた状態で、
マクロを保存してあるブック〔Book1〕から、
毎回ブック名が異なる[Book2]の選択されている2枚のシートを新しいブックに(仮Book3)コピーしたいのですが、どのように記述したらよいのでしょうか。(選択されるシートも毎回異なります。)
特に教えていただきたい部分は、
1.マクロが記録されているBOOK1以外のBookを操作する方法。
2.私以外の方が利用する為、Book1に保存したマクロから実行させる予定なのですが、Book1を毎回開いて実行させる方法がベストのやり方なのでしょうか。
マクロの記録では下記の感じになります。
Sub Macro4()
Windows.Arrange ArrangeStyle:=xlVertical
Windows("Book2.xls").Activate
Sheets(Array("Sheet3", "Sheet4")).Select
Sheets("Sheet4").Activate
Sheets(Array("Sheet3", "Sheet4")).Copy
End Sub
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
基本を述べます。
(1)一つのExcelプロセスには一つのApplicationがある。
(2)一つのApplicationは複数のブックを開ける。故にApplicationには
Workbooksコレクションがある。(複数形に注意)
(3)既存のワークブックを開くには上記コレクションに追加する。
Dim 既存 As Workbook '★単一オブジェクトなので単数形
Set 既存 = Workbooks.Open("C:\~\hoge.xls")
(4)新しくワークブックを作るには上記コレクションに追加する。
Dim 新規 As Workbook
Set 新規 = WorkBooks.Add
仮に既存から新規に2シートをコピーするとなると、以下のようになります。
既存.Sheets(Array("Sheet1", "Sheet2")).Copy After:=新規.Sheets(1)
ポイントは次の4点です。
(1)既存ワークブックのパス名
(2)コピー元のシートの範囲
(3)コピー先の位置(例えば、先頭にコピーするとか・・・)
(4)新規ワークブックの保存先のパス名
以上の点を解決できれば、Excelマクロ以外にもVBS、HTA等の方法で
処理することができます。個人的にはHTAがお勧めですが、好みです。
No.3
- 回答日時:
>教えていただいたやり方ですと、毎回ブック名が変わるので
>無理ですよね。
回答したコードではそうですね。
他に、自動で「ファイルを開くダイアログ」を表示させてユーザーにファイル(ブック)選ばせることも可能です。
>他にもアドインとか他に方法があるようでしたら
>その方法を教えていただきたかったです。
あぁ、そういうことですね。
他にも方法はあると思います。が、エクセルファイルを扱うのでしたら
Excelマクロを使う方法が分かりやすくていいんじゃないですかね。
No.1
- 回答日時:
>1.マクロが記録されているBOOK1以外のBookを操作する方法。
マクロ内でそのbookを指定すればいいです。もちろん開いてないといけないですが。
(例)
[あああという名前のブックを開く]
Workbooks.Open Filename:="C:\happy\あああ.xls"
[あああというブックのテストというシートをコピー]
Workbooks("あああ.xls").Worksheets("テスト").copy
等など
自分のブックは、Thisworkbook.Worksheets(1).・・とかです。
>2.私以外の方が利用する為、Book1に保存したマクロから実行させる予定なのですが、Book1を毎回開いて実行させる方法がベストのやり方なのでしょうか。
Book1にマクロがあるのなら、Book1を開かずしてどうやって実行するのでしょうか?あなたが利用する場合はマクロが記述されているブックを開かずにマクロを実行できるということですか?
この回答への補足
なんだか回答をいただいているうちに、わかってきました。
教えていただいたやり方ですと、毎回ブック名が変わるので
無理ですよね。
自分のブックは、Thisworkbook.Worksheets(1).なので、
自分以外開いているのブックの名を取得すればいいんですね。
そこに気がつきませんでした。
2他にもアドインとか他に方法があるようでしたら
その方法を教えていただきたかったです。/≧≦\
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/01/27 13:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
【Excel VBA】マクロでExcel自...
-
エクセル関数>参照ファイル名...
-
マクロの保存先、開いてるすべ...
-
【Excel】マクロの保存先について
-
[フィルターオプションの設定]...
-
ファイル名変更後も、マクロを...
-
エクセルのvbaにて thisworkboo...
-
EXCELマクロで、開いてはいるが...
-
エクセルを開いて文字を打つ際...
-
エクセル;相対パスを絶対パスへ...
-
マクロ 自動でパスワード及び指...
-
EXCELブックが勝手に開いて困っ...
-
【Excel】特定セルの内容をテキ...
-
EXcelのマクロで相対パスでファ...
-
エクセルVBA 個人用マクロブッ...
-
複数のExcelファイルの印刷設定...
-
エクセルで未保存に対するメッ...
-
複数のExcelブックから特定シー...
-
excelで直前に参照していたブッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
エクセル関数>参照ファイル名...
-
【Excel VBA】マクロでExcel自...
-
エクセルのvbaにて thisworkboo...
-
マクロの保存先、開いてるすべ...
-
エクセル;相対パスを絶対パスへ...
-
【Excel】マクロの保存先について
-
EXcelのマクロで相対パスでファ...
-
複数のExcelファイルの印刷設定...
-
excelで直前に参照していたブッ...
-
EXCELマクロで、開いてはいるが...
-
[フィルターオプションの設定]...
-
EXCELのボタンによるマクロの登...
-
EXCELブックが勝手に開いて困っ...
-
エクセルで使用期限付きのブッ...
-
エクセルを開いて文字を打つ際...
-
エクセルで未保存に対するメッ...
-
エクセルVBA 個人用マクロブッ...
-
【マクロ】マクロが保存されて...
-
エクセルで複数ファイルのセル...
おすすめ情報