
あるブックのマクロを実行すると、別のブックの指定したシートにセル範囲のデータを値で貼り付ける処理をしていますが、
指定したシートが別のブックに存在すればそこに貼り付けますが、
無かった場合、新規でシートを作って貼り付ける様にするにはどうしたら良いでしょうか?
例えば、
元ブック.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も見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
VBA 存在しないシートを選択した時にエラーメッセージを表示するには?
Visual Basic(VBA)
-
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
-
4
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
5
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
6
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
7
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
EXCELのVBAで作業ファイルを閉じてもメモリの解放をしなくて困っています
Excel(エクセル)
-
10
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
11
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
12
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
特定の文字を含むシートだけマ...
-
【VBA】シート名に特定文字が入...
-
VBAで指定シート以外の選択
-
エクセルのシート名変更で重複...
-
ユーザーフォームに入力したデ...
-
【Excel VBA】Worksheets().Act...
-
別のシートから値を取得するとき
-
シートが保護されている状態で...
-
Excel VBA リンク先をシート...
-
実行時エラー1004「Select メソ...
-
IFステートの中にWithステート...
-
userFormに貼り付けたLabelを変...
-
Worksheet_Changeの内容を標準...
-
エクセルVBA Ifでシート名が合...
-
C#でExcelのシートを選択する方法
-
ブック名、シート名を他のモジ...
-
エクセルで通し番号を入れてチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
ブック名、シート名を他のモジ...
-
【VBA】シート名に特定文字が入...
-
シートが保護されている状態で...
-
VBAで指定シート以外の選択
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
VBA 存在しないシートを選...
-
IFステートの中にWithステート...
-
実行時エラー'1004': WorkSheet...
-
Excel VBA リンク先をシート...
-
エクセルVBA Ifでシート名が合...
-
ExcelVBA:複数の特定のグラフ...
-
ExcelのVBAのマクロで他のシー...
-
実行時エラー1004「Select メソ...
おすすめ情報