http://www.ken3.org/cgi-bin/group/vba_outlook.asp
を参考に
Sub Sample()
Dim oApp As Outlook.Application
Dim myNameSpace As Outlook.Namespace
Dim myFolder As Outlook.Folder
'outlook 起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を
Set oApp = CreateObject("Outlook.Application")
Set myNameSpace = oApp.GetNamespace("MAPI")
'作業フォルダーの指定(.GetDefaultFolder) と 表示(.Display)
Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダー olFolderInbox=6 指定
myFolder.display
End Sub
でエクセルからアウトルックを起動しているのですが
既に起動していると2個起動してしまいます。
「既に起動しているのなら起動しない」という事はできますか?
参考URLに
起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を
と書いてありますが、ちょっと勘弁できませんでした笑
No.3ベストアンサー
- 回答日時:
No.2です。
少し変更しました。
質問者様のご希望は、Outlookのフォルダのウィンドウがあれば新たに開かない、というものと思いますのでそのようにしました。
(No.2のコードでは受信トレイ以外のフォルダが開いていると、新たに受信トレイのウィンドウが開いてしまいます。)
Sub Sample2()
Dim oApp As Outlook.Application
Dim myNameSpace As Outlook.Namespace
Dim myFolder As Outlook.Folder
'outlook 起動をCreateObjectで ※フォルダのウィンドウがあるなら一応開かないようになった
Set oApp = CreateObject("Outlook.Application")
'参照設定済みのようなので Set oApp = New Outlook.Application でもいいかも
Set myNameSpace = oApp.GetNamespace("MAPI")
'outlookのフォルダのウィンドウがすでに存在するならそのうちの1つをmyFolderにSetし、
'なければ規定のフォルダを得る。
If oApp.Explorers.Count > 0 then
Set myFolder = oApp.Explorers.Item(1).CurrentFolder.FolderPath
Else
Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダー olFolderInbox=6 指定
End If
myFolder.display
End Sub
なお、No.1様解説のGetObjectでうまくいくならばその方が私の回答よりも良いと思います。
No.2
- 回答日時:
Outlook VBA はあまり使ったことがないのですが調べてやってみました。
すでに受信トレイのウィンドウがあるなら新たには開かない、というのが一応できました。
でもこれでいいかどうか自信はありません・・・
Sub Sample2()
Dim oApp As Outlook.Application
Dim myNameSpace As Outlook.Namespace
Dim myFolder As Outlook.Folder
Dim e_olExplorer As Outlook.Explorer
'outlook 起動をCreateObjectで ※ウィンドウがあるなら一応開かないようになった
'でも自信なし・・・
Set oApp = CreateObject("Outlook.Application")
'参照設定済みのようなので Set oApp = New Outlook.Application でもいいかも
Set myNameSpace = oApp.GetNamespace("MAPI")
'作業フォルダーの指定(.GetDefaultFolder) と 表示(.Display)
Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダー olFolderInbox=6 指定
'すでに存在するoutlookのウィンドウでパスがmyFolderと同じものがあるなら
'myFolderをそのウィンドウにする
For Each e_olExplorer In oApp.Explorers
If e_olExplorer.CurrentFolder.FolderPath = myFolder.FolderPath Then
'オブジェクトは同一ではないようなのでパスで比較した
'FullFolderPathというのもあって、それでも動作可能であった
Set myFolder = e_olExplorer.CurrentFolder
Exit For
End If
Next
myFolder.display
End Sub
No.1
- 回答日時:
GetObjectを調べられると吉だと思います。
On Error Resume Next
'起動済みのOutlookをクラス名を指定して取得
Set oApp = GetObject(, "Outlook.Application")
On Error GoTo 0
'oAppがNothingなら
If oApp Is Nothing Then
'Outlookを起動
Set oApp = CreateObject("Outlook.Application")
End If
Resume Nextを使わなければ、Outlookへの参照が得られなかったら実行時エラー
で止まってしまいます。
GetObjectはExcelやAccess,WordにIEなど色々使えますので
是非覚えて下さい。
ken3には、私も相当お世話になっています笑
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Outlook(アウトルック) outlook 新たにアカウントを作成 メールのウインドウズ表示が 1 2022/04/07 14:39
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAでOutlookを終了させたい ExcelVBAで既に起動されているOutlookを終了させる
Visual Basic(VBA)
-
VBAで二重起動を防止したいのですが、
その他(Microsoft Office)
-
<EXCEL/VBA> OUTLOOKのウインドを閉じる方法
Visual Basic(VBA)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
Outlook.ApplicationをCreateObjectすると実行エラーが出てしまう
Visual Basic(VBA)
-
6
VBAでoutlook365が起動しません。
Visual Basic(VBA)
-
7
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
8
Application.ActiveInspectorでエラーがでます。
Visual Basic(VBA)
-
9
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
10
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
13
「Outlookが他のプログラムによって使用されています・・・」のお知らせ。何のプログラムですか?
Outlook(アウトルック)
-
14
エクセルでエラーが出て困っています。
Excel(エクセル)
-
15
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
16
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
17
VBAにてメッセージボックスを最前面に表示させる
その他(プログラミング・Web制作)
-
18
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
19
Excel実行時エラー-2146959355?
IT・エンジニアリング
-
20
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBで実行中のEXEファイルの情報...
-
アウトルックが起動しているか...
-
VBAでOutlookを終了させたい Ex...
-
VBSで起動したアプリが前面表示...
-
Process.Startで起動したアプリ...
-
VBAでSeleniumからChromeを起動...
-
MSペイントを画像ファイル名を...
-
VBSでExcelのUserFormをエクス...
-
タスクスケジューラでPerlが動...
-
コマンドボタンをクリックする...
-
64bitで作ったEXEを32bitで起動...
-
CreateProcess()について
-
gccプログラムで複数の実行ファ...
-
VBSから別のVBS起動するとき変...
-
Eclipseでjavascriptが動かない
-
EXCEL VBAから他アプリケーショ...
-
エクセル起動時別プロセスで開く
-
exeファイルを実行するとすぐに...
-
Windowsの起動時間
-
AppActivateについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
VBAでOutlookを終了させたい Ex...
-
VBで実行中のEXEファイルの情報...
-
Process.Startで起動したアプリ...
-
Windows上のプログラム。「予め...
-
VBSから別のVBS起動するとき変...
-
EXCEL VBAから他アプリケーショ...
-
VBSで起動したアプリが前面表示...
-
分かる人は簡単なのだろうが、v...
-
別アプリの起動、終了について
-
VBAでSeleniumからChromeを起動...
-
ACCESS VBAで別のACCESS(mdb)を...
-
VB6で呼び出し元の情報を取得す...
-
フォームの最前面が効かない
-
exeファイルを実行するとすぐに...
-
実行ファイルへのドラッグ&ド...
-
「FindWindow」、ウィンドウハ...
-
MSDOS(バッチファイル)でプロセ...
-
C# 他のアプリケーションを優先...
-
QueryPerformanceCounter の使...
おすすめ情報