Outlook 2007 の添付ファイルをアーカイブするための Visual Basic マクロを作成しましたが、Outlook マクロからディレクトリ ピッカーを表示する完全に満足できる方法が見つかりませんでした。現在、私は Windows API や VB(A) プログラミングについてあまり知りませんが、Microsoft アプリケーションで最も頻繁に目にする「標準」の Windows ファイル ダイアログは当然の選択のように思えますが、簡単には利用できないようです。 Outlook のマクロから。
理想的には、ディレクトリ ピッカーは少なくともファイル パス/URI をナビゲーションの開始点として手動で貼り付けることができるようにする必要があります。これは、同じディレクトリに対して既にエクスプローラー ウィンドウを開いている場合があるためです。
Outlook マクロのディレクトリ ピッカーの最適な選択肢は何ですか?
私が既に試したものの、完全に満足のいくものではなかった 2 つの点は次のとおりです (コードは簡略化されており、エラー処理がなく、おそらく古いバージョンの Outlook でも実行されます)。
1) Shell.Application
which を使用すると、クリップボードを介して実際に開始点を貼り付けたり、フォルダーの名前を変更するなどの他の操作を実行したりできません。
Set objShell = CreateObject("Shell.Application")
sMsg = "Select a Folder"
cBits = 1
xRoot = 17
Set objBFF = objShell.BrowseForFolder(0, sMsg, cBits, xRoot)
path = objBFF.self.Path
2) (ツール/リファレンス経由で) Office.FileDialog
fromを使用してからMicrosoft Word 12.0 Object Library
、Word のファイル ダイアログを使用します。代わりに、Outlook がブロックされ、ファイル ダイアログがバックグラウンドのどこかに残ることがあります。
Dim objWord As Word.Application
Dim dlg As Office.FileDialog
Set objWord = GetObject(, "Word.Application")
If objWord Is Nothing Then
Set objWord = CreateObject("Word.Application")
End If
objWord.Activate
Set dlg = objWord.FileDialog(msoFileDialogFolderPicker)
path = dlg.SelectedItems(1)
他のアイデアはありますか?