0

Excel PowerView ダッシュボードを生成しています。ダッシュボードのスクリーンショットをすばやく表示したいだけのユーザーにとっては便利だと思いました.

スクリーンショットをキャプチャしてローカル ファイルに保存できるマクロを見つけましたが、スクリーンショットはデスクトップ全体またはアクティブなアプリケーションです。これらは両方ともひどく見えます。PowerView のみをキャプチャする必要があります (下の画像を参照)。ここに画像の説明を入力

VBA から画面の特定の部分だけをキャプチャする方法はありますか?

4

1 に答える 1

0

コオロギ....

わかりました、私は最終的にそれを理解しました:

ステップ 1) [Imagemagick][1] をコンピュータにインストールします。VBA から使用できるように、必ず COM コンポーネントを含めてください。

ステップ 2) 参照を VBE に登録します (ツール -> 参照 -> ImageMagick を見つけて有効にします)。

ステップ 3) Excel を閉じて、再度開きます。

手順 4) VBA で次のマクロを作成し、クイック起動バーのボタンに割り当てます。

Sub AltPrintScreen()
Dim a, b

    ' First, take a screenshot and save it
    a = Replace(ActiveWorkbook.Name, ".xlsx", "")
    Set b = ActiveWorkbook
    keybd_event VK_MENU, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0

    Dim chtObj As ChartObject

    With b.Worksheets(1)

    .Activate
    
    ' My resolution is 1366 x 768, adjust this part as per ur rez
    Set chtObj = .ChartObjects.Add(100, 30, 1000, 568)
    chtObj.Name = "TemporaryPictureChart"

    ActiveSheet.ChartObjects("TemporaryPictureChart").Activate
    ActiveChart.Paste

    ActiveChart.Export Filename:=ThisWorkbook.Path & "\" & a & ".jpg", FilterName:="jpg"
End With
chtObj.Delete

'Next, use ImageMagick to crop the image to get only the part you want.
Dim img
Set img = CreateObject("ImageMagickObject.MagickImage.1")
img.Convert ThisWorkbook.Path & "\" & a & ".jpg", "-crop", "845x645+270+62^", "+repage", ThisWorkbook.Path & "\" & a & ".jpg"
Set img = Nothing
Sheets("Power View1").Activate
    
End Sub

ステップ 5) 次に、スクリーンショットを撮りたいシートから、マクロを実行する小さなボタンをクリックします。それでうまくいくはずです(ただし、おそらくパラメーターを微調整する必要があります)。

補足: 次のように、スクリーンショットから ImageMagick に直接移動する方がはるかに簡単でした。

Dim a, img
a = Replace(ActiveWorkbook.Name, ".xlsx", "")
Selection.CopyPicture xlScreen, xlBitmap
Set img = CreateObject("ImageMagickObject.MagickImage.1")
img.Convert "clipboard:myimage", "-crop", "845x645+270+62^", "+repage", ThisWorkbook.Path & "\" & a & ".jpg"

残念ながら、PowerView タブで範囲をキャプチャすることはできません。xlBitmapまた、 ImageMagick を使用している場合は、認識しないxlPicture(ビットマップではない)ため、必ず使用してください。[1]: https://www.imagemagick.org/script/download.php

于 2015-10-07T11:44:37.003 に答える