アプリ版:「スタンプのみでお礼する」機能のリリースについて

①GetOpenFileNameで開いたブックの特定のシートをマクロ実行のブックに移動したく、下記
構文を作成しましたが最後の行でエラーが発生します。(VBA初心者です)
②あと、開いたブックの先にシート名"AAA", "BBB", "CCC"が存在しないとエラーに
なってしまうので、そのシート名が存在しない場合は処理せずに終わらすように改善したいです。

上記2点、下記をどのように変更すれば良いのかご教示お願い致します。

Dim wb As Workbook
Set wb = ThisWorkbook

Dim OpenFileName1 As Variant
Dim wb1 As Workbook
OpenFileName1 = Application.GetOpenFilename
If OpenFileName1 <> "False" Then
Workbooks.Open OpenFileName1
Set wb1 = Workbooks.Open(OpenFileName1)
Else
MsgBox "CANCEL"
Exit Sub
End If

wb1.Activate
Sheets(Array("AAA", "BBB", "CCC")).Move Before:=wb

A 回答 (1件)

こんなふうにしたらいかがでしょうか。



'//
Sub TestOpen()
 Dim wb As Workbook: Set wb = ThisWorkbook
 Dim OpenFileName1 As Variant
 Dim wb1 As Workbook

 OpenFileName1 = Application.GetOpenFilename
  If OpenFileName1 <> False Then
 'OpenFileName1は、Variantだから、Boolean型で返ります。
  Set wb1 = Workbooks.Open(OpenFileName1)
 Else
  MsgBox "CANCEL"
  Exit Sub
 End If
 wb1.Activate
 On Error Resume Next '簡単なエラートラップ
 wb1.Worksheets(Array("AAA", "BBB", "CCC")).Move Before:=wb.Worksheets(1)
' Move 先のwbではなくて、あくまでもシートです。。
  If Err.Number <> 0 Then
  MsgBox "シートの選択に失敗しました。"
  Exit Sub
 Else
  wb.Activate
  wb.Worksheets(1).Select
  '作業グループ解除
 End If
 On Error GoTo 0
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
ご教示頂いた内容を基に頑張って勉強致します。

お礼日時:2018/11/20 14:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!