首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何参考OLE工作簿?

如何参考OLE工作簿?
EN

Stack Overflow用户
提问于 2020-03-05 13:00:35
回答 2查看 215关注 0票数 0

在我的一个工作表中,我有另一个工作簿作为嵌入式对象插入,我需要打开它来读取它的一些字段。

我使用OLEobj.Verb xlVerbOpen打开这个文件,并将它分配给一个名为wbR的Workbook变量。因为每次打开它时,它的名称都会改变,所以我认为唯一的方法就是使用ActiveWorkbook。

当我逐行运行代码时,这是可行的。但是,当从一个按钮运行整个宏时,大多数情况下,ActiveWorkbook将被视为与ThisWorkBook相同。我试着用等待和睡眠。

造成这一问题的部分:

代码语言:javascript
运行
复制
For Each OLEobj In ThisWorkbook.Sheets("SheetName").OLEObjects
    Set OLEobj = wsr.OLEObjects(OLEobj.Name)
    OLEobj.Verb xlVerbOpen
    Application.Wait (Now + TimeValue("0:00:05"))
    'Sleep 5000
    Set wbR = ActiveWorkbook
    Exit For
Next OLEobj
EN

回答 2

Stack Overflow用户

发布于 2020-03-05 13:38:02

使用.Verb xlVerbOpen可以冒险获得“活动”应用程序。

Activate (start/open)对象并使用OLEFormat.Object.Object获取工作簿对象。

这就是你想要的吗?

代码语言:javascript
运行
复制
Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim shp As Shape
    Dim wb As Object

    '~~> Change this to the relevant sheet where the excel file is embedded
    Set ws = Sheet1

    '~~> Change this to the relevant object name
    Set shp = ws.Shapes("Object 1") ' OLEobj.Name? from your code?

    '~~> Activate it (Open it)
    shp.OLEFormat.Activate

    '~~> Get the workbook object
    Set wb = shp.OLEFormat.Object.Object

    With wb
        '
        '~~> Work with the workbook object here
        '

        MsgBox .Worksheets.Count
    End With
End Sub
票数 1
EN

Stack Overflow用户

发布于 2020-03-05 13:59:47

按照您的建议,我已经修改了代码,如下所示,它确实很有魅力。非常感谢你的帮助!

代码语言:javascript
运行
复制
For Each OLEobj In ThisWorkbook.Sheets("Ratios").OLEObjects
    Set OLEobj = wsr.OLEObjects(OLEobj.Name)
    'OLEobj.Verb xlVerbOpen
    OLEobj.Activate
    **Set wbR = OLEobj.Object**  ' New line that solves the issue.
    Exit For
Next OLEobj
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60545993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档