プロが教える店舗&オフィスのセキュリティ対策術

Excelのオプションの「全般」の「ユーザーインターフェイスのオプション」の「複数ディスプレイを使用する場合」の設定をVBAにて取得したいのですが、どのような方法になるのかお教えいただきたいです。
具体的には
・表示を優先した最適化
・互換性に対応した最適化
のどちらが選択されているのかをVBA上で取得したいと思っています。
よろしくお願いいたします。
Excel (Microsoft365)

A 回答 (1件)

こんにちは。



通常の方法ではできません。

レジストリーから設定値を取得します。
下記は読込だけなので、レジストリーを破損する危険性はありません。
設定値の変更については、理解がないと危険なので記述しません。

古いバージョン Office ではオプション自体が存在しません。
環境がないので確認できませんが、Office2016 以降ぐらい?

Excel のバージョンで分岐処理するなど工夫して下さい。

Sub sampleProc()

  'memo: RenderForMonitorDpi (REG_DWORD) 0 =無効 / 1 =有効
    
  Const REG_SECTION As String = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Excel\Options"
  Const REG_KEY   As String = "RenderForMonitorDpi"

  Dim shell As Object
  Set shell = CreateObject("WScript.Shell")
  
  Dim result As Long
  result = shell.RegRead(REG_SECTION & "\" & REG_KEY)
  
  Set shell = Nothing
  
  MsgBox IIf(result = 1, "[表示を優先した最適化]", "[互換性に対応した最適化]")

End Sub
    • good
    • 1
この回答へのお礼

早速のご回答大変ありがとうございました。
オプションの設定を変えてみて、正しく取得できていることを確認しました。
レジストリの取得は初めてでしたが、比較的シンプルで自分でも不安なく使えそうです。
バージョン部分はとりあえず「Application.Version」を埋め込んでみました。(これでよいのかは少し確認してみます。)

今回初めて「教えてgoo」を使わせていただきましたが、独力ではとてもたどり着なかったので、非常に助かりました。
誠にありがとうございました。

お礼日時:2022/08/01 22:46

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