「みんな教えて! 選手権!!」開催のお知らせ

取引の為余計なソフトを入れなかった為、officeのOutlookを入れようとしたら、WindowsのOutlookが入ってしまい、普通に使えるのですが、VBAから操作できず困っています。

WindowsのOutlook
Microsoft Outlook バージョンがインストールされています1.2024.1009.100 (Production).
クライアント バージョンは以下の通りです:20241011003.11.
WebView2 バージョンは 129.0.2792.89.
セッション ID は 6ae48727-7623-7640-8eb7-24548d6cf6cf.=

officeのOutlook の使い方は下記の通りです。一番簡単な方法かと・・・(当方はこれで十分なのですが)
'Outlookオブジェクトの変数宣言
Dim outlookObj As Outlook.Application
Set outlookObj = New Outlook.Application
'メール送信用のオブジェクト作成
Dim mailObj As Outlook.MailItem
Set mailObj = outlookObj.CreateItem(olMailItem)

With mailObj
'' .To = "xxxxxxxxxxxxx@xxxxx.xxx" 'メール宛先
'' .Subject = "メールの件名" 'メール件名
'' .body = "メール本文" 'メール本文
'' .BodyFormat = olFormatPlain 'メール形式に設定
End With
.send

WindowsのOutlookの ブジェクトの変数宣言 と メール送信用のオブジェクト作成 などを
お教え願えれば幸いです。
参考URL でも結構です。

A 回答 (4件)

No3です。



>お説のMsgBox obj.Name とやれば Outlook と返します。
>クラスと言うエラーは
>Set mailObj = outlookObj.CreateItem(olMailItem) で発生します

相変わらず、実行環境が不明ですけれど、外部ソフトから制御しようとしていて、バインドができているのなら、
 Set obj = CreateObject("Outlook.Application")
 Set mailObj = obj.CreateItem(0)
でいけるのではないですか?

上記で上手くいかないようなら、Outlook側のVBAエディタのオブジェクトブラウザで、Applicationオブジェクトに関して
 ・CreateItemメソッドが存在するかどうか
 ・存在する場合には、引数がどうなっているか
を確認なされば解決するでしょう。
    • good
    • 0
この回答へのお礼

たびたび、恐縮です。
どうも、このただのOUTLOOK 
「UWP版のメールから置き換えされたOutlook(new)ってアプリについては、IMAPとWEBメールしか対応していない」

らしくて、そも、外部からコントロールできる代物ではないようです。
お手数おかけしました。

ところが、今のOfficer ソフト(Outlook)一つだけ入れるということは、大変らしい・・・逆に言うと officeのOutlookが なぜ死んだのか?
ショートカットだけ残っているみたいな??

どうもそこから見たいな話で・・・大変お手間とらせました。陳謝

お礼日時:2024/10/21 11:52

No1です。



どうやら、断片的な情報しか示す気がないようなので、さっぱりわかりませんけれど・・・

1)Outlookで実行してみれば、と書いたのは
 ・そもそも、そのOutlookでVBAが使えるのか
 ・使える場合に、オブジェクトの構成やメソッドがどうなっているか
などなどを確認するという意味です。
これがわからなければ、制御などできませんので・・

2)参照設定は正しくできているかという意味は、ソフトのバインドが
 できているかということです。 補足に、
  >参照設定は大丈夫です。
と書いてありますが、
  >オートメーションエラー、クラスを提供できないと出ます。
というのは、バインドできていないという事ではないのですか?
1)がダメなら、当然、2)も期待はできませんけれど・・

例えば、レイトバインドでもダメということでしょうか?
どのように実装しているのかも情報がないままでわかりませんけれど・・
 Set obj = CreateObject("Outlook.Application")
 MsgBox obj.Name
 obj.Quit
とか。
    • good
    • 0
この回答へのお礼

情報不足陳謝。
基本、上記のコードで officeのOutlook が入っているマシンでは動きます。
で、Windowsのただ(フリー)のOutlookだと動かない
そのくせ
お説のMsgBox obj.Name とやれば Outlook と返します。

クラスと言うエラーは
Set mailObj = outlookObj.CreateItem(olMailItem) で発生します。

話変わって
CDO.Message

これをググっていろいろやってみたのですが
両方のマシンでNG くらっています
サーバーに送っているようですが、サーバーが受け取らないというか NG。
タイムアウト的なエラーを返します
これは
.Item(cdoSendUserName) = "xxxxx" '送信ユーザー
.Item(cdoSendPassword) = "" '送信パスワード

ここらしいのですが、そも 送信パスワード って メーラーでも出てこないし・・・
送るときにキーをつけるって事では?? なら、”” でいいはず、ってとこで中断・・・

お礼日時:2024/10/20 21:58

Outlookの操作をしたいのかと思ったのですが、お書きのコードは単にメールの送信だけですよね?であれば、そもそもOutlook不要です。

ご存じなければ "CDO.Message" で検索。
それともメール送信は一例で、Outlookに保存されているメールをフォルダー間移動や削除などのOutlook操作をしたいのですか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
お説の通りです。ただ送信できればいいだけですので、
教えていただいた単語で検索してみます。取り急ぎ、御礼まで。

お礼日時:2024/10/20 08:20

こんばんは



VBAはVisual Basic for Applicationsなので、基本的には当該ソフトでのマクロ的な機能だと思いますけれど、ご提示のコードはそうではないように見受けられます。

>VBAから操作できず困っています。
どのような状況下で実行して、どのように「うまくいかない」のか不明ですけれど、また、「WindowsのOutlook」がどのようなものなのかもよくわかりませんが、ひとまず、OutlookのVBAとして設定した場合でも動作しないのでしょうか?
(Outlookに設定する場合は、宣言部等を若干変える必要があります)
こちらで、アプリケーション内のオブジェクトやメソッドが正しいかをチェックできると思います。

また、他のソフトから制御する場合に、ご提示のコードでは参照設定が必要だと思いますけれど、参照設定は正しくできているのでしょうか?
    • good
    • 0
この回答へのお礼

officeのOutlookの入っているマシンでは このコードで送信可能です。
入っていないマシンに Outlookを入れようと検索したら、New とついたOutolookが入ってしまい、これがofficeのものとが別物で、
(無料のWindows付属のはPOP3に対応していませんので、更新ボタンはありませんIMAPになります)。。。らしいです。
で、上記のコードでは 動かない。
オートメーションエラー、クラスを提供できない
と出ます。
https://learn.microsoft.com/ja-jp/office/vba/out …

ここらあたりかと思うのですが、
これもうまくゆかなくて・・・

参照設定は大丈夫です。
よろしく

お礼日時:2024/10/20 08:32

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A