いつも助けけていただいております。エクセル2013とエクセル2019を2台のPCで使い分けるために,
参照設定を,Workbook_Open() のサブの中で,エクセルのバージョンを確認したうえで,
2013と2019に応じて,「Outlook 15.0 Object Library」と「Outlook 16.0 Object Library」
の参照設定をSETしています。また,Workbook_BeforeClose()でその都度,参照を外し
ています。
今までは,問題なく使えてましたが,ユーザーフォームに,
Dim WithEvents mySentItems As Items
を使ったイベント処理を付け加えましたが,ここでエラーがでるようになりました。
原因は,参照設定のSETが終わらないうちに,ここが実行されるのが原因のようで,
参照設定でOutlook 1*.0 Object Libraryの項目にチェックが入りません。
このエラーをエラーを回避できる方法をアドバイスいただければありがたいです。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
たびたびのご回答ありがとうございます。
モーグさんのご紹介もありがとうございます。
質問の仕方も,適切でなかったようなので,
質問方法を見直してみたいです。
マルチポストは,避けたいので,受付終了後,見てみたいと思います。
ありがとうございました。
No.1
- 回答日時:
質問されてから時間がたっているので、もう用済みかもしれませんが
私だったら参照設定なしで考えるかなと。
以前(かなり前)にMS社のサイトにあったをチョッチ改変したものです。
Sub OutLookMailNoRef()
Const olMailItem As Integer = 0
Dim oOL As Object
Dim oDT As Object
Dim oAC As Object
Dim oACs As Object
Set oOL = CreateObject("Outlook.Application")
Set oDT = oOL.CreateItem(olMailItem)
Set oACs = oOL.Session.Accounts
For Each oAC In oACs 'oOL.Session.Accounts
'If oAccount.AccountType = olPop3 Then
If oAC.DisplayName = "Somebody跡example.jp" Then
With oDT
Set .SendUsingAccount = oAC '参照設定バージョンと比較
.Subject = "試験発信"
'oMail.Recipients.Add ("Somebody")
'oMail.Recipients.ResolveAll '←↑名前で指定
.To = "Somebody跡example.jp"
.cc = ""
.BCC = ""
.body = "------------------ " & Now
'.Attachments.Add '(添付ファイルをフルパス指定)"d:\t.txt"
.Display 'ユーザーにコントロールを渡す
'oDT.Send
End With
End If
Next
' If MsgBox("送信しますか?", vbOKCancel, "確認") = vbCancel Then
' GoTo EndProcess
' End If
'Office2010では送信フォルダに蓄積されるのではなく、即時送信可
'ただし、OutLook が立ち上がっていないとダメ
'oDT.send
'### 完了メッセージを表示、エラーの場合は?
MsgBox "送信完了です", vbInformation, "完了"
EndProcess:
Set oDT = Nothing: Set oOL = Nothing
End Sub
'Sub OutLookMailWithRef() ’MS社に有ったありバージョン
''http://msdn.microsoft.com/en-us/library/office/b …
' Dim oOL As Outlook.Application
' Dim oAC As Outlook.account
'
' Set oOL = New Outlook.Application
'
' For Each oAC In oOL.Session.Accounts
'
' 'If oAc.AccountType = olPop3 Then
' If oAC.DisplayName = "Somebody跡example.jp" Then
' Dim oMail As Outlook.MailItem
' Set oMail = oOL.CreateItem(olMailItem)
' oMail.Subject = "Sent using POP3 Account"
'' oMail.Recipients.Add ("Somebody跡example.jp")
'' oMail.Recipients.ResolveAll
' oMail.SendUsingAccount = oAC 'こっちはSET 不要
' oMail.Display
' 'oMail.Send
' End If
' Next
'End Sub
とか、
Excel VBAでOutlookメールを送る3
https://powervbadesktop.com/outlook3/
でどうでしょうかね?
現状の方向で行くなら・・・、
以下は未検証です。無駄骨かもしれません。
参照設定の変更は出来ているようなので
それをFunctionモジュールにして
Function SetRef()As Boolean
On Error goto ErrH
略
SetRef=true
Exit function
ErrH:
SetRef=False
End Function
で、Workbook_OpenSubモジュール中に
Dim i As Integer
Do Until SetRef=true
i=i+1
DoEvents
Sleep 500 '500ミリ秒待機
if 1>5 then '5回失敗したら諦める
Exit Sub
End If
※Sleep はWindows APIを使用しているので
標準モジュールの宣言部に
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
※ここのサイトはタブインデントが効かないので見づらくてゴメン。
「跡」はメアドチェックに引っかからないようにしてるので「@」に読み替えを。
繰り返しになりますが参照設定なしをお勧めしたい。
丁寧なご回答ありがとうございます。
ただ,ご回答いただいた内容は,私がお聞きしたことと多少違いがあるような気がします。
メールの送受信は,参照設定で,問題なく行えてます。
私がやりたかったのは,あるHPを参考にしましたが,
メールが送信済みアイテムに格納されたタイミングで実行される ItemAdd イベント取得するのに
mySentItems_ItemAdd(ByVal Item As Object)
のイベント処理をしたかったのです。そのために,
Dim WithEvents mySentItems As Items
を付け加えましたが,この一文を加えると,エクセルのファイルを開いた段階で,この部分でエラーになります。
もちろん,事前に,参照設定にチェックを入れておくと,エラーにはなりません。
Workbook_Open()の中で,参照設定のセットをしていますが,
このWorkbook_Open()内の処理が行われる前に,エラーチェックされるようで,参照設定がセットされずエラーになります。
このこのあたりの,エクセルが立ち上がり時に,VBAが実行されるまでの,機序というか,順番等アドバイスがいただただければと思ったのですが,いかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
【再投稿】レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
Excel(エクセル)
-
【Excel VBA】 テキストファイルを、特定文字列で改行を入れてExcelに一行ずつ出力
Excel(エクセル)
-
年間の医療費のデータがあり、月々の集計をする計算式を教えていただけませんか
Excel(エクセル)
-
-
4
Excelで<a>,<b>の入ったセルをcountifすると動作がおかしい。なぜ?
Excel(エクセル)
-
5
【マクロ】Ifとwith ステートメントにて分からない部分があります
Excel(エクセル)
-
6
excelファイルの内容検索
Excel(エクセル)
-
7
Excelの計算で差分を求める場合について
Excel(エクセル)
-
8
Excelの表示についての質問
Excel(エクセル)
-
9
エクセルマクロを教えてほしい(月別のシートを一つにまとめたい)
Excel(エクセル)
-
10
【マクロ】functionプロシージャの、変数について
Excel(エクセル)
-
11
エクセルVBAのブックを開く方法 例えば [20241001] [20241002] [202410
Visual Basic(VBA)
-
12
エクセルマクロについて教えて下さい。
Excel(エクセル)
-
13
excelVBAについて。
Excel(エクセル)
-
14
excel2003 マクロボタンが押せない
Excel(エクセル)
-
15
OFFSET関数を使用したいのですが、 一行分しか参照されません。 =OFFSET(対象セル,0,0
Excel(エクセル)
-
16
エクセル初心者です 用語とか良く分からないので簡単に説明していただけると幸いです 表を作っているので
Excel(エクセル)
-
17
毎週追加して行くセルの数値を自動的に返したい
Excel(エクセル)
-
18
エクセル マクロVBAについて教えてください。
その他(Microsoft Office)
-
19
大容量があつかえるソフトを探しています
Excel(エクセル)
-
20
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの警告について
-
エクセル初心者です 用語等まだ...
-
excelVBAについて。
-
vbe でのソースコード参照(msgb...
-
【マクロ】メッセージボックス...
-
excelVBAについて。
-
【マクロ】複数の日付データをY...
-
エクセルシート保護を解除させ...
-
エクセルの関数ついて
-
エクセルの数式バーのフォント...
-
excelVBAについて。
-
【マクロ】フォルダ内にあるPDF...
-
【Excel】日付に連動してプルダ...
-
Excelのセルの色を変えた行(す...
-
エクセル初心者です 用語とか良...
-
【VBA】使ってたクエリの接続を...
-
excelVBAについて。
-
excelVBAについて。
-
条件付き書式の効率的な設定の...
-
8:40までの出勤は全て8:30に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
エクセルの数式バーのフォント...
-
【Excel】日付に連動してプルダ...
-
【再投稿】レイアウトが異なる...
-
Excelについて教えてください ...
-
同率順位の発生しないランキン...
-
エクセルマクロについて教えて...
-
【Excel VBA】 テキストファイ...
-
Excel 標準フォントについて教...
-
Excelの計算で差分を求める場合...
-
Excelの区切り文字について質問...
-
大容量があつかえるソフトを探...
-
エクセルの計算式について(COU...
-
エクセルについて
-
今までは、 「CSVの出力先を選...
-
Excel ショートカットで列、行...
-
8:40までの出勤は全て8:30に...
-
if関数。半角文字や全角文字で...
-
エクセルの関数
-
毎週追加して行くセルの数値を...
おすすめ情報