
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)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
VBAで二重起動を防止したいのですが、
その他(Microsoft Office)
-
5
Outlook.ApplicationをCreateObjectすると実行エラーが出てしまう
Visual Basic(VBA)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
<EXCEL/VBA> OUTLOOKのウインドを閉じる方法
Visual Basic(VBA)
-
8
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
9
OUTLOOKのメールアカウントの受信フォルダーへVBAでアクセスするには。
Visual Basic(VBA)
-
10
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
13
VBA+VBSによる別インスタンスBookOpen時のVBSエラーに関して
Excel(エクセル)
-
14
Application.ActiveInspectorでエラーがでます。
Visual Basic(VBA)
-
15
Excel VBA Outlookメール作成について
Excel(エクセル)
-
16
VBAで一時中断したプログラムの再開をさせたい
Visual Basic(VBA)
-
17
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
18
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
19
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
20
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
exeファイルを実行するとすぐに...
-
mscomm32.ocxの登録方法
-
C# 他のアプリケーションを優先...
-
VBで実行中のEXEファイルの情報...
-
VBAでOutlookを終了させたい Ex...
-
二重起動禁止にする理由とは
-
Process.Startで起動したアプリ...
-
AppActivateについて
-
アウトルックが起動しているか...
-
Windows上のプログラム。「予め...
-
windowsの連続起動時間取得
-
WinSCPで画像のように puttyを...
-
C#のフォームから起動するブラ...
-
フォームの最前面が効かない
-
VC++にて_spawnlpでプロセス起動
-
対象のアプリケーションが終了...
-
docker で python 環境を構築する
-
VC++アプリからEXCEL...
-
VBSでExcelのUserFormをエクス...
-
タスクスケジューラでPerlが動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
VBSで起動したアプリが前面表示...
-
VBSから別のVBS起動するとき変...
-
アウトルックが起動しているか...
-
Process.Startで起動したアプリ...
-
Windows上のプログラム。「予め...
-
VBで実行中のEXEファイルの情報...
-
exeファイルを実行するとすぐに...
-
ACCESS VBAで別のACCESS(mdb)を...
-
WinSCPで画像のように puttyを...
-
VBAでSeleniumからChromeを起動...
-
フォームの最前面が効かない
-
VB6で呼び出し元の情報を取得す...
-
同じIEのウィンドウで、リンク...
-
gccプログラムで複数の実行ファ...
-
アプリからVB(Form)
-
VBSでExcelのUserFormをエクス...
-
VBからExcelに書き込む方法
-
Notepad起動のイベントでEXC...
-
エクスプローラの終了と再起動...
おすすめ情報