【问题标题】:Using MS Access and VBA to update (Field codes: Database) field in Ms Word Document使用 MS Access 和 VBA 更新 Ms Word 文档中的(字段代码:数据库)字段
【发布时间】:2017-04-06 21:21:28
【问题描述】:

Ms Word Database 字段将数据库查询的结果插入到 Word 表中。

我想使用 VBA 在 ms word 中填充表格,我已经使用 VBA MsAccess 和 MsWord 书签,数据中的模板使文档很难维护。我发现 MSword 有选项插入数据库,并允许您在 msaccess 中实现数据并在更新期间保留预格式化。 以下 数据库字段 代码是使用 Database 命令通过 ODBC 从我的 Access 数据库中查询的结果:

{ DATABASE \d "C:\My Data Sources\To test World.odc" \c “提供者=MSDASQL.1;持久安全信息=真;扩展 属性=\"DSN=MS 访问数据库;DBQ=H:\CIP BOOK\CIP2.accdb;DefaultDir=H:\CIP BOOK;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;\";初始目录=H:\CIP BOOK\CIP2.accdb" \s "选择DescriptionTAEntry TitleMemo 来自qryTransactions ExtendedWordFill_test 在哪里 ((Project_id = 'PCP13ZOOA06'))" \l "26" \b "191" \h * MERGEFORMAT }

首先我的 wdFieldDatabase 有字段(索引),其中索引是索引号(字段对象)。索引号表示字段在选择、范围或文档中的位置

其次我找到一个 Fields.Add 方法 (Word) 这个例子如果要添加一个字段ListNum

 Selection.Collapse Direction:=wdCollapseEnd 
ActiveDocument.Fields.Add Range:=Selection.Range, _ 
 Type:=**wdFieldListNum**, Text:="\s 3"

我想要的是使用 VBA 更新 (字段代码:数据库字段)中的代码基于索引位置并更改(Project_id = 'PCP13ZOOA06)。其他替代方法可以使用在 VBA 中创建代码在特定范围、文档位置添加字段数据库。我想从 access 管理这个,想法是为超过 2oo 个项目创建带有费用表的状态报告。

Field codes: Database field

【问题讨论】:

    标签: ms-access vba ms-word


    【解决方案1】:

    我现在无法对其进行测试,但是这样的东西对你有用吗?

    Option Explicit
    
    Public Sub UpdateDatabaseField()
        Dim fldTarget As Field: Set fldTarget = ActiveDocument.Fields(1) ' TODO: Find your field based on your knowledge of your document
        Dim strProjectIdNew As String: strProjectIdNew = "123456" ' TODO: Determine new project code
    
        Dim strCodeOld As String: strCodeOld = fldTarget.Code.Text
        Dim ixBegin As Long: ixBegin = InStr(1, strCodeOld, "Project_id") + Len("Project_id")
        Dim ixEnd As Long: ixEnd = InStr(ixBegin, strCodeOld, ")")
        Dim strCodeNew As String: strCodeNew = Left(strCodeOld, ixBegin) & "='" & strProjectIdNew & "'" & Mid(strCodeOld, ixEnd)
        fldTarget.Code.Text = strCodeNew
    End Sub
    

    最终代码:

    Public Sub UpdateDatabaseField()
    Dim fldTarget As Field: Set fldTarget = ActiveDocument.Fields(1) ' TODO: Find your field based on your knowledge of your document
    Dim strProjectIdNew As String: strProjectIdNew = "PCP13ZOOA08" ' TODO: Determine new project code
    
    Dim strCodeOld As String: strCodeOld = fldTarget.Code.Text
    Dim ixBegin As Long: ixBegin = InStr(1, strCodeOld, "Project_id") + Len("Project_id") - 0
    Dim ixEnd As Long: ixEnd = InStr(ixBegin, strCodeOld, ")")
    Dim strCodeNew As String: strCodeNew = Left(strCodeOld, ixBegin) & "='" & strProjectIdNew & "'" & Mid(strCodeOld, ixEnd)
    fldTarget.Code.Text = strCodeNew
    ActiveDocument.Fields(1).Update
    

    结束子

    【讨论】:

    • 是工作,我只修改 Len("Project_id") - 1 为 Len("Project_id") - 0
    猜你喜欢
    • 2014-07-24
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    相关资源
    最近更新 更多