
いつも助けけていただいております。エクセル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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) outlookの受信日時、本文などをExcelに転記したいのですが・・・ 2 2024/02/05 20:35
- Visual Basic(VBA) vbaにてseleniumを使用したedgeスクレイピング 1 2024/06/27 11:09
- Visual Basic(VBA) Outlookの「受信日時」「送信者アドレス」「件名」「本文」の内容をExcelへの取り込み 2 2024/02/05 19:05
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBA 複数の各シートに行を追加したいです 2 2024/02/28 22:09
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Excel(エクセル) 【マクロ】VLOOKUPにて参照元にデータが無い場合【該当なし】と表示したい 3 2024/06/08 16:45
- Outlook(アウトルック) Outlook(バージョン2310) 3か月以上前のメールが消えた! 3 2023/11/29 21:22
- Excel(エクセル) 同一セルに入力規則のリストと参照する設定併用できるような設定はありますでしょうか!! 9 2024/02/06 16:17
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
このQ&Aを見た人はこんなQ&Aも見ています
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
人生で一番思い出に残ってる靴
皆さんの人生で一番思い入れのある靴の話を伺ってみたいです。
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
あなたが好きな本屋さんを教えてください
どのくらいの規模間で、どのような本が並んでいるか、どのような雰囲気なのかなどなど...
-
【再投稿】レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
Excel(エクセル)
-
【Excel VBA】 テキストファイルを、特定文字列で改行を入れてExcelに一行ずつ出力
Excel(エクセル)
-
年間の医療費のデータがあり、月々の集計をする計算式を教えていただけませんか
Excel(エクセル)
-
-
4
Excelで<a>,<b>の入ったセルをcountifすると動作がおかしい。なぜ?
Excel(エクセル)
-
5
【マクロ】Ifとwith ステートメントにて分からない部分があります
Excel(エクセル)
-
6
excelファイルの内容検索
Excel(エクセル)
-
7
Excelの計算で差分を求める場合について
Excel(エクセル)
-
8
エクセル初心者です 用語とか良く分からないので簡単に説明していただけると幸いです 表を作っているので
Excel(エクセル)
-
9
vbe でのソースコード参照(msgbox)について
Excel(エクセル)
-
10
エクセル数式に問題があります
Excel(エクセル)
-
11
Excelの表示についての質問
Excel(エクセル)
-
12
エクセルマクロを教えてほしい(月別のシートを一つにまとめたい)
Excel(エクセル)
-
13
【マクロ】functionプロシージャの、変数について
Excel(エクセル)
-
14
excel2003 マクロボタンが押せない
Excel(エクセル)
-
15
OFFSET関数を使用したいのですが、 一行分しか参照されません。 =OFFSET(対象セル,0,0
Excel(エクセル)
-
16
エクセル マクロVBAについて教えてください。
その他(Microsoft Office)
-
17
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
18
毎週追加して行くセルの数値を自動的に返したい
Excel(エクセル)
-
19
Excelについて教えてください 横向きの表を並び替えたいのですが上手く行きません。 例えば 1 5
Excel(エクセル)
-
20
大容量があつかえるソフトを探しています
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA_日時のソート
-
ミリ秒を時間へ変更するには? ...
-
【マクロ】上のデータに下のデ...
-
エクセルで教えてください。 例...
-
エクセルの数式について教えて...
-
テーブルの合計、エラーをはぶ...
-
Excelのチェックボックスについ...
-
【オートフィルター】3つのシ...
-
2枚のエクセル表で数字をマッチ...
-
エクセルで、一部のセルだけ固...
-
Excelファイルを開くと私だけVA...
-
マクロ セルを右クリックした時...
-
【Excel】エクセルで書式なしコ...
-
excelVBAについて。
-
弥生青色申告オンライン .csvの...
-
セルの左に余白を付ける
-
エクセルで、数字の下4桁の0を...
-
ExcelVBAについて。
-
excelVBAについて。
-
ExcelのIF関数との組み合わせの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの設定、下へスクロー...
-
別のシートの指定列の最終行を...
-
【マクロ】シート追加時に同じ...
-
Excelファイルを開くと私だけVA...
-
Excelの関数を教えて下さい。
-
マクロを実行すると、セル範囲...
-
エクセルの設定、特定の列以降...
-
Excelの条件付書式について教え...
-
Excelで作成した出欠表から日付...
-
Excelでの文字入力について
-
Excel 日付の表示が直せません...
-
Excel関数の解決方法
-
システムファイルについて
-
自動的に日付入力 応用
-
UNIQUE関数の代用
-
エクセル内に読み込んが画像の...
-
勤務外時間を出す表が作りたい
-
Excel 偶数月の15日(土日祝...
-
【マクロ】Call関数で呼び出し...
-
【マクロ】1回目の実行後、2...
おすすめ情報