本当に誰かが私を助けてくれることを願っています。私はVBAで「そんなに」そうだが、ここで何か助けを必要としている。Excel - VBA:複数の動的な名前付き範囲をpowerpointの新しいインスタンスに送信する方法
私はインターネットを拡大していくつかの例を見つけましたが、自分のニーズを満たすためにそれらを調整するのに十分ではないので、誰かが私を助けてくれることを本当に望んでいましたか?
定期的に更新されるレポートがあります。このレポートには、ピボットスライサーなどで基準が変更されるたびに動的に更新される名前の範囲があります。
以下のコードでは、名前付き範囲の1つを取得し、それを新しいpowerpointのインスタンスにコピーします:https://www.thespreadsheetguru.com/blog/2014/3/17/copy-paste-an-excel-range-into-powerpoint-with-vba)。
ただし、名前付き範囲の配列をコピーして、同じスライド上のPowerPointの同じインスタンスに貼り付けるには、これを変更する必要があります。名前付き範囲は「Top5Risks」、「ActionsCompleted」、および「UpcomingActions」です。
貼り付け時にPowerPoint内でこれらの位置をそれぞれどのように設定できるかをアドバイスできれば、本当にうれしいでしょう。つまり、重ねて表示されるのではなく、左上に1つ、右上に1つ、もう1つはたとえば左下です。ここに私が今まで持っているコードはあります:
Sub ExcelRangeToPowerPoint()
Dim rng As Range
Dim PowerPointApp As Object
Dim myPresentation As Object
Dim mySlide As Object
Dim myShape As Object
'One named range
Set rng = Worksheets("FX KPI Dashboard").Range("UpcomingActions")
'Create an Instance of PowerPoint
On Error Resume Next
'Is PowerPoint already opened?
Set PowerPointApp = GetObject(class:="PowerPoint.Application")
'Clear the error between errors
Err.Clear
'If PowerPoint is not already open then open PowerPoint
If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application")
'Handle if the PowerPoint Application is not found
If Err.Number = 429 Then
MsgBox "PowerPoint could not be found, aborting."
Exit Sub
End If
On Error GoTo 0
'Optimize Code
Application.ScreenUpdating = False
'Create a New Presentation
Set myPresentation = PowerPointApp.Presentations.Add
'Add a slide to the Presentation
Set mySlide = myPresentation.Slides.Add(1, 11) '11 = ppLayoutTitleOnly
'Copy Excel Range
rng.Copy
'Paste to PowerPoint and position
mySlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile
Set myShape = mySlide.Shapes(mySlide.Shapes.Count)
'Set position:
myShape.Left = 66
myShape.Top = 152
'Make PowerPoint Visible and Active
PowerPointApp.Visible = True
PowerPointApp.Activate
'Clear The Clipboard
Application.CutCopyMode = False
End Sub
あなたからのアドバイスは本当に感謝して非常に歓迎されます。私の正気はそれに依存します! :)
おかげ
ショーン
P.S.私はMS Office 2013を実行しています
私は、後に完全に対応することができるでしょう - 私のPPT VBAコードを検索することはできませんので、私のWindowsマシンから離れて。 2つのアプローチが思い浮かびます:1)コードの最後にセット位置変数を使って演奏し、必要な3つのケースに対して3つのセットを作成します。 2)Powerpointに名前付きオブジェクトを作成し、VBAを使用してそれを調べると、そのオブジェクトに貼り付けることができます。柔軟性と堅牢性が非常に高くなります。 (オプション2は、既存のpptドキュメントを読み込むようにコードを変更することを意味します(簡単です)、隠しダミーのプレゼンテーション[恐ろしいかもしれないが潜在的にトリッキーな]を含むもの)。 –