ExcelからPowerpointまでの範囲をテーブルとして貼り付けています。複数のExcelテーブルを別々のPowerPointスライドに配置する
問題は、最初のテーブルを貼り付けると、ポジショニングが正常に機能しますが(.Topと.Left)、最初のテーブルの後に貼り付けられたテーブルは、最初のテーブルから相対的に配置されます。
.Topは、テーブルの左上隅と最初のテーブルの位置の上端との間の距離になります(スライドの上辺ではありません!)。同じことが起こります。左(テーブルの左上隅から最初のテーブルの左端までの距離を表します)。
コードは以下の通りです:
Sub ExportaraPowerPoint()
Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
Dim pptShape As PowerPoint.Shape
Dim excelTable As Excel.Range
Dim SlideTitle As String
Dim SlideText As String
Dim SlideObject As Object
Dim pptTextbox As PowerPoint.Shape
Dim SlideNumber As String
Dim xlTable As PowerPoint.Shape
'Check is PPT is open and create if not
On Error Resume Next
Set pptApp = GetObject("", "PowerPoint.Application")
Err.Clear
If pptApp Is Nothing Then Set pptApp = CreateObject(class:="PowerPoint.Application")
pptApp.Visible = True
pptApp.Activate
'Add presentation
Set pptPres = pptApp.Presentations.Add
pptPres.PageSetup.SlideSize = ppSlideSizeOnScreen
pptPres.ApplyTemplate "c:\Program Files\Microsoft Office\Templates\1033\Blank.potx"
'Assing Tables
Set excelTable1 = Worksheets("TDSACI").Range("N246:U259")
Set excelTable2 = Worksheets("TDCSD").Range("N215:U223")
'Slide 1:
Set pptSlide = pptPres.Slides.Add(1, ppLayoutTitleOnly)
excelTable1.Copy
pptSlide.Shapes.PasteSpecial (ppPasteDefault)
pptSlide.Shapes(2).Width = 670.4
pptSlide.Shapes(2).Height = 292
pptSlide.Shapes(2).Left = 24.4
pptSlide.Shapes(2).Top = 90.4
'Slide 2:
Set pptSlide = pptPres.Slides.Add(2, ppLayoutTitleOnly)
excelTable2.Copy
pptSlide.Shapes.PasteSpecial (ppPasteDefault)
pptSlide.Shapes(2).Width = 670.4
pptSlide.Shapes(2).Height = 292
pptSlide.Shapes(2).Left = 24.4
pptSlide.Shapes(2).Top = 90.4
私は、テーブルには、常に形状指標番号2であるので、それは問題ではないことを知っています。
数字によると、両方のテーブルの位置は同じである必要があります。
それは働きました!ありがとうございました!本当に!私はこんなにこだわっていた...ありがとう!!!!! – thePB
1つの質問:私はOn Error Resumeをオンラインのページからコピーしました。(私はVBAで新しいので、あまり理解できません)、本当に必要だと思いますか?ありがとう – thePB
VBAはすべてのエラーを無視するように指示します。現実の世界で予期せぬ挙動を発生させると(b)予期せぬ動作を引き起こす可能性があるため、(意図的なエラートラップなどの理由がないと)使用することは非常に悪いプログラミングです。 On Error Gotoエラーハンドラーのようなエラーハンドラーを使用し、コードエラーハンドラーの末尾にアンカーがある方がはるかに良いです: –