Я пытаюсь создать пользовательский интерфейс в Access, который позволит импортировать любой готовый шаблон документа Word (.dotx), заполнить пустые поля формы с закладками данными из базы данных Access, а затем экспортировать в формате PDF . Я пытаюсь найти способ создать текстовое поле формы доступа для каждой закладки в документе Word, чтобы, когда пользователь хочет использовать программу, он мог сделать это, используя любой готовый файл .dotx независимо от номера закладок, которые он содержит. В настоящее время я не могу решить эту проблему, и я не уверен, что делать дальше, поскольку я новичок в VBA.
Код модуля:
Public Sub Main()
On Error GoTo Trap
Dim strSelectFile As String
Dim StrTEMPLATE_PATH As String
StrTEMPLATE_PATH = GetFile
Dim strFullFileName As String
Dim strFileName
strFullFileName = Right(StrTEMPLATE_PATH, Len(StrTEMPLATE_PATH) - InStrRev(StrTEMPLATE_PATH, "\"))
strFileName = Left(strFullFileName, (InStr(strFullFileName, ".") - 1))
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim rs As DAO.Recordset
Dim idx As Long
Dim BkMrkCount
Set wApp = New Word.Application
wApp.Visible = False
Set rs = CurrentDb.OpenRecordset("Detail Report - Individuals")
If rs.EOF Then GoTo Leave
Dim strClientName As String
With rs
.MoveLast
.MoveFirst
End With
For idx = 1 To rs.RecordCount
Set wDoc = wApp.Documents.Add(StrTEMPLATE_PATH)
strClientName = rs!ClientName
With wDoc
If ActiveDocument.Bookmarks.Exists("FullName1") = True Then
ActiveDocument.Bookmarks("FullName1").Select
End If
.Bookmarks("FullName1").Range.Text = Nz(rs!ClientName, vbNullString)
.ExportAsFixedFormat "C:\User\FilePath\ExportFolder\" & strClientName & " " & strFileName & ".pdf", wdExportFormatPDF, False, wdExportOptimizeForOnScreen
.Close wdDoNotSaveChanges
End With
Set wDoc = Nothing
rs.MoveNext
Next
Exit Sub
Leave:
On Error Resume Next
If Not rs Is Nothing Then rs.Close
If Not wDoc Is Nothing Then wDoc.Close wdDoNotSaveChanges
If Not wApp Is Nothing Then wApp.Quit wdDoNotSaveChanges
On Error GoTo 0
Exit Sub
Trap:
MsgBox Err.Description, vbCritical
Resume Leave
End Sub
Function GetFile() As String
Dim file As FileDialog
Dim sItem As String
Set file = Application.FileDialog(msoFileDialogFilePicker)
With file
.title = "Select a Folder"
.allowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFile = sItem
Set file = Nothing
End Function
Для большей ясности цель заключается в чтобы пользователь запускал программу из формы доступа, а затем будет сгенерирована новая форма с текстовыми полями / флажками / et c ... для каждой закладки .dotx, а затем пользователь сможет проверить, что форма заполняется правильными данными, а затем экспортируются заполненные файлы .dotx как файлы PDF.
В настоящее время код модуля будет работать правильно только в том случае, если следующий l oop написан для обработки точного количество закладок в .dotx, что, очевидно, представляет собой серьезное ограничение.
L oop:
For idx = 1 To rs.RecordCount
Set wDoc = wApp.Documents.Add(StrTEMPLATE_PATH)
strClientName = rs!ClientName
With wDoc
If ActiveDocument.Bookmarks.Exists("FullName1") = True Then
ActiveDocument.Bookmarks("FullName1").Select
End If
.Bookmarks("FullName1").Range.Text = Nz(rs!ClientName, vbNullString)
.ExportAsFixedFormat "C:\User\FilePath\ExportFolder\" & strClientName & " " & strFileName & ".pdf", wdExportFormatPDF, False, wdExportOptimizeForOnScreen
.Close wdDoNotSaveChanges
End With
Set wDoc = Nothing
rs.MoveNext
Next
Я все еще очень новичок в SO, если мой вопрос раздражает, я заранее извиняюсь.