【问题标题】:VBScript and multilevel OLE?VBScript 和多级 OLE?
【发布时间】:2015-02-25 05:06:23
【问题描述】:

我制作了一个 vbscript 来定位一些计算机并对它们进行 wmi 查询,我的老板希望将这些数据放入文档中。问题是该文档是一个 Microsoft Word 文档,其中嵌入了 excel 对象。现在,我已经在谷歌上广泛搜索了任何方法来定位和操作内部对象和使用 OLE 的对象,但我似乎无处可寻。

所以我的问题是,如果有人有一些我可以查看的代码或者教程,甚至可以告诉我它是否可能?

【问题讨论】:

  • 您希望更新嵌入在 Word 文档中的 Excel 文件,是吗?为什么不更新 Excel 文件本身?

标签: excel vbscript ms-word ole


【解决方案1】:

如前所述,基于作为嵌入式 Excel 对象的图表的一些注释。

''http://msdn.microsoft.com/en-us/library/aa213725(office.11).aspx
''http://msdn.microsoft.com/en-us/library/aa174298(office.11).aspx

    Dim wd ''As Word.Applicatio
    Dim shs ''As InlineShapes
    Dim objChart ''As Excel.Chart
    Dim objSheet ''As Excel.Worksheet
    Dim objOLE ''As Excel.Workbook
    Dim NewSrs ''As Series

    Set wd=CreateObject("Word.Application")
    wd.Documents.Open "C:\Docs\Doc1.docm"
    wd.Visible=True


    Set shs = wd.ActiveDocument.InlineShapes
    ''Just the one shape in this example
    shs(1).OLEFormat.Activate

    ''The OLE Object contained
    Set objOLE = shs(1).OLEFormat.Object

    ''The chart and worksheet
    Set objChart = objOLE.Charts("chart1")
    Set objSheet = objOLE.Worksheets("sheet1")

    objSheet.Range("e1") = "NewData"
    objSheet.Range("e2") = 11
    objSheet.Range("e3") = 12

    Set NewSrs = objChart.SeriesCollection.NewSeries

    With NewSrs
        .Name = "=Sheet1!e1"
        .Values = "=Sheet1!e2:e3"
    End With

MS Graph 注释

''VBA: Reference: Microsoft Graph x.x Object Library
''Graph Object Model: http://msdn.microsoft.com/en-us/library/aa198537(office.10).aspx

Dim shs ''As InlineShapes
Dim objDS ''As Graph.DataSheet
Dim objOLE ''As Graph.Chart

    Set shs = ActiveDocument.InlineShapes

    ''The OLE Object contained
    shs(3).OLEFormat.Activate
    Set objOLE = shs(3).OLEFormat.Object
    Set objDS = objOLE.Application.DataSheet

    ''00=Corners, Row titles = 01,02 ...
    ''Column titles = A0, B0 ...
    ''Cells = A1, B1 ... E9 ...
    objDS.Range("E0") = "New"
    objDS.Range("E1") = 11
    objDS.Range("E2") = 12
    objDS.Range("E3") = 9

Set objDS = Nothing
Set objOLE = Nothing
Set shs = Nothing

【讨论】:

  • 使用 objOLE,您只需要考虑 VBA,因为它适用于 Excel,因此,例如,您可以不同地说:objOLE.Charts.CountSet objChart = objOLE.Charts(1)ChartName = objOLE.Charts(1).Name 完全相同的事情可以完成带有工作表。
  • 对象中包含 Excel 图表对象还是 MS 图表对象?
  • 您可以尝试objOLE.Application和/或shs(1).OLEFormat.ClassType获取信息。
  • 不是 Excel 是 MS Graph Chart,注释是 Excel 的。我会看看我能做什么。
  • 谢谢,不胜感激。
猜你喜欢
  • 1970-01-01
  • 2017-03-24
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多