首页 文章

EXCEL,使用嵌入对象(.dot)作为报告模板

提问于
浏览
0

我有一个Excel电子表格,其中嵌入了Word文件作为对象 . 当我将对象作为模板打开并将其保存到文档文件时,Word的 Headers 中的名称不会更改,并且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

我希望在“SaveAs”之后,Word中的 Headers 更改为“a.doc”,但名称仍然是“somesheet.xls中的文档”,并且Excel中的嵌入对象随着WordDoc上的进一步操作而更改 .

是否可以将嵌入的Word文件用作模板而无需创建必须重新打开的中间文件?

我可以断开对象和打开的Word文件之间的连接吗?

编辑:我所追求的是使用对象作为模板创建报告 . 现在,SaveAs不仅会创建文件,还会影响模板 .

1 回答

  • 0

    我创建了一个函数来保存模板并退出连接到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
    

相关问题