[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『OutlookをオフラインにするVBA』(れいこ)
メール作成のVBAがありますが、即時送信されないよう、
メール作成の前にOutlookをオフラインにしたいのですが、
下記でうまく動きません。
("**.*.*.*****")の*は調べて取得した数字です。
修正すべき箇所を教えていただきたいです。
Sub SwitchToOffline()
Dim olApp As Object 'Outlook.Application Set olApp = CreateObject("**.*.*.*****")
' 現在のオンライン/オフライン状態を確認 If olApp.Session.Offline = False Then ' オンラインモードの場合のみオフラインモードに切り替え olApp.Session.Offline = True End If
Set olApp = Nothing End Sub
< 使用 Excel:unknown、使用 OS:Windows10 >
コード全部見てないですが、 .Sendを.Saveにするだけで、下書きになると思うんですけど・・・。 (稲葉) 2023/06/14(水) 12:16:20
下書きを作成した後に送信するということですね。
コードを確認したところ、「ML.send」とありました。
下書きを一括送信する必要があります。
下記、ネットから拾ったものですが、必要箇所を変更したうえで、
追加実行することで送信の流れで大丈夫でしょうか。
Sub 下書きメール全部送信()
Dim oApp As New Outlook.Application
Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
Dim Path As String, WSH As Variant
Set WSH = CreateObject(“Wscript.Shell”)
Dim DesktopPath As String
DesktopPath = WSH.SpecialFolders(“Desktop”)
Dim oAcct
Dim oStore
Dim oFolder
Dim cITEM
Dim n As Integer, j As Integer, l As Integer
Set oAcct = oApp.Session.Accounts(“メールアドレス”)
Set oStore = oAcct.DeliveryStore
Set oFolder = oStore.GetDefaultFolder(16)
oFolder.Display
j = 0
l = 1
If oFolder.Items.Count = 0 Then
Exit Sub
End If
For n = 1 To oFolder.Items.Count
Set cITEM = oFolder.Items(l)
On Error GoTo 次の下書きメール送信
cITEM.Display
cITEM.Send ’送る場合
Set cITEM = Nothing
On Error GoTo 0
Next
Set oFolder = Nothing
Set FSO = Nothing
Exit Sub
次の下書きメール送信:
cITEM.Close 0
l = l + 1
Resume Next
End Sub
(れいこ) 2023/06/14(水) 12:49:34
下書き全部ならいいでしょうけど、今回送りたいメール以外に下書き保存されてませんか? 考え方変えて、メール作る前にチェックしてあげれば済む気がします。 どうしても下書き一括で送りたいなら、件名や宛先で判断してから送ってあげた方が安全かと思います。 (稲葉) 2023/06/14(水) 13:17:54
(れいこ) 2023/06/14(水) 14:45:03
横からですが、「下書きを一括送信する」というのはExcelではなくOutlookの世界の話ですから、【OutlookVBA】に関するドキュメントを読むなり、当該に対応したフォーラムで相談されるなりした方がよいのではないでしょうか?
また「2023/06/14(水) 12:49:34」のコードを拝見すると使ってない変数や、冗長と思える箇所が何か所かあります。【OutlookVBA】の観点から冗長な部分を取っ払うと↓のように整理できるように思います。
Sub 下書きメール全部送信() Dim MyOBJ As Object
For Each MyOBJ In Session.Accounts("メールアドレス").DeliveryStore.GetDefaultFolder(16).Items MyOBJ.Display 'MyOBJ.Send '送る場合 Next MyOBJ End Sub
そのうえで質問の【メール作成のVBAがありますが、即時送信されないよう】というのがよく理解できませんが、ExcelVBAでメールアイテムを作成するときに即時送信してほしくないという話ならば、既にアドバイスされているようにSendせず、Saveすれば、下書きフォルダに保存されるとおもいます。
いや、そうではなくて決まった時間になるまで保留したいのだという話ならば、やはり【OutlookVBA】の範疇になりますが↓が参考になると思います。
https://fastclassinfo.com/entry/vba_outlookmail_fixedtime/
いずれにせよ、ネットで拾ったものであろうが、イチから作ったものであろうが導入した時点でメンテナンス担当はご自身になるのですからどの命令が何をしているのかちゃんと理解された方がよいとおもいます。
(もこな2 ) 2023/06/14(水) 18:44:26
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.