5

このページの関数を使用しようとしています: http://www.outlookcode.com/d/code/getfolder.htmフォルダー パスを使用してフォルダーに移動します。(そのコードをこの質問の一番下にコピーします。まったく変更せずにそのまま使用しました。)これを使用する必要がある理由は、Outlook のデフォルトの受信トレイが必要な受信トレイと同じではないためです。活動する。関連する受信トレイのパスは、右クリックしてプロパティをクリックし、場所を確認することでわかります。

これは私が使用するコードです:

Set objOutlook = CreateObject("Outlook.Application", "localhost")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set Inbox = GetFolder("\\itadmin@email.org\inbox")
Debug.Print Inbox '<-- This fails
Set InboxItems = Inbox.Items '<-- This also fails
InboxItems.SetColumns ("SentOn")

これにより、ランタイム エラー 91、オブジェクト変数または With ブロック変数が設定されていないが返されます。

これが何を意味するのかわかりません。このエラーを解決するのを手伝っていただければ、それは素晴らしいことです。また、この問題を完全に回避できる方法があれば、それも素晴らしいことです。ありがとう!

Public Function GetFolder(strFolderPath As String)As MAPIFolder
  ' strFolderPath needs to be something like 
  '   "Public Folders\All Public Folders\Company\Sales" or
  '   "Personal Folders\Inbox\My Folder"

  Dim objApp As Outlook.Application
  Dim objNS As Outlook.NameSpace
  Dim colFolders As Outlook.Folders
  Dim objFolder As Outlook.MAPIFolder
  Dim arrFolders() As String
  Dim I As Long
  On Error Resume Next

  strFolderPath = Replace(strFolderPath, "/", "\")
  arrFolders() = Split(strFolderPath, "\")
  Set objApp = Application
  Set objNS = objApp.GetNamespace("MAPI")
  Set objFolder = objNS.Folders.Item(arrFolders(0))
  If Not objFolder Is Nothing Then
    For I = 1 To UBound(arrFolders)
      Set colFolders = objFolder.Folders
      Set objFolder = Nothing
      Set objFolder = colFolders.Item(arrFolders(I))
      If objFolder Is Nothing Then
        Exit For
      End If
    Next
  End If

  Set GetFolder = objFolder
  Set colFolders = Nothing
  Set objNS = Nothing
  Set objApp = Nothing
End Function
4

3 に答える 3

8

私は答えを見つけました。いつものように、それはばかげていることがわかりました:)

Set Inbox = GetFolder("\\itadmin@email.org\inbox")

する必要があります

Set Inbox = GetFolder("itadmin@email.org/inbox")

. これで問題は解決しました。他の誰かがこの問題を抱えている場合に備えて、ここに残しておくと思いました。解決策は、指定された形式に従うだけです...

于 2013-06-11T17:36:28.820 に答える
2

この行を追加するだけです...

strFolderPath = Replace(strFolderPath, "\\", "")

于 2013-09-22T08:08:27.790 に答える
1

どうやら次の行も必要です。

strFolderPath = Replace(strFolderPath, "\", "/")

しかし、前の行の後。

したがって、コンテキストでは:

strFolderPath = Replace(strFolderPath, "\\", "")
strFolderPath = Replace(strFolderPath, "\", "/")
于 2017-01-01T02:24:51.813 に答える