プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者です
度重なる質問で申し訳ないです
現在下記サイト様を参考にし表題のVBAを書いているのですが受信トレイを開いて全行取得する際、91エラーが出ます
(60行目For Each itms〜の部分です)
内容がオブジェクト変数、またはwithブロック変数が設定されていないという内容なので
itmsとitms1に変数を設定するのかな?と思うのですがSet item =のあとに何を入れるべきかわからなくて質問させてもらいました

ちなみに関係ない部分にはなりますが、
End SubとError発生時の処理は入れています

https://www.depthbomb.net/?p=208

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます!
    結果としてはアカウントの設定なのですが、自身のPCで自身のアドレスを使った場合うまく行くことがわかったんですが、
    いざ会社のPCで会社のアドレスを使用すると同じエラーが発生します…

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/07/15 10:43

A 回答 (5件)

私の方で環境が無いので確証はありませんが、、、、



60行目でエラーとなっているのであればobjOutlookStoreがセットされていない、
つまり49行目でセットが失敗しているような気がします。
49行目からさらに遡って行くと、27行目の対象のアカウント名にぶち当たりますので
そこで正しいアカウントを設定していないのではありませんか?
この回答への補足あり
    • good
    • 1

こんばんは、


60行目、のコードにエラーがあるように思えません。
各変数への代入は、正しく行っていますか?
アカウント設定に不具合があれば
On Error GoTo ErrorProcess ではじかれるはず
>Error発生時の処理は入れています
であれば、もしかすると、
変数宣言を強制していないのであれば、エラーが出る行に
タイプミス(半角スペース)などで新たな変数になっていませんか?
    • good
    • 1

こんばんは、



60行目は For Each itms In objOutlookStore.GetDefaultFolder(6).Items
なので、デフォルトアカウントの受信フォルダが対象ですね、会社のPCの会社アドレスは、デフォルトアカウントですか?
他のアドレスもOutLookにありませんか?確認してみてください。

もし、デフォルトアカウントでない場合は、他の質問に回答した別アカウントのフォルダを取得する
方法を試してみてください。
    • good
    • 1

それってOutlook上で会社PCのアドレスでアカウントを作成していますか?

    • good
    • 1
この回答へのお礼

そうです!

お礼日時:2020/07/17 09:18

会社のPCでOutlookのデフォルト設定を変更する事でも出来そうです。

が、
デフォルト設定でないアカウントのフォルダを取得するには、
デフォルトでないアカウントにはGetDefaultFolderが通らないと思いますので
60行 For Each itms In objOutlookStore.GetDefaultFolder(6).Items を以下のように書き換えます。

  Dim fldr As Folder, TargetFolder As Folder
  Dim oAccount As Account

  For Each oAccount In objOutlook.Session.Accounts
    For Each fldr In objOutlook.GetNamespace("MAPI").Folders
      If fldr = TargetAccount Then '設定されているアカウント名(データ ファイルプロパティで確認)
        Set TargetFolder = fldr.Folders("受信トレイ") '受信トレイ は、実際のフォルダ名で
        Exit For
      End If
    Next
  Next
  For Each itms In TargetFolder.Items

27行目 TargetAccount=  の "対象のアカウント名" は、メールアドレスとは限りません。
実際にデータ ファイルプロパティで確認してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!