嵌入式linux 保存excel,以编程方式更新嵌入式excel文件

Todd Main..

5

对此没有完美的解决方案,但大多数时间都有效的方法是强制打开/关闭OLEFormat.Object.如果从Word外部对嵌入式Excel工作表进行补液(即操作Open XML格式)或通过对象模型进行补充,则无关紧要.它涉及的是从Word中打开嵌入式Excel电子表格,然后关闭该对象,以便将图像更改为嵌入电子表格中的当前值和要创建的新图像.

如果您在许多Word文档或仅仅一个文档上执行此操作,它只需要一点点.在前一种情况下,一个全局模板(例如normal.dot或您创建并放入STARTUP文件夹的自定义模板)或稍后的情况下,只需运行一个文档后面的代码.两者都有不同的方式来运行,但基本上你将挂钩Document_Open事件,并从那里检查当前文档是否具有OLE嵌入对象,如果是,打开和关闭它们.

没有像我说的那样进入钩子,代码并不漂亮.基本上因为它使用SendKeys.大多数情况下,这将有效.有些时候,它不会.这是SendKeys未经同意接收焦点的其他程序的性质(例如即时通讯程序).

如果Word具有焦点(这意味着您无法打开VBE并按下F5),此代码应该可以解决问题:

Sub UpdateEmbeddedXLSX()

Dim workbook As InlineShape

For Each workbook In ActiveDocument.InlineShapes

With workbook

If .Type = wdInlineShapeEmbeddedOLEObject Then

''# Excel.Sheet.12 for Excel 2007

If .OLEFormat.ClassType = "Excel.Sheet.12" Then

''# Open Object as spreadsheet

.OLEFormat.DoVerb wdOLEVerbPrimary

''# If you want, you can also do any updates here like

.OLEFormat.Object.ActiveSheet.Cells(2, 2).Value = ".1"

''# Nasty - but it works - SendKeys

SendKeys "{ESC}", True

End If

End If

End With

Next

End Sub

至少,您可以将此代码放在normal.dot中,并将其分配给QAT以作为宏运行.

请注意,代码不会绕过Excel打开,值会更改然后关闭 - 这是使用嵌入对象的一部分.使用链接代替嵌入将是一种更顺畅的方式来完成所有这些,但我意识到它并不总是一种选择.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值