2

Windows 7 で VBA の自動化 (この例では MS Access 2007 ですが、あまり変わらないはずです) を使用して Office ドキュメント (私の場合は Word または Excel 2007) をプログラムで生成しています。これは正常に動作します。

ドキュメントは自動的に生成されるため、最近のリストに表示したくありません。Word の最近のリストについては、ドキュメントを保存するときに「AddToRecentFiles:=False」を追加するか (例を参照)、後で「Application.RecentFiles ...」を使用してエントリを削除できます。

私のコード

Set objWord = CreateObject("Word.Application")

Set curDocument = objWord.Documents.Add

curDocument.SaveAs FileName:=Folder + "text.doc", FileFormat:=wdFormatDocument, 
            AddToRecentFiles:=False
curDocument.Close

問題は、Windows 7 から最近使用したリストを無効にする方法が見つからなかったことです(つまり、Word のタスクバーまたはエクスプローラーの最後に使用したフォルダーの最近の項目を含むジャンプ リストと、[スタート] メニューの Word の最近使用したリスト)。 自動生成されたドキュメントへのリンクで満たされた Word 2007 の Windows7 ジャンプリストの例

これらのリストが %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations に保存されていることは認識しており、Jumplist を操作するために "WindowsAPICodePack" があることがわかりました ( VBA からは使用できませんよね?)。

最近のリストにアイテムを追加するには、「shell32.dll」ライブラリの古い API SHAddToRecentDocs を使用できますが、この API 関数を使用した削除は、古い「/recent」フォルダーのエントリにのみ影響するように見えるため、機能しなくなりました (私の意図ではないものをすべて削除します)。Windows 7 タスクバー API のプレゼンテーションも、項目を追加する方法についてのみ言及しているように見えますが、それを回避する方法や特定のエントリを削除する方法については言及していません。

Windows 7 が行う記録を操作する (または一時的に無効にする) 方法がありませんか?

よろしくアンドレアス

4

1 に答える 1

1

プログラムで Word やその他の Office ドキュメントを SharePoint で処理しているときに、同様の問題に遭遇しました。

PresentationFramework ライブラリ (.Net 4) または 3.5 (およびおそらくそれ以前) の WindowsAPICodePack を介して JumpList オブジェクトにアクセスできますが、プログラムで JumpListItems を削除する方法はないようです。

レジストリ キーを介して Word がアイテムを JumpList に追加するのを無効にできることを示唆する投稿を見つけました。http://www.add-in-express.com/forum/read.php?PAGEN_1=2&FID=5&TID=8124#nav_startこれをプログラムで行うのはそれほど難しくありません (ドキュメント)。

これがまだ機能するかどうかを試す機会がありませんでした。もっとエレガントな解決策を見つけたら、私に知らせてください!

更新: 私のソリューションでは、Word の最近のファイル リストに基づいてジャンプリストを再生成することになりました (内部の Word の最近のファイル リストを逆方向にループし、ファイルごとに JumpList.AddToRecent メソッドを呼び出しました)。

于 2011-07-28T09:37:48.420 に答える