![](/img/trans.png)
[英]VBA PowerPoint 2016 shapes BuildFreeform properties after .ConvertToShape
[英].Left positioning shapes in wrong place in PowerPoint 2016 VBA
我正在嘗試從Excel工作表中復制范圍,並將其粘貼到表格中的幻燈片中,然后對其進行定位和調整大小。 但是,當我嘗試將形狀放置在ppt中時,.Left方法的行為不符合預期; 在屏幕左側的幻燈片縮略圖中,形狀處於預期的位置(在下面的代碼中為中心),但是當我選擇幻燈片時,形狀移到了應有的位置的右側。
我認為它可能是以“中心”為參考點,而不是幻燈片的左邊界,但這與其偏移量不匹配。
非常感謝您提供一些幫助-最好知道這是ppt中的錯誤還是我的代碼中的錯誤,就像這是一個錯誤,對項目的可行性有很大的影響。 對於此特定示例,我可能會使用.Align方法作為解決方法,但對於以后的幻燈片,我需要能夠在同一張幻燈片上准確定位多個形狀。
我正在使用Office 365。
代碼如下:
Sub PP_export()
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim XLws As Worksheet
Set PPApp = New PowerPoint.Application
Set XLws = ActiveSheet
Set PPPres = PPApp.Presentations.Open("Y:\Research\PROJECTS\2018\Magic Macro\ppt_template_.potx")
PPApp.Visible = True
''Lifestyle Statements
'By Col%
Set PPSlide = PPPres.Slides(3)
Dim LSCol As PowerPoint.Shape
XLws.Range("M106:o126").Copy
PPSlide.Shapes.PasteSpecial ppPasteDefault
Set LSCol = PPSlide.Shapes("Table 2")
With LSCol
.Left = (28.35 * 10.56)
.Top = (28.35 * 3.83)
.Height = (28.35 * 13.21)
.Width = (28.35 * 12.75)
End With
'By Index
Set PPSlide = PPPres.Slides(4)
Dim LSIndex As PowerPoint.Shape
XLws.Range("Q106:s126").Copy
PPSlide.Shapes.PasteSpecial ppPasteDefault
Set LSIndex = PPSlide.Shapes("Table 2")
With LSIndex
.Left = (28.35 * 10.56)
.Top = (28.35 * 3.83)
.Height = (28.35 * 13.21)
.Width = (28.35 * 12.75)
End With
如果使用模板,則需要遍歷表和數據。 如果幻燈片3上已有一張桌子(表2),則可以使用它。 只需發送excel文件對象和模板(路徑+名稱),可能需要進行一些修改。
Sub Slide_3(ByRef xlWorkBook, Template)
For Each oSh In Presentations(Template).Slides(3).Shapes
Select Case oSh.Name
Case "Table 2"
For i = 1 To 20
For j = 1 To 3
oSh.Table.Cell(i, j).Shape.TextFrame.TextRange.Text = xlWorkBook.Worksheets(24).Cells(105 + i, j + 12).Value
Next j
Next i
'M106:o126
End Select
Next oSh
End Sub
我遇到了同樣的問題,並且運行了一條調試消息,顯示插入后的位置,這似乎是正確的。 但是只有縮略圖看起來不錯,實際的幻燈片是錯誤的。
我發現在粘貼表格之前激活或顯示幻燈片時表格的位置是正確的。 另外,如果需要插入幾張表,我需要在粘貼操作之間短暫中斷2秒。
我的解決方法非常難看,我仍在尋找原因。 這可能是一個錯誤,但也可能與后台幻燈片的某種偏移有關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.