Office:マージ中の画面更新
msAccessに、WordテンプレートをAccessの単一のレコードクエリとマージするモジュールがあります.マージと「クリーンアップ」が完了するまで、Wordの画面にすべてが表示されないようにしています.私はさまざまな実験を試みました
objapp.Application.ScreenUpdatingと.Visibleをfalseに設定しましたが、関数の最後でそれらをtrueに戻すと、Wordがすべての画面の機械化を保存し、休止する前に再生したようです.また、これらの実験では、
別のプログラムまたは別のWordドキュメントに手動でクリック(またはAlt-Tab)して、結果の結合ドキュメントに戻るまで、応答しないツールバーが残っています.このタスクは、ユーザーが他の複数のWordドキュメントを開いているときにほとんど常に実行されます.誰でもできる
ヘルプ?私は独学しているので、私の語彙は限られているかもしれません...:-(
パブリック関数DocumentAssembly()
エラー時のGoTo err_ProcessDim wd As Object
wdActiveDoc As Object
オブジェクトを暗くする
文字列として暗くMrgform
Mrgform=MyTemplate.dotx
'Word.exeの1つのインスタンスのみを開く
エラー時に再開次へ
Set objapp=GetObject(、 "Word.Application")
もしErr.Number<>0 Then
エラークリア
エラー時にGoTo err_Process
Set objapp=CreateObject( "Word.Application")
終了する場合
objapp.Visible=True
objapp.Application.ScreenUpdating=True
Set wddoc=objapp.Documents.Add(Mrgform)
wddoc.Mailmerge
.OpenDataSource _
名前:= OdbcFile、_
LinkToSource:= True、AddToRecentFiles:= False、_
接続:= _
"Provider=microsoft.ACE.OLEDB.12.0; User ID=Admin; Data Source=OdbcFile; Mode=Read; Extended Properties=""" "; Jet OLEDB:System database=""" "; Jet OLEDB:Registry Path="" ""; Jet OLEDB:Engine Type=5; Jet OLEDB:Database Locking Mode=0; Je "_
、SQLStatement:= "SELECT* FROM` q_MergeData` "、SQLStatement1:=" "
.Destination=0
.実行
wdActiveDoc=objapp.activedocumentを設定します.
で終わる
wddoc.Close SaveChanges:= 0 'Doug Robbinsに感謝
wdActiveDoc.Activate
'CLEANUP:この時点で、wdActiveDocにいくつかのことを行うコードがあります.
'{filename}をフッターに挿入します
「文書が特定のスタッフメンバー{mergefield署名者}によって署名されている場合、フォントを13ポイントに変更します
'etc.
exit_Handler:
objapp=Nothingを設定
wdActiveDoc=Nothingを設定します.
wddocを設定=なし
出口機能
err_Process:
MsgBox Err.Description 、、、 ErrorHdr
exit_Handlerを再開します
終了関数
ながら
返信リスト(回答:14)
交換:
objapp.Visible=Trueobjapp.Application.ScreenUpdating=True
wddoc=objapp.Documents.Add(Mrgform)を設定します
wddoc.Mailmergeを使用
.OpenDataSource _
名前:= OdbcFile、_
LinkToSource:= True、AddToRecentFiles:= False、_
接続:= _
"Provider=microsoft.ACE.OLEDB.12.0; User ID=Admin; Data Source=OdbcFile; Mode=Read; Extended Properties=""" "; Jet OLEDB:System database=""" "; Jet OLEDB:レジストリパス= "" ""; Jet OLEDB:Engine Type=5; Jet OLEDB:Database Locking Mode=0; Je "_
、SQLStatement:= "SELECT* FROM` q_MergeData` "、SQLStatement1:=" "
.宛先= 0
.実行
wdActiveDoc=objapp.activedocumentを設定して、Doug Robbinsに感謝
次で終わる
objapp.Visible=Truewddoc=objapp.Documents.Add(Mrgform)を設定します
objapp.ScreenUpdating=False
wddoc.Mailmergeを使用
.OpenDataSource _
名前:= OdbcFile、_
LinkToSource:= True、AddToRecentFiles:= False、_
接続:= _
"Provider=microsoft.ACE.OLEDB.12.0; User ID=Admin; Data Source=OdbcFile; Mode=Read; Extended Properties=""" "; Jet OLEDB:System database=""" "; Jet OLEDB:レジストリパス= "" ""; Jet OLEDB:Engine Type=5; Jet OLEDB:Database Locking Mode=0; Je "
_
、SQLStatement:= "SELECT* FROM` q_MergeData` "、SQLStatement1:=" "
.宛先= 0
.実行
wdActiveDoc=objapp.activedocumentを設定して、Doug Robbinsに感謝
次で終わる
objapp.ScreenRefresh
objapp.ScreenUpdating=True
応答6# ->にスキップ11 #SelfUntDoug、誰もが助けてくれることができますか?そうでない場合は、私を助けることができるかもしれない別のサイトに私を指示してください.ありがとうございました.
応答13# ->にスキップ14 #DougRobコードは、template\mail差し込み印刷のメイン文書で既に設定されているはずの方法で文書を変更しているようです.ファイル名フィールドの挿入は一例です.
さらに、.Rangeオブジェクトではなく.Seekviewを使用しています..Seekviewを使用する場合、画面アクティビティの表示を回避することはできません.
Albert KalalのSuper Easy Word Mergeをご覧ください:
**私の元の投稿が放棄されたように思われるので、私は再投稿しています:-(
私は以下の元の投稿を参照します.***
このVBAコードがMSAccessから実行されている間に、私の単語画面が表示と更新をさせ続けることができません.これは要求されたように私のコードの完全なコピーです:
スレッドを見たい場合は、