循环,根据Excel中的表/范围在PPT中创建矩形形状

时间:2015-10-09 14:54:34

标签: excel vba powerpoint powerpoint-vba

在前一段时间问了一个关于stackoverflow的问题,该问题涉及根据用户输入的数据在PPT中创建形状。在逐渐扩展我的代码之后,我现在能够在PPT中基于excel数据创建形状。 (与此同时,我的问题现在离原来的问题太远了)
但是,由于我根据excel数据创建了不同数量的形状,因此我使用了固定数量的变量,因此每次我想创建时都需要更改代码。形状比最初设计的代码更多。

所以我所做的就是试试这段代码

Private Sub ToggleButton1_Click()
Dim w1 As Integer
Dim w2 As Integer
Dim w3 As Integer
Dim FileStr As String
Dim TabStr As String
Dim Cell As String
Dim XLApp As New Excel.Application
Dim ObjXL As Excel.Workbook
Dim Value As Integer
Dim Value2 As Integer
Dim Value3 As Integer
Dim i As Integer
Dim zahl As Integer
FileStr = "C:\Users\mjschmitt\Documents\VBATest\Test.xlsx"
Set ObjXL = XLApp.Workbooks.Open(FileStr)
i = ObjXL.Worksheets("Tabelle1").Cells(Rows.Count, "A").End(xlUp).Row
ObjXL.Worksheets("Tabelle1").Range("B1").Value = i
For zahl = 1 To i
Do
Value = ObjXL.Worksheets("Tabelle1").Cell(zahl, "A").Value
w1 = Value
Set myDocument = ActivePresentation.Slides(35)
myDocument.Shapes.AddShape Type:=msoShapeRectangle, _
Left:=50, Top:=50, Width:=w1, Height:=200
Loop Until zahl = i
Next
End Sub

但我得到"运行时错误438,对象不支持此属性或方法"。 调试器甚至没有指向错误的行,所以我在这一点上很丢失。我怎么能正确实现这个循环?`

谢谢!

(有效的代码

Private Sub ToggleButton1_Click()
Dim w1 As Integer
Dim w2 As Integer
Dim w3 As Integer
Dim FileStr As String
Dim TabStr As String
Dim Cell As String
Dim XLApp As New Excel.Application
Dim ObjXL As Excel.Workbook
Dim Value As Integer
Dim Value2 As Integer
Dim Value3 As Integer
FileStr = "C:\Users\username\Documents\VBATest\Test.xlsx"
Set ObjXL = XLApp.Workbooks.Open(FileStr)
Value = ObjXL.Worksheets("Tabelle1").Range("A1").Value
Value2 = ObjXL.Worksheets("Tabelle1").Range("B1").Value
Value3 = ObjXL.Worksheets("Tabelle1").Range("C1").Value
w1 = Value
w2 = Value2
w3 = Value3
Set myDocument = ActivePresentation.Slides(35)

myDocument.Shapes.AddShape Type:=msoShapeRectangle, _
Left:=50, Top:=50, Width:=w1, Height:=200
myDocument.Shapes.AddShape Type:=msoShapeRectangle, _
Left:=50, Top:=50, Width:=w2, Height:=200
myDocument.Shapes.AddShape Type:=msoShapeRectangle, _
Left:=50, Top:=50, Width:=w3, Height:=200
End Sub

0 个答案:

没有答案