0
基本的には、vbaを使用してmsアクセステーブルからワードドキュメントを生成してから印刷します。
コードは以下の通りです:VBA - 即時印刷の代わりに標準を使用して、printを使ってword docを印刷する
With rs
'ensure the recordset is populated
If Not .BOF And Not .EOF Then
Set objWord = CreateObject("Word.Application")
'objWord.Visible = True
Set doc = objWord.Documents.Add
doc.SaveAs CurrentProject.Path & "\report.doc"
'not necessary but good abtitude
.MoveLast
.MoveFirst
While (Not .EOF)
If Not IsNull(.Fields("REGIONE SOCIALE")) Then
regioneSociale = .Fields("REGIONE SOCIALE").Value
regioneSociale = UCase(regioneSociale)
End If
If Not IsNull(.Fields("INDIRIZZO")) Then
INDIRIZZO = .Fields("INDIRIZZO").Value
End If
If Not IsNull(.Fields("CAP")) Then
CAP = .Fields("CAP").Value
End If
If Not IsNull(.Fields("LOCALITÀ")) Then
LOCALITA = .Fields("LOCALITÀ").Value
End If
If Not IsNull(.Fields("CODICE FISCALE")) Then
codFiscale = .Fields("CODICE FISCALE").Value
End If
If Not IsNull(.Fields("CODICE STALLA")) Then
codStalla = .Fields("CODICE STALLA").Value
End If
If Not IsNull(.Fields("NOTE")) Then
NOTE = .Fields("NOTE").Value
End If
'Debug.Print regioneSociale & CAP & LOCALITA & codFiscale & codStalla & NOTE
objWord.Selection.Font.Bold = True
objWord.Selection.Font.Underline = True
objWord.Selection.TypeText regioneSociale
objWord.Selection.Font.Bold = False
objWord.Selection.TypeParagraph
objWord.Selection.Font.Italic = True
objWord.Selection.TypeText "INDIRIZZO:"
objWord.Selection.Font.Underline = False
objWord.Selection.Font.Italic = False
objWord.Selection.TypeText " " & INDIRIZZO
objWord.Selection.TypeParagraph
objWord.Selection.Font.Underline = True
objWord.Selection.Font.Italic = True
objWord.Selection.TypeText "LOCALITÀ:"
objWord.Selection.Font.Underline = False
objWord.Selection.Font.Italic = False
objWord.Selection.TypeText " " & CAP & " " & LOCALITA
objWord.Selection.TypeParagraph
objWord.Selection.Font.Underline = True
objWord.Selection.Font.Italic = True
objWord.Selection.TypeText "CODICE FISCALE:"
objWord.Selection.Font.Underline = False
objWord.Selection.Font.Italic = False
objWord.Selection.TypeText " " & codFiscale
objWord.Selection.TypeParagraph
objWord.Selection.Font.Underline = True
objWord.Selection.Font.Italic = True
objWord.Selection.TypeText "CODICE STALLA:"
objWord.Selection.Font.Underline = False
objWord.Selection.Font.Italic = False
objWord.Selection.TypeText " " & codStalla
objWord.Selection.TypeParagraph
objWord.Selection.Font.Underline = True
objWord.Selection.Font.Italic = True
objWord.Selection.TypeText "NOTE:"
objWord.Selection.Font.Underline = False
objWord.Selection.Font.Italic = False
objWord.Selection.TypeText " " & NOTE
objWord.Selection.TypeParagraph
objWord.Selection.TypeParagraph
.MoveNext
Wend
Else
MsgBox "No record selected/empty table"
Exit Sub
End If
.Close
End With
doc.Save
'this instruction gives immediate printing instead of the standard one...
doc.PrintOut , , , CurrentProject.Path & "\report.doc", , , , , , , True
doc.Close
事実は、実際に私は、ユーザーに印刷する前に、プリンタまたは任意の他のオプションを変更する可能性を与えるしたいということです。
彼にを与えることについて、このビューを話しています。
vbaで可能ですか?
私は@Sergeyのアドバイス使うコードの断片:あなたが、私は希望の小さなコードの最適化としても
doc.Activate 'just to make sure that user didn't select other document while generating
objWord.Dialogs(wdDialogFilePrint).Show
代わりのdoc.PrintOut
を使用することができます
End With
objWord.Dialogs(wdDialogFilePrint).Show
doc.Save
doc.Close
しかし、 'objWord.Dialogs(wdDialogFilePrint).Show'はAccessをフリーズさせ(コードは実行中に保持されます)、プロセスマネージャによって終了した後で、印刷ダイアログウィンドウが表示されます。 – UrbiJr
それは私のために働く。実行前にすべてのWordプロセスが強制終了されていることを確認してください。デバッグのための単語ウィンドウを表示することもできます: 'objWord.Visible = True' –
ああ、今はエラーがあります。実際には、印刷ダイアログウィンドウはWordアプリケーションに関連しています。だから私が以前にそれを開くのでなければ、それは基本的にそれが開かれるのを待つ。実際には '.Visible = True'を使うと動作しますが、Wordのウィンドウが開きます.Windowsウィンドウは開きません。 – UrbiJr