現在、1つのテーブルとデータ入力用の1つのAccess 2013データベースがあります。名前、姓などのフォームを使用してデータを入力します。次に、これらの値をとり、特定の領域のワードドキュメントに配置するデータベースを呼び出します(差し込み印刷に似ていますが、差し込み印刷私の正確なニーズに合っていません)。この関数は、その単語文書のコピーを.pdfに変換し、あらかじめ定義された場所に保存します。アクセス2013年、モジュールはWord 2013ドキュメントでフィールドを生成しませんが、メインフォーム内で機能します
私は現在、フォーム上のボタンに関連付けられた機能を持っています。すべてがうまくいきました。すぐに大量のコードをモジュールに分割したいと思います。しかし、これは私が問題を抱えているところです。この関数をモジュールに配置すると、word文書のすべてのフォームフィールドに値が設定されることはありません。 1つまたは2つのフィールドにのみ入力され、すべてのフィールドには入力されません。メインフォームにある関数にコードを戻すと、うまく動作します。
どちらのエラーも発生しません。 .pdfは作成され、どこにあるか正確に格納されますが、ボタンがモジュールを呼び出すと、すべてのフィールドに値が設定されません。ボタンが同じフォーム内の関数を呼び出すと、それはチャンピオンのように機能します。以下のコードの短縮バージョンを投稿します。
私の最初の考えは、おそらく私はモジュールを正しく呼んでいないと思いますが、この時点では私は迷っています。私は値を 'Function Memo(LN、FN、srcFile)As String'として渡してみましたが、個別に 'As String'としてラベル付けしましたが、動作させることができません。
Function Memo(LN, FN, srcFile)
Dim appword As Object
Dim doc As Object
Dim Path As String
Dim pdfFileName As String
Dim folderName As String
Dim directory As String
Path = srcFile
folderName = LN & ", " & FN
directory = Application.CurrentProject.Path & "\" & folderName
pdfFileName = directory & "\" & folderName & " 2015 Memo" & ".pdf"
If Dir(directory, vbDirectory) = "" Then
MkDir (directory)
Else
End If
On Error Resume Next
Error.Clear
Set appword = GetObject(, "word.application")
If Err.Number <> 0 Then
Set appword = CreateObject("Word.Application")
appword.Visible = False
End If
Set doc = appword.Documents.Open(Path, , True)
With doc
.FormFields("TextFN1").Result = FN
.FormFields("TextMI1").Result = MI
.FormFields("TextLN11").Result = LN
.ExportAsFixedFormat pdfFileName, 17
appword.Visible = False
Set doc = appword.Documents.Close()
appword.Quit SaveChanges:=False
End With
Set doc = Nothing
Set appword = Nothing
End Function