システムwiki

Office:マージ中の画面更新

SelfUnt 受付中 最終更新日:2020-09-09 09:06

msAccessに、WordテンプレートをAccessの単一のレコードクエリとマージするモジュールがあります.マージと「クリーンアップ」が完了するまで、Wordの画面にすべてが表示されないようにしています.私はさまざまな実験を試みました
objapp.Application.ScreenUpdatingと.Visibleをfalseに設定しましたが、関数の最後でそれらをtrueに戻すと、Wordがすべての画面の機械化を保存し、休止する前に再生したようです.また、これらの実験では、
別のプログラムまたは別のWordドキュメントに手動でクリック(またはAlt-Tab)して、結果の結合ドキュメントに戻るまで、応答しないツールバーが残っています.このタスクは、ユーザーが他の複数のWordドキュメントを開いているときにほとんど常に実行されます.誰でもできる
ヘルプ?私は独学しているので、私の語彙は限られているかもしれません...:-(

パブリック関数DocumentAssembly()

エラー時のGoTo err_Process
Dim 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)

1 #
DougRob

交換:

objapp.Visible=True

objapp.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=True

wddoc=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

応答1# ->にスキップ
2 #
SelfUnt
残念ながら、画面はまだすべてのステップで更新されています...
応答2# ->にスキップ
3 #
SelfUnt
Anyone?
応答3# ->にスキップ
4 #
DougRob 1
objApp.Visible=Falseを設定してから、最後のコマンドの後でTrueに戻してください.
応答4# ->にスキップ
5 #
Manager
すみません!それはそれが起こっているときに起こっているコードの「クリーンアップ」部分のすべてをまだ示しています...
応答5# ->にスキップ
6 #
DougRob
コードの「クリーンアップ」部分を含むすべてのコードを表示します.
応答6# ->にスキップ
7 #
SelfUnt

承知しました.onedriveに配置します...待機します.

応答6# ->にスキップ
8 #
SelfUnt

これは私のonedriveにあります:

応答8# ->にスキップ
9 #
SelfUnt
このスレッドは忘れられたようですので、新しいスレッドを開始しています.
応答6# ->にスキップ
11 #
SelfUnt

Doug、誰もが助けてくれることができますか?そうでない場合は、私を助けることができるかもしれない別のサイトに私を指示してください.ありがとうございました.

応答11# ->にスキップ
12 #
StefanB
ダグはまだ旅を離れているかもしれませんが、戻ったらすぐにスレッドに戻ると思います.
応答12# ->にスキップ
13 #
SelfUnt

ステファン、どうもありがとう...それでも返事はありません.

応答13# ->にスキップ
14 #
DougRob

コードは、template\mail差し込み印刷のメイン文書で既に設定されているはずの方法で文書を変更しているようです.ファイル名フィールドの挿入は一例です.

さらに、.Rangeオブジェクトではなく.Seekviewを使用しています..Seekviewを使用する場合、画面アクティビティの表示を回避することはできません.

Albert KalalのSuper Easy Word Mergeをご覧ください:

https://www.kallal.ca/msaccess/msaccess.html

10 #
SelfUnt

**私の元の投稿が放棄されたように思われるので、私は再投稿しています:-(

私は以下の元の投稿を参照します.***

このVBAコードがMSAccessから実行されている間に、私の単語画面が表示と更新をさせ続けることができません.これは要求されたように私のコードの完全なコピーです:

スレッドを見たい場合は、

マージ中の画面更新