Что касается нашей части базы данных по управлению инцидентами, я пытаюсь создать данные из полей в моей таблице (таблицах) в 149 Investigative Report, шаблоне документа Word, предоставленном государством (см. ссылку здесь).
Я сделал версию документа только для чтения, чтобы сохранить ее целостность, принудительно сохранив как пользователь и загрузив ее с полями текстовой формы с закладками для ссылки (пример: txtcaseintroduction
).
Я изменил код, который нашел в Интернете для работы с полями формы, и назначил его кнопке в одной из моих форм, чтобы помочь в создании отчета (ссылка Open
изменена по соображениям безопасности):
Private Sub cmdPrint_Click()
'Export 149 Report.
Dim appWord As Word.Application
Dim doc As Word.Document
'Avoid error 429, when Word isn't open.
On Error Resume Next
Err.Clear
'Set appWord object variable to running instance of Word.
Set appWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then
'If Word isn't open, create a new instance of Word.
Set appWord = New Word.Application
End If
Set doc = appWord.Documents.Add("Y:\ABC\2018\Case Files\2018 - Incident Forms\OPWDD 149 - Access Database Reference.docx", , True)
With doc
.FormFields("txtNIMRS").Result = Me.NIMRSID
.FormFields("txtInternalID").Result = Me.InternalIncidentID
.FormFields("txtIncidentDate").Result = Me.[IncidentOccurrenceDate]
.FormFields("txtDiscoverydate").Result = Me.[IncidentReportDate]
.FormFields("txtCaseIntroduction").Result = Me.CaseIntroduction
.FormFields("txtIncidentLocation").Result = Me.Location
.FormFields("txtBackground").Result = Me.BackgroundInfo
.FormFields("txtProtections").Result = Me.ImmedProtec
.FormFields("txtQuestion").Result = Me.InvestQuestion
.FormFields("txtTestName").Result = Me.[TestimonialEvidence]
.FormFields("txtDocumentaryE").Result = Me.[DocumentaryEvidence]
.FormFields("txtDemonstrativeE").Result = Me.[DemonstrativeEvidence]
.FormFields("txtPhysicalE").Result = Me.[PhysicalEvidence]
.FormFields("txtWSName").Result = Me.[WrittenStatements]
.FormFields("txtSummary").Result = Me.SummaryEvidence
.FormFields("txtConclusions").Result = Me.Text409
.FormFields("txtRecommendations").Result = Me.Text411
.FormFields("txtInvestigator").Result = Me.Investigator_s__Assigned
.FormFields("txtdatereport").Result = Me.Investigative_Report_Completion_Date
.Visible = True
.Activate
End With
Set doc = Nothing
Set appWord = Nothing
Exit Sub
errHandler:
MsgBox Err.Number & ": " & Err.Description
End Sub
Работают следующие поля:
.FormFields("txtNIMRS").Result = Me.NIMRSID
.FormFields("txtInternalID").Result = Me.InternalIncidentID
.FormFields("txtIncidentDate").Result = Me.[IncidentOccurrenceDate]
.FormFields("txtDiscoverydate").Result = Me.[IncidentReportDate]
.FormFields("txtIncidentLocation").Result = Me.Location
.FormFields("txtBackground").Result = Me.BackgroundInfo
.FormFields("txtProtections").Result = Me.ImmedProtec
.FormFields("txtQuestion").Result = Me.InvestQuestion
.FormFields("txtConclusions").Result = Me.Text409
.FormFields("txtRecommendations").Result = Me.Text411
.FormFields("txtdatereport").Result = Me.Investigative_Report_Completion_Date
Остальные поля (case introduction
, investigator
и поля вложения) нет. Все эти поля находятся в одной таблице. Также отмечается, что введение кейса раньше работало, но перестало работать, так как я пытался выяснить больше полей формы, которые можно было бы применить к документу и справке. Цель заключалась в том, чтобы следователь, по сути, выполнял всю свою работу в базе данных, а затем экспортировал ее в требуемый формат для представления государству.
Мой вопрос: что мне нужно сделать с приведенным выше кодом, чтобы неработающие поля работали при заполнении документа Word?
Ответы на вопросы в комментариях
Ошибок не возникает; текстовые поля просто не заполняются, когда я нажимаю кнопку.
Поля формы не обязательно должны присутствовать в итоговом документе. Они просто «цели» для данных.
appWord.Documents.Add("PathToOriginalFile")
- это создает копию оригинала как новый документ, поэтому нет никаких шансов на его изменение. - person Cindy Meister   schedule 07.01.2020On Error Resume Next
. ПоместитеOn Error GoTo 0
после строки сGetObject
, затем проверьте еще раз. - person Cindy Meister   schedule 08.01.2020Add
, а неOpen
метод. - person Cindy Meister   schedule 08.01.2020Range
, которая должна по существу удалить поле формы. - person Cindy Meister   schedule 21.01.2020Documents.Add
, пожалуйста? Это сделано для того, чтобы другие, кто может скопировать этот код, подобрали лучший подход для принуждения пользователей к работе с копией документа. (И, пожалуйста, не включайте мой ответ - Stack Overflow так не работает.) После этого комментарии можно будет еще больше прорезать, улучшая полезность вклада :-) - person Cindy Meister   schedule 23.01.2020