我有一个嵌入了Word文件作为对象的Excel电子表格。当我将对象作为模板打开并将其保存到文档文件中时,Word标题中的名称不会更改,而Excel中的对象会受到影响。如下所示:
For Each OLE In ActiveSheet.OLEObjects
If InStr(1, OLE.progID, "Word.Document", vbTextCompare) > 0 Then
OLE.Verb xlVerbPrimary
Set WordDoc = OLE.Object
WordDoc.SaveAs2 "c:\somewhere\a.doc", FileFormat:=WdSaveFormat.wdFormatDocument97
Exit For
End If
Next
我希望在“另存为”之后,Word中的标题更改为"a.doc“,但名称仍然是”somesheet.xls中的文档“,并且嵌入在WordDoc中的对象会随着对WordDoc的进一步操作而更改。
是否可以将嵌入的Word文件用作模板,而无需创建必须重新打开的中间文件?
我可以断开对象和打开的Word文件之间的连接吗?
编辑:我想要的是创建一个使用对象作为模板的报告。现在,SaveAs不仅创建了一个文件,还影响了模板。
发布于 2016-06-20 23:06:16
我已经创建了一个函数来保存模板并退出连接到Excel的文档。我认为这是Excel的一个严重缺陷,即连接不能从代码断开。我也没有找到识别对象的方法(当一个工作表上有更多的.dot模板时)。我现在正在使用AltText来实现这一目的。
Public Function SaveFileFromObject(EW As Excel.Worksheet _
, sAltText As String, sFilename As String) As Boolean
On Error GoTo EH
Dim OLE As OLEObject, WD As Word.Document, bFound As Boolean
bFound = False
For Each OLE In EW.OLEObjects
If InStr(1, OLE.progID, "Word.Document", vbTextCompare) > 0 Then
If OLE.ShapeRange.AlternativeText = sAltText Then
OLE.Verb xlOpen
Set WD = OLE.Object
WD.SaveAs sFilename, FileFormat:=WdSaveFormat.wdFormatDocument97
WD.Close False
bFound = True
Exit For
End If
End If
Next
SaveFileFromObject = bFound
EX: On Error Resume Next
Set OLE = Nothing
Set WD = Nothing
On Error GoTo 0
Exit Function
EH: MsgBox "Error in SaveFileFromObject: '" & err.Description & "'"
SaveFileFromObject = False
Resume EX
Resume ' debug code
End Function
https://stackoverflow.com/questions/37723818
复制相似问题