
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でoutlook365が起動しません。
Visual Basic(VBA)
-
VBAで二重起動を防止したいのですが、
その他(Microsoft Office)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
Outlook.ApplicationをCreateObjectすると実行エラーが出てしまう
Visual Basic(VBA)
-
7
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
8
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
11
<EXCEL/VBA> OUTLOOKのウインドを閉じる方法
Visual Basic(VBA)
-
12
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
13
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
14
Application.ActiveInspectorでエラーがでます。
Visual Basic(VBA)
-
15
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
16
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
17
batファイルを作成してoutlookとかエクセルを開きたいのですが?
その他(Microsoft Office)
-
18
OUTLOOKのメールアカウントの受信フォルダーへVBAでアクセスするには。
Visual Basic(VBA)
-
19
Excel VBA Outlookメール作成について
Excel(エクセル)
-
20
Access VBA [リモートサーバーがないか使用できる状態ではありません]
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
ウィンドウを終了させたい・・・
-
exeファイルを実行するとすぐに...
-
HTMLタグの中にDLLを埋め込む事...
-
「FindWindow」、ウィンドウハ...
-
VBで実行中のEXEファイルの情報...
-
VBS 入力可能状態を判別できま...
-
VC++にて_spawnlpでプロセス起動
-
Process.Startで起動したアプリ...
-
VB6で呼び出し元の情報を取得す...
-
EXCEL VBAから他アプリケーショ...
-
excel vbaから実行するexe実行...
-
意味不明の実行時エラーで困っ...
-
VBAでArrayListを使う為の「msc...
-
Visual Studio 「AnyCpu」について
-
URLを指定して直接印刷って出来...
-
ASCII印刷可能文字は何文字?
-
Windows PowerShellでC言語を実...
-
ディストリビューションで作成...
-
A4の2枚をA3の1枚にする編集方法?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
VBSから別のVBS起動するとき変...
-
アウトルックが起動しているか...
-
Process.Startで起動したアプリ...
-
VBで実行中のEXEファイルの情報...
-
EXCEL VBAから他アプリケーショ...
-
Windows上のプログラム。「予め...
-
VBSで起動したアプリが前面表示...
-
VBAでSeleniumからChromeを起動...
-
exeファイルを実行するとすぐに...
-
VB6で呼び出し元の情報を取得す...
-
フォームの最前面が効かない
-
AppActivateについて
-
宛先ナシでメールソフトを起動...
-
64bitで作ったEXEを32bitで起動...
-
C# 他のアプリケーションを優先...
-
MSペイントを画像ファイル名を...
-
ウィンドウを終了させたい・・・
-
C#のフォームから起動するブラ...
-
Menuのショートカットの処理が...
おすすめ情報