2

Outlook 2007 の添付ファイルをアーカイブするための Visual Basic マクロを作成しましたが、Outlook マクロからディレクトリ ピッカーを表示する完全に満足できる方法が見つかりませんでした。現在、私は Windows API や VB(A) プログラミングについてあまり知りませんが、Microsoft アプリケーションで最も頻繁に目にする「標準」の Windows ファイル ダイアログは当然の選択のように思えますが、簡単には利用できないようです。 Outlook のマクロから。

理想的には、ディレクトリ ピッカーは少なくともファイル パス/URI をナビゲーションの開始点として手動で貼り付けることができるようにする必要があります。これは、同じディレクトリに対して既にエクスプローラー ウィンドウを開いている場合があるためです。

Outlook マクロのディレクトリ ピッカーの最適な選択肢は何ですか?

私が既に試したものの、完全に満足のいくものではなかった 2 つの点は次のとおりです (コードは簡略化されており、エラー処理がなく、おそらく古いバージョンの Outlook でも実行されます)。

1) Shell.Applicationwhich を使用すると、クリップボードを介して実際に開始点を貼り付けたり、フォルダーの名前を変更するなどの他の操作を実行したりできません。

  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.FileDialogfromを使用してから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)

他のアイデアはありますか?

4

1 に答える 1

2

おそらく、これには Windows32 API を使用することをお勧めします。API の操作方法に関するサンプル VBA コードについては、この MSDN の記事を参照してください。

この記事ではいくつかの異なる手法について概説していますが、この記事で「COMDLG32.dll」を検索し、そのセクションで概説されている手順に従うことをお勧めします。

于 2008-09-02T13:26:36.690 に答える