gpt4 book ai didi

vba - vba 代码中的 OLEObjects 错误 (Excel 2010)

转载 作者:行者123 更新时间:2023-12-04 20:16:03 26 4
gpt4 key购买 nike

对于一个文档,我使用多个数据库(在单独的工作表中)和由这些数据库填充的多个下拉菜单(组合框)。在更改时,它会在主工作表中添加一些信息和图片,这些信息是从这些数据库中检索的。一切正常,但是......一旦我尝试更改其中一个数据库中的一个单元格(不管哪个数据库),下拉框就会给我一个错误:
"Run-time error '1004': Method 'OLEObjects' of object '_worksheet' failed"
(与 .OLEObjects 一致的调试高亮显示)

我在这里监督什么?任何帮助深表感谢!

Private Sub CDL1_change()

Dim c As Range, MyPath, MyFile As String, WS As Worksheet
MyPath = Sheets("TeamChart").Range("C95").Value
Set WS = ActiveSheet
With Worksheets("CDL").Range("rngCDL")
Set c = .Find(CDL1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Sheets("TeamChart").Range("L5") = c.Offset(0, 0).Value
Sheets("TeamChart").Range("M6") = c.Offset(0, 1).Value
Sheets("TeamChart").Range("M7") = c.Offset(0, 2).Value
MyFile = c.Offset(0, 3).Value
With WS
.OLEObjects("picCDL").Object.Picture = LoadPicture(MyPath & MyFile)
End With
Else
Sheets("TeamChart").Range("L5") = "Not Found"
Sheets("TeamChart").Range("M6") = "Not Found"
Sheets("TeamChart").Range("M7") = "Not Found"
End If
End With

End Sub

这是单元格 C95 的值: G:\xxx\Fotos\ .我已经用 MyFile 试过了作为路径和文件名,给出了相同的结果。

最佳答案

我终于设法得到了同样的错误(顺便说一句^^)并解决了它(以及所有其他错误)

为了帮助您解决您的问题,我将把 示例 我用了:

所以此代码完美运行:

Private Sub testOleobj()

Dim MyPath, MyFile As String, WS As Worksheet
MyPath = Sheets("testSh1").Range("C95").Value ' A path equivalent to G:\xxx\Fotos\ for me
Set WS = Sheets("testSh1") ' Here is the change
MyFile = "test.jpg"
With WS
.OLEObjects("picCDL").Object.Picture = LoadPicture(MyPath & MyFile)
End With

End Sub

但是这个代码 工作(故意):

注意:我从一个名为“sheet1”的工作表中执行此代码
Private Sub testOleobj()

Dim MyPath, MyFile As String, WS As Worksheet
MyPath = Sheets("testSh1").Range("C95").Value ' A path equivalent to G:\xxx\Fotos\ for me
Set WS = ActiveSheet
MyFile = "test.jpg"
With WS
.OLEObjects("picCDL").Object.Picture = LoadPicture(MyPath & MyFile)
End With

End Sub

我确定路径和图像都是有效的,因为它们不是我会得到另一个错误( Error 481 -> 这里是无效图像) 但是

我得到 "Run-time error '1004': Method 'OLEObjects' of object '_worksheet' failed".OLEObjects("picCDL").Object.Picture = LoadPicture(MyPath & MyFile)是导致错误的行... 为什么?

因为图片会加载到 picCDL这对我来说是在工作表“testSh1”中,但我尝试在 ActiveSheet 中找到它,它对应于......“sheet1”

总结:

我认为这对你来说是一样的(但我需要更多的工作引导信息才能确定):你使用 Set WS = ActiveSheet但是 我的理论.OLEObjects("picCDL").Object.Picture在这张纸上实际上并不存在(实际上是事件纸,这就是它失败的原因),但在另一张纸上,所以你不应该使用 ActiveSheet但像我的第二个例子中的直接引用。

我希望这能解决您的问题, 如果不是 请添加有关您的工作簿、您使用的工作表等的更多信息...

最后说明:为什么使用 With WS因为你只设置了一个属性? (我也用它来尽可能多地匹配你的代码,但它没有用)

关于vba - vba 代码中的 OLEObjects 错误 (Excel 2010),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25245327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com