はじめに
この記事の内容は、Windows 専用です。macOS の Excel を持っていないため、同様の不具合が発生しているのか、そもそも確認できていません。
問題
Google 検索 で「excel スクリーンショット edge」と入力すると「真っ黒」というサジェストが出ます。そこそこ困っている人が多いようです。
これはセキュリティのためですが、Edge の画面をスクリーンショットに撮って Excel に貼り付けるという要件は少なくありません。
Excel にはスクリーンショットを簡単に挿入する機能がありますが、一部のアプリ、例えば Web ブラウザの Microsoft Edge などでは、その機能を使うと真っ黒のイメージが貼り付けられます。使えません。他の手段でスクリーンショットを撮ることはできるのですが、手順が多くて面倒です。
他の手段でスクリーンショットを撮る
他の手段は、以下の通りです。
VBA で解決
以上の手順を、VBA で自動実行するようにします。
「個人用マクロブック」に「標準モジュール」を追加して、以下のコードを貼り付けてください。
部分的に赤字になるかもしれませんが、大丈夫、実行できます。
Optional Explicit Private ws As Worksheet #If Win64 Then ' 64bit 用 Private Declare PrtSafe Sub keybd_event Lib "user32" ( _ ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long _ ) Private Declare PrtSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #Else ' 32bit 用 Private Declare Sub keybd_event Lib "user32" ( _ ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long _ ) Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If Public Sub アクティブ画面を撮って貼付ける() On Error GoTo ERR_EXIT Set ws = ActiveSheet Application.Visible = False Application.OnTime Now + TimeValue("00:00:01"), "PrintScreenActiveWindowAndPaste" ' 少し待っているのは、Excel を非表示にした瞬間に Tooltip などが残る可能性があるため。 ERR_EXIT: Application.Visible = True End Sub Private Sub PrintScreenActiveWindow() keybd_event &HA4, 0&, &H1, 0& keybd_event vbKeySnapshot, 0&, &H1, 0& keybd_event vbKeySnapshot, 0&, &H1 Or &H2, 0& keybd_event &HA4, 0&, &H1 Or &H2, 0& End Sub Private Sub PrintScreenActiveWindowAndPaste() PrintScreenActiveWindow DoEvents Sleep 75 DoEvents Application.Visible = True ws.Activate Set ws = Nothing ActiveSheet.Paste End Sub
リボンに登録する
上記で作成したマクロをリボンに登録します。登録するマクロは「アクティブ画面を撮って貼付ける」です。
マクロの使い方
設定は以上です。リボンに追加したボタンをクリックすると、マクロが実行されます。
マクロは以下のように動作します。
したがって、Excel が非表示になったときに Edge が最前面になっていれば、期待通りスクリーンショットが撮れます。
注意点
- 価格: 2618 円
- 楽天で詳細を見る