使用下面的代码我得到424错误" Object Required"在指示的.AddPicure线上。我不确定为什么pic被标注为对象,而.addpicture命令看起来完全被我引用。
对代码长度表示道歉,我认为最好留下所有变量。
我使用的是MS Visio 16中的Excel 13,后期绑定是必要的。
**编辑:对不起,它实际上是一个添加文本框行,这给我提出了问题,我已经更新了以下代码......
Sub testexcel()
Dim pic As Object
Dim rng As Object
Dim tWidth As Long, tHeight As Long
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlWb = xlApp.workbooks.Open("C:\Users\tom\Desktop\Book1.xlsx")
Set xlWs = xlWb.sheets("Sheet1")
xlApp.ScreenUpdating = False
Set rng = xlWs.Range("B18")
Set rng2 = xlWs.Range("A1", rng.Offset(-1, -1))
picture1 = "C:\Users\tom\Desktop\PX001.bmp"
pHeight = 145
pWidth = 200
tHeight = 10
tWidth = 200
posX = 10
posY = 10
'On Error GoTo ErrMsg
With xlWs.Range("A1", rng.Offset(-1, -1))
'*******Problem on next line*******
Set txtBx = xlWs.Shapes.AddTextbox(msoTextOrientationHorizontal,
txtPosX, txtPosY, tWidth, tHeight).TextFrame.Characters.Text = "FooBar"
End With
'Some other code here...
End Sub
答案 0 :(得分:1)
尝试拆分
Set txtBx = xlWs.Shapes.AddTextbox(msoTextOrientationHorizontal, txtPosX, txtPosY, tWidth, tHeight)
txtBx.TextFrame.Characters.Text = "FooBar"
我认为这就是发生的事情:
xlWs.Shapes.AddTextbox(msoTextOrientationHorizontal, txtPosX, txtPosY, tWidth, tHeight).TextFrame.Characters.Text = "FooBar"
此重新设置为false,因为第二个=
被解释为比较。然后你基本上做了Set txtBx = False
导致错误。
也可能是vba尝试将Text
属性作为字符串分配给txtBx
。
编辑:我还建议使用Option Explicit
。如果VBA知道txtBx
应该是一个形状,它会告诉你它有一个类型不匹配。在这种情况下,你很幸运,因为Set
告诉它期望一个对象,从而引发错误。例如,如果你想分配一个字符串,你可能会在以后的行中得到错误(或者根本没有错误),因为你有False
,你期望一个字符串使调试变得更复杂。