You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access代码部分失效:无法向Word文档填充数据求助

问题

我有一个带链接表的Access数据库,代码原本实现以下功能:

  • 在指定位置创建以Access数据命名的文件夹
  • 打开指定路径的Word文档
  • 通过文档中的表单域(FormFields)填充Access表数据
  • 将文档以新名称保存至新建文件夹

这段代码正常运行超一年,近期未修改代码,但突然无法执行第3步,第1、2、4步仍正常,无法定位问题,附上代码片段:

Sub Onboarding_Documents_Saudi_Click()

'STEP ONE: create the appropriate Folder

Dim fs, cf, strFolder

On Error Resume Next

strFolder = "C:\Users\1161\OneDrive - Anfas Medical Care\Master - Anfas Medical Care\New Employees\" & Me.Name_In_English & " " & Me.Emp_Id

Set fs = CreateObject("Scripting.FileSystemObject")

If fs.FolderExists(strFolder) = True Then

MsgBox "'" & strFolder & "' already exists!"

Else

Set cf = fs.CreateFolder(strFolder)

If fs.FolderExists(strFolder) = True Then

MsgBox "'" & strFolder & "' successfully created!"

Else

MsgBox "'" & strFolder & "' was not successfully created!"

End If

End If

'STEP TWO:Make Contract .

Dim appWord As Word.Application

Dim doc As Word.Document

Dim Base As String

Base = Format(Me.base_salary, "Standard")

Dim Housing As String

Housing = Format(Me.housing_allowence, "Standard")

Dim Trans As String

Trans = Format(Me.transportation_allowence, "Standard")

On Error Resume Next

Err.Clear

Set appWord = GetObject(, "Word.Application")

If Err.Number <> 0 Then

Set appWord = New Word.Application

End If

Set doc = appWord.Documents.Open("C:\Users\1161\OneDrive - Anfas Medical Care\Master - Anfas Medical Care\Forms\Onboarding Documents\Access\Saudi\ContractSaudiAccess.docx", , True)

With doc

.FormFields("frnameinarabic").Result = Me.Name_In_Arabic

.FormFields("frnameinenglish").Result = Me.Name_In_English

.FormFields("frid").Result = Me.Document_ID_number

.FormFields("frmobile").Result = Me.mobile_number

.FormFields("frjtenglish").Result = Me.Job_title_English

.FormFields("frjtarabic").Result = Me.Job_Title_Arabic

.FormFields("frbasesalary").Result = Base

.FormFields("frhousing").Result = Housing

.FormFields("frtrans").Result = Trans

.FormFields("fremail").Result = Me.Personal_Email

.FormFields("empid").Result = Me.Emp_Id

.FormFields("joindate").Result = Me.Join_Date

.FormFields("joindatehijri").Result = Me.[Join Date Hijri]

.FormFields("contractperiod").Result = Me.[Contract Length]

.FormFields("contractperiodar").Result = Me.[Contract Length Ar]

.FormFields("frdepartment").Result = Me.Department

.FormFields("frdepartmentarabic").Result = Me.Department_Ar

.FormFields("joindate1").Result = Format(Me.Join_Date, "dddd dd/mmm/yyyy", vbUseSystemDayOfWeek)

.Activate

.Visible = True

.Activate

End With

doc.Fields.Update

doc.SaveAs2 "C:\Users\1161\OneDrive - Anfas Medical Care\Master - Anfas Medical Care\New Employees\" & Me.Name_In_English & " " & Me.Emp_Id & "\" & FileName & "Contract " & Me.Name_In_English & " " & Me.Emp_Id & ".docx"

Set doc = Nothing

Set appWord = Nothing
End Sub
排查建议
  • 检查Word模板完整性:打开ContractSaudiAccess.docx,在开发工具选项卡中查看所有表单域,确认代码中引用的域名称(如frnameinarabic)完全匹配,无拼写错误、删除或替换情况;若文件损坏,尝试重新另存模板。
  • 关闭错误掩盖机制:暂时注释掉代码中的On Error Resume Next语句,运行后查看具体错误提示,直接定位问题根源。
  • 验证Office权限与同步状态:检查Word信任中心是否禁用表单域功能;确认OneDrive已完成模板文件的同步,文件未被其他用户锁定。
  • 排查数据格式匹配:检查Access中对应字段(如日期、数值)的格式是否变更,尝试单独赋值单个表单域,确认是否存在特定字段导致的写入失败。
  • 确认对象库引用:在Access的VBA编辑器中,通过「工具->引用」检查Microsoft Word对象库是否正常勾选,缺失则重新添加。

内容的提问来源于stack exchange,提问作者omar1996gassem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:11:06