こんにちは。
ExcelのVBAを使用して、異なるBookのシートを取込みたいのですが、
シートが無かった場合の処理方法がわかりません。
現在のコードは下記の様になっております。
With Workbooks.Open"BOOK1.xls"
.Worksheets("Sh1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("A1")
.Worksheets("Sh2").Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1")
.Worksheets("Sh3").Cells.Copy ThisWorkbook.Sheets("Sheet3").Range("A1")
.Close
End With
Book1に指定したシートが無い場合、何もしないようにしたいのですが、
どの様に書き換えれば宜しいでしょうか?
よろしくお願いします。
No.1
- 回答日時:
on error resume next を提案しようと思いましたが、エラーで止まってしまいますね。
逆に、処理対象のシートが存在するときだけ処理しては如何でしょうか。
Sub test2()
Dim sh As Worksheet
For Each sh In ActiveWorkbook
If sh.Name = "Sh1" Then
'処理
End If
If sh.Name = "Sh2" Then
'処理
End If
中略
Next
End Sub
この回答への補足
現在のプログラムは下記の様になっております。
*フォーム*
Private Sub CB1_Click()
If MsgBox("データ展開する?", vbYesNo, "データ展開?") = vbYes Then
Call INPORT.FILE_OPEN1
End If
End Sub
*INPORTモジュール*
Sub FILE_OPEN1()
Dim fnames As String
fnames = fnames1
With Workbooks.Open(Filename:=fnames)
.Worksheets("Sh1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("A1")
.Worksheets("Sh2").Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1")
.Worksheets("Sh3").Cells.Copy ThisWorkbook.Sheets("Sheet3").Range("A1")
.Close
End With
End Sub
Function fnames1() As Variant
fnames1 = Application.GetOpenFilename( _
Title:="ファイルを開く", _
FILEFILTER:="エクセルファイル (*.xls), *.xls")
End Function
ありがとうございます。
早速試してみたのですが、
For Each sh In ActiveWorkbook
の部分で実行時エラーが出ます。
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
どう変更すればよいでしょうか?
No.2ベストアンサー
- 回答日時:
シートがなくても
Sh1とSheet1
Sh2とSheet2
Sh3とSheet3
この関係が崩れないのであれば
On Error Resume Nextを●のところに入れるだけでしょう。
'-------------------------------------
Sub FILE_OPEN1()
Dim fnames As String
fnames = fnames1
On Error Resume Next '●●ここに入れる
With Workbooks.Open(Filename:=fnames)
'---------------------------
以上。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのInitializeイベントとAc...
-
ACCESSのVBAにてExcelのシ...
-
エクセル関数を教えてください
-
エクセルで特定の列が0表示の場...
-
教えて下さい
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
UserForm1.Showでエラーになり...
-
ExcelのVBA。public変数の値が...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
マクロで"#N/A"のエラー行を削...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
サクラエディタ・マクロ → VSCo...
-
ExcelVBAでPDFを閉じるソース
-
配列数式の解除
-
Excel VBAからAccessマクロを実...
-
配列でデータが入っている要素...
-
実行時エラー 438 の解決策をお...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelのInitializeイベントとAc...
-
ACCESSのVBAにてExcelのシ...
-
Excelマクロ 別シートへ連続コ...
-
エクセルVBAで名前の決まってい...
-
VBAで繰り返し処理の速度を...
-
excel
-
「シートを削除しますか」のメ...
-
VBA処理でこんな条件処理ってで...
-
VBAでシートをまたぐ処理の方法
-
エクセルVBAでブックの分割
-
オートシェイプの不具合について
-
エクセル2010の内容を次のシー...
-
同一ブック内・別シートの内容...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
UserForm1.Showでエラーになり...
-
Excel マクロ VBA プロシー...
-
配列数式の解除
-
メッセージボックスのOKボタ...
おすすめ情報