具有后期绑定错误424的VBA .AddPicture

时间:2016-06-24 07:42:00

标签: vba excel-vba visio excel

使用下面的代码我得到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

1 个答案:

答案 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,你期望一个字符串使调试变得更复杂。