あるブックのマクロを実行すると、別のブックの指定したシートにセル範囲のデータを値で貼り付ける処理をしていますが、
指定したシートが別のブックに存在すればそこに貼り付けますが、
無かった場合、新規でシートを作って貼り付ける様にするにはどうしたら良いでしょうか?
例えば、
元ブック.xlsm から書き込み先.xlsx のBシートに書き込む設定になっていて、
書き込み先.xlsx には、
Aシート、Cシート、Dシート で構成されていたら、Bシートを新規で作成し、
Aシート、Bシート、Cシート、Dシート になるようにしたいです。
※実際にはA、B、C、Dと並ぶわけではないので末尾に追加とか順不同で構いません。
何故なら、元ブック1.xlsm、元ブック2.xlsm・・・と複数あってそれぞれが実行しますが、
これなら、予め全てのシートを準備しておかなくても、全て収集できるようになるからです。
お分かりの方、よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんばんは
方法としては、概ね二通りかと思います。
1)シートを指定して、エラーが発生したら、新規で作成する
2)存在するシートをチェックして、無ければ新規で作成する
1)は、エラー処理として記述すれば良いでしょう。
https://docs.microsoft.com/ja-jp/office/vba/lang …
以下は、2)の方法の例で、関数として作成してみました。
「シート名」と「ブックオブジェクト」を引数として渡せば、対象シートを返す関数です。
(該当するシートがあればそのシートを、無ければ新規に作成して返します)
※ 対象とするブックは、開いている状態であると仮定しています。
Function getSheet(ByRef sheetName As String, ByRef bk As Workbook) As Worksheet
Dim sh As Worksheet
For Each sh In bk.Worksheets
If sh.Name = sheetName Then Exit For
Next sh
If sh Is Nothing Then
Set sh = bk.Worksheets.Add(Type:=xlWorksheet)
sh.Name = sheetName
End If
Set getSheet = sh
End Function
ありがとうございます。
凄く良さそうだとは思うのですが自分の知識が低すぎて試すに至りません。
Call getSheet() の引数の記述が分からないんです。
具体例を出してもらえると助かります。
No.2
- 回答日時:
自Bookの場合についてまずやってみては?
Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Bシート")
On Error GoTo 0
If ws Is Nothing Then
With ThisWorkbook
Set ws = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
ws.Name = "Bシート"
End With
End If
No.1
- 回答日時:
存在しないシートを選択しようとすると
Sheets("あれ").select
実行時エラー9 インデックスが有効範囲にありません
となるので、これでエラー分岐してシートが無ければ加えれば良いのでは。
Sheets.add ・・・・
Excelなら開発タブにマクロの記録が有りますので試してみてください。
ありがとうございます。
素人なのでこんな質問で恐縮ですが、
エラー分岐するのは、
ON ERROR GOTO~ 文を使うという事で合ってますでしょうか?
エラーじゃなければ、存在するシートに、データを貼り付けて、
エラーだったら、まずシートを作成してから、データを貼り付ける、と。
なので、「データを貼り付ける」処理は2回書かないといけないのかな、というのが素朴な疑問です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBA 存在しないシートを選択した時にエラーメッセージを表示するには?
Visual Basic(VBA)
-
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
-
4
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
5
ShowAllDataのエラーを回避したい
Access(アクセス)
-
6
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
7
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
8
EXCELで2つの数値のうち大きい方を採択する数式
Excel(エクセル)
-
9
E列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつく
その他(Microsoft Office)
-
10
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
11
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
12
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
13
VBA 空白セルを削除ではない方法で詰めるやり方
Visual Basic(VBA)
-
14
ExcelのVBAで同一フォルダ内にあるファイルに同じ処理をしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excel マクロについての相談
-
別のシートを参照して計算する方法
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
VBA 最終行まで数式をコピーする
-
【ExcelVBA】全シートのセルの...
-
特定の文字を含むシートだけマ...
-
エクセルのマクロについて教え...
-
VBA 入力月で該当シートを選択...
-
一括印刷マクロ シート名を数字...
-
【ExcelVBA】動的にボタン、ボ...
-
VBA 存在しないシートを選...
-
同じ作業を複数のシートに実行...
-
ListViewの画面の更新
-
実行時エラー1004「Select メソ...
-
シートが保護されている状態で...
-
エクセルで通し番号を入れてチ...
-
【VBA】指定した検索条件に一致...
-
ユーザーフォームに入力したデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報