私は20枚のExcelブックを持っており、これらのExcelシートをVBAを使用してPowerPointにインポートしようとしています。私はほぼ正確に私が行う必要があるコードを作成することができましたが、私は最後の部分のための解決策を見つけることができません..あなたが私を助けることを願っています!複数のExcel範囲をPowerPointにインポート
それぞれのシートから、別の範囲(各シートのセルA1とA2に表示されます)を選択する必要があります。
例えばExcelシート1からセルA1「B3」とセルA2「D12」にあります。つまり、このシートではVBAは範囲B3:D12をコピーする必要があります。
次のシートではまったく同じことが起こるはずですが、セルのA1セルとA2セルであきらめたものに基づいてその範囲を調整する必要があります。次のように
これまでの私のコードは次のとおりです。
Sub PrintPPT()
'Step 1: Declare variables
Dim pp As Object
Dim PPPres As Object
Dim PPSlide As Object
Dim xlwksht As Worksheet
Dim MyRange As String
Dim Cval1 As Variant
Dim Cval2 As Variant
Dim Rng1 As Range
'Step 2: Open PowerPoint, add a new presentation and make visible
Set pp = CreateObject("PowerPoint.Application")
Set PPPres = pp.Presentations.Add
pp.Visible = True
'Step 3: Set the ranges for the data
Cval1 = ActiveSheet.Range("A1").Value
Cval2 = ActiveSheet.Range("A2").Value
Set Rng1 = ActiveSheet.Range("Cval1 : Cval2")
MyRange = "Rng1"
'Step 4: Start the loop through each worksheet
For Each xlwksht In ActiveWorkbook.Worksheets
xlwksht.Select
Application.Wait (Now + TimeValue("0:00:1"))
'Step 5: Copy the range as picture
xlwksht.Range(MyRange).Copy
'Step 6: Count slides and add new blank slide as next available slide number
'(the number 12 represents the enumeration for a Blank Slide)
SlideCount = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, 12)
PPSlide.Select
'Step 7: Paste the picture and adjust its position
PPPres.ApplyTemplate ("C:\Users\Computer\Documents\Templates\Template.potx")
PPSlide.Shapes.Paste.Select
pp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
pp.ActiveWindow.Selection.ShapeRange.Top = 80
pp.ActiveWindow.Selection.ShapeRange.Left = 7.2
pp.ActiveWindow.Selection.ShapeRange.Width = 600
'Step 8: Add the title to the slide then move to next worksheet
Next xlwksht
'Step 9: Memory Cleanup
pp.Activate
Set PPSlide = Nothing
Set PPPres = Nothing
Set pp = Nothing
End Sub
moosemanを手伝ってくれてありがとう! このコードは、私が持っていた問題の一部を修正しますが、最初のシートでのみ機能します。残りのシートについては、シート1からの範囲を使用し続ける(残りのシートの範囲を考慮しないで)。どのようにこれを修正するための任意のアイデア? – ErikSlui
私は答えを編集して、ワークシートを直接参照して範囲を取得しました。 "MyRange ="行を参照してください。 – mooseman
これは完全に機能しました!ありがとうたくさんのmooseman! – ErikSlui