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
相关产品推荐
相关产品推荐

