2016-07-28 2 views
0

現在、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 

答えて

0

ワウ。愚かな私。コード上のいくつかの追加の探索手術の後、私は私の問題を発見した。問題は、私の変数のいくつかに一意の名前がないことです。問題が解決しました。

関連する問題