マクロを実行する同じフォルダ内にある「TEST.xlsx」を開いて、
その「TEST.xlsx」に存在するワークシート「TEST1」を、マクロを実行している
エクセルに移動して、TEST.xlsxを閉じた後に「処理1」の処理を進める構文を
作成しました。
Workbooks.Open Filename:=PASS & "\TEST.xlsx"
Sheets("TEST1").Move After:=wb.Sheets(1)
Workbooks("TEST.xlsx").Close SaveChanges:=False
処理1
End Sub
※PASSには、マクロを実行するファルダパスが格納されています。
wbには、マクロを実行しているブック名が格納されています。
「TEST.xlsx」が存在しない場合、もしくはワークシート「TEST1」が存在しない場合、
「処理1」を実行せずに別の「処理2」を実行して終了させたいのですが、
どのようにすればいいかご教授頂けないでしょうか?
もちろんどちらも存在する場合は「処理1」を実行して終了となります。
IF文やON ERR等でやれば良いのかと思うのですが、上記構文からどのようにそれを組み込めば
良いのかよくわからず質問させていただきました。
VBA初心者で申し訳ございませんがよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
* web を自ブック(ThisWorkbook)にしました。
なお、PASS は、PATH のことだと思います。末尾に、\ に置くようにしてください。
こういうスタイルのものは、なかなか難しいです。
-------------------------
''Option Explicit
Sub TestOpenBK()
Dim wb As Workbook
Dim wb2 As Workbook
Dim dummy As Variant
Dim iflg As Integer
Const PASS As String = "D:\" 'こちらがわに、パスセレクター(\)を置くようにしましょう。
Set wb = ThisWorkbook '*
If Dir(PASS & "TEST.xlsx") <> "" Then
Set wb2 = Workbooks.Open(Filename:=PASS & "TEST.xlsx")
Else
iflg = 1
GoTo ErrHandler
End If
On Error Resume Next
dummy = wb2.Worksheets("TEST1").Range("A1").Value
If Err.Number <> 0 Then
iflg = 2
GoTo ErrHandler
End If
On Error GoTo 0
wb2.Sheets("TEST1").Move After:=wb.Sheets(1)
wb2.Close False 'ここで保存せずに終了
Exit Sub
ErrHandler:
Dim msg As String
If Not wb2 Is Nothing Then
wb2.Close False
End If
If iflg = 1 Then
msg = "ファイルが見つかりません。"
ElseIf iflg = 2 Then
msg = "シートが見つかりません。"
End If
MsgBox msg, vbExclamation
End Sub
No.2
- 回答日時:
すみません、resume は不要ですね。
解決しなければ、ステップインでデバッグして、どういう順番で実行され、どこでエラーが起きているのか調べてみてください。
https://www.239-programing.com/excel-vba/basic/b …
このやり方を覚えれば、自己解決能力が一気に高まります。
ありがとうございます。
№1でご教授頂いた内容の場合、「ファイル処理」時だけでなく、「処理1」中にもしエラーが発生しても
hogehoge:に飛んでしまう結果になるので悩んでいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/05/23 15:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Excel(エクセル) VBA ワークシート指定の1行目を選択をしたい 2 2022/08/20 18:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
どうやってもFor文を抜けてしま...
-
vbaのエラー対応(実行時エラー...
-
特定の名前のオートシェイプの...
-
条件文でelseはつけるべき?
-
“try/catch”と“if/else”
-
エクセルVBAでロックをかけたい
-
シグナル 6(SIGABRT)とは?
-
エクセル VBAで複数セル選択時...
-
CImage::Loadの戻り値は何でし...
-
iPhoneのニューラルエンジンっ...
-
VBA Vlookup #N/A表示させない方法
-
【Vb.net】プリンタジョブの取得
-
VBA 複数の行を高速で削除する...
-
StatusStripの表示が更新されな...
-
IF文に時間(何時から何時ま...
-
VBAの進捗状況をリアルタイ...
-
private subモジュールを他のモ...
-
特定のファイルを他のプロセス...
-
複数個のTextBoxでいずれかの内...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
特定のファイルを他のプロセス...
-
ExcelのVBAで、選択したファイ...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
Word VBA。各マクロの間に待ち...
-
【VBA】エラー処理で別プロシー...
-
UWSCのTHREADについて
-
シェルスクリプトでファイル内...
-
ドリブン??
-
Functionで戻り値を複数返す方法
-
iPhoneのニューラルエンジンっ...
-
エクセル VBAで複数セル選択時...
-
COBOL OCCURSで指定したデータ...
-
どうやってもFor文を抜けてしま...
おすすめ情報