
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでOutlookを終了させたい ExcelVBAで既に起動されているOutlookを終了させる
Visual Basic(VBA)
-
VBAでoutlook365が起動しません。
Visual Basic(VBA)
-
OUTLOOKのメールアカウントの受信フォルダーへVBAでアクセスするには。
Visual Basic(VBA)
-
-
4
VBAで二重起動を防止したいのですが、
その他(Microsoft Office)
-
5
<EXCEL/VBA> OUTLOOKのウインドを閉じる方法
Visual Basic(VBA)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
Outlook.ApplicationをCreateObjectすると実行エラーが出てしまう
Visual Basic(VBA)
-
8
VBAで一時中断したプログラムの再開をさせたい
Visual Basic(VBA)
-
9
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
10
Application.ActiveInspectorでエラーがでます。
Visual Basic(VBA)
-
11
VBAで他のプログラムが起動しているか調べる方法
Visual Basic(VBA)
-
12
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
13
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
14
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
15
AccessVBAで作成したExcelファイルを削除する方法は?
Visual Basic(VBA)
-
16
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
17
ExcelVBAの繰り返し処理でwebクエリの取込みできますか。
その他(プログラミング・Web制作)
-
18
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
19
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
20
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームの最前面が効かない
-
二重起動禁止にする理由とは
-
VC#2005でエクスプローラを起動...
-
exeファイルを実行するとすぐに...
-
EXCEL VBAから他アプリケーショ...
-
Designer.vbは直接コードをいじ...
-
印刷要求順番と印刷出力順番が...
-
C#ソースをCSCファイルにてコン...
-
VBAで印刷スプール終了の判定を...
-
ManagementClassが見つからない。
-
クリレポのプリンタ設定について
-
意味不明の実行時エラーで困っ...
-
VB6をWindows10にインストール...
-
VB.NET+ActiveReports で印刷...
-
VB6上から印刷ダイアログを表示...
-
VB2008→VB2010でエラーが出てま...
-
vbaでPDFファイルが印刷されない
-
VBAでArrayListを使う為の「msc...
-
vba 時間の引き算 例えば 15:00...
-
Keydownイベントについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
アウトルックが起動しているか...
-
Windows上のプログラム。「予め...
-
フォームの最前面が効かない
-
VBAでIEが起動しているか...
-
VBSから別のVBS起動するとき変...
-
exeファイルを実行するとすぐに...
-
VBSでExcelのUserFormをエクス...
-
VB6からエクセルの印刷機能...
-
VBSで起動したアプリが前面表示...
-
VBAでSeleniumからChromeを起動...
-
ウィンドウを終了させたい・・・
-
C# 他のアプリケーションを優先...
-
ACCESS VBAで別のACCESS(mdb)を...
-
別のクラスからのタイマの起動方法
-
htmlからcgiを自動的に起動させ...
-
VBで実行中のEXEファイルの情報...
-
【プログラミング】HTAが想定通...
-
gccプログラムで複数の実行ファ...
-
mscomm32.ocxの登録方法
おすすめ情報