LoginSignup
0
0

[備忘録]保護ビューでのBook操作

Posted at

保護ビューのBookに対し操作したい

ダウンロードしてきたエクセルを開くと保護ビューで開かれて、ActiveWorkbookなどを利用しているマクロが利用できなかった。

image.png

保護ビューで開かなければ良いだけなのだけど、それを変えるのも面倒なのでActiveWorkbook部分などのマクロを修正した備忘録になります。

エラーになった箇所

ActiveWorkbook

↓だとActiveWorkbookが取得できずエラーに

修正前.vb
For Each targetSheet In ActiveWorkbook.Sheets
	' なんらかの処理
Next targetSheet

↓ProtectedViewWindowsを利用して、保護ビューでもActiveWorkbookと同じようにする。

修正後1.vb
For Each targetSheet In Application.ProtectedViewWindows(1).Workbook.Sheets
	' なんらかの処理
Next targetSheet

↓保護ビューでないBookのとき用に条件を入れておく

修正後2.vb
Dim targetSheet As Worksheet

If ActiveWorkbook Is Nothing Then
    ' ActiveWorkbook がNothingの場合、保護ビューで開かれていると仮定して、Bookを取得
    Set targetBook = Application.ProtectedViewWindows(1).Workbook

Else
    Set targetBook = ActiveWorkbook
End If

For Each targetSheet In targetBook.Sheets
  ' なんらかの処理
Next targetSheet

(保護ビュー以外で、ActiveWorkbook がNothingの場合は検討してません。。)

Workbooks(TARGET_BOOK_NAME).Activate Sheets(resultListBox.Value).Select

↓の様な箇所があってシートを選択しようとした部分でエラー

修正前.vb
TARGET_BOOK_NAME = "something"
TARGET_SHEET_NAME = "something"

 ’ {中略}
Workbooks(TARGET_BOOK_NAME).Activate
Sheets(TARGET_SHEET_NAME).Select

ProtectedViewWindowsを利用

修正後1.vb
Application.ProtectedViewWindows(TARGET_BOOK_NAME).Workbook.Activate
Application.ProtectedViewWindows(TARGET_BOOK_NAME).Workbook.Sheets(TARGET_SHEET_NAME).Select

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0