我从大约20年前建立它的人那里继承了一个Access数据库。最近,对于90名使用它的用户中的一些人来说,从access填充的模板创建Word文档的功能对一些用户来说已经停止工作。我安装和重装office已经很多次了,我做的每一台机器都是一样的,但仍然有一台可以工作,一台不能工作。我希望下面的功能足以让比我更了解VBA的人看到错误。
我做了一些研究,一开始我认为它会缺少参考,但可以100%确定它不是。所有用户都在运行access runtime 2000以及office 2010和office 365的混合体。
请看下面的函数,让我知道,如果有任何明显的代码,让我知道,如果需要更多的信息,高兴地提供它。
编辑*我目前面临的问题是用户点击“创建文档”按钮,然后它似乎什么也不做。它不会出错,不会创建文档,也不会像应有的那样全屏打开word。然而,它确实会进入下一部分,询问他们是否愿意将此记录到日志中。我注意到的是,它似乎试图打开Word,这是我看到的使用"Procmon“,但没有在前台打开。
Public Sub PRINT_DOC(TEMPLAT As String)
Dim oword As Word.Application
' Array bound increased from 20 to 100 [v1.1]
Dim FIELDNAME(100) As String
Dim strSQL As String
Dim FILE_STR As String
Dim dbs As Database
Dim COUNTER As Integer
Dim COUNTA As Integer
On Error GoTo notloaded
Dim theError As Integer
Err.NUMBER = 0
Set oword = New Word.Application
notloaded:
If Err.NUMBER = 429 Then
Set oword = New Word.Application
theError = Err.NUMBER
End If
On Error GoTo Err_PRINT_DOC
DoCmd.Hourglass True
oword.Documents.Add TEMPLAT
oword.Visible = True
oword.Activate
COUNTER = oword.ActiveDocument.FormFields.COUNT
For COUNTA = 1 To COUNTER
FIELDNAME(COUNTA) = oword.ActiveDocument.FormFields(COUNTA).Name
Next
For COUNTA = 1 To COUNTER
Select Case FIELDNAME(COUNTA)
Case "CONTACT": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![CONTACT]
Case "ADDRESS": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![FULL_ADDRESS]
Case "REFERENCE": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![REFERENCE]
Case "FAX": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![FAX_NO]
Case "SUBJECT": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![JOBTITLE] & " - " & Forms![frm_correspondence]![SUBJECT]
Case "JOB": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![JOBTITLE]
Case "REPORT": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![SUBJECT]
Case "DATE": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![DATE]
Case "SIGNED": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![SIGNED]
Case "FROM": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![FROM]
Case "TO": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![TO]
Case "CC": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![CC]
Case "DEAR": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![DEAR]
Case "INVOICE_SUM": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![INVOICE SUM]
Case "INVOICE_VAT": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![INVOICE VAT]
Case "INVOICE_NOTES": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![INVOICE NOTES]
Case "INVOICE_NUMBER": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![INVOICE NO]
Case "INVOICE_TOTAL": oword.ActiveDocument.FormFields(COUNTA).SELECT
oword.Selection.InsertBefore Forms![frm_correspondence]![INVOICE TOTAL]
End Select
Next
oword.Visible = True
oword.Activate
If Forms![frm_correspondence]![COR PATH] <> "" And Not IsNull(Forms![frm_correspondence]![COR PATH]) Then
FILE_STR = Forms![frm_correspondence]![COR PATH] & "\" & Forms![frm_correspondence]![FILE REF]
oword.ActiveDocument.SaveAs FILENAME:=FILE_STR
End If
DoCmd.Hourglass False
Set oword = Nothing
Exit_PRINT_DOC:
Exit Sub
Err_PRINT_DOC:
MsgBox Error$, vbExclamation, APP_NAME
Resume Exit_PRINT_DOC
End Sub 发布于 2019-12-04 00:14:59
试着像这样使用后期绑定
Dim oword As Object: set oword = CreateObject("Word.Application")安装,安装
Dim oword As Word.Applicationhttps://stackoverflow.com/questions/59159321
复制相似问题