VBAで二重起動を防止したいのですが、
VBAで二重起動を防止したいのですが、
いろいろ調べましたが、わかりませんでした。
なにかいい方法はないでしょうか?
EXCELで見積書を作成して、そのファイルをVBAで保存するとき、ついでに、Outlook予定表に見積り期限日予定を入れるものです。
ファイル保存コード省略 Flnm=パス
'ここからアウトルック操作
Dim oApp As Object
Dim myNameSpace As Object
Dim myFolder As Object
Dim objITEM As Object
'outlook 起動
Set oApp = CreateObject("Outlook.Application") '既に起動してても新規起動
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(9) '起動時フォルダーを指定
myFolder.Display
'アイテムの作成
Set objITEM = oApp.CreateItem(1) '予定表作成画面を指定
objITEM.Display '編集画面を表示
'予定表内容
objITEM.Subject = "見積り発行後のフォロー" '件名
objITEM.body = "見積り発行から3ヶ月経ちました" '本文
objITEM.Attachments.Add Flnm 'ファイルの添付
objITEM.Start = DateAdd("m", 3, Date) & " 8:30" '予定日と開始時間
objITEM.Save '保存
objITEM.Close 2 '閉じる
EXCEL2007とOutlook2007を使用しています。
1.多重起動しないことと
2.起動中で最小化されたOutlookがあるならアクティブ化して予定を入れる、または
3.起動していなかったら起動させて、予定を入れる
と云うことがやりたいのですが・・・
補足
度々申し訳ございません。 次の、 「 LPCSTR lpszClassName = "MSPreventionB"; LPCSTR lpszWinName = "Multiplex starting prevention Test B"; int APIENTRY WinMain(...省略) { ...省略 if(FindWindow(lpszClassName, lpszWinName)!=NULL){ /* 二重起動防止 */ MessageBox(NULL, "すでに起動しております。", "Multiplex starting prevention Test B", MB_OK); return FALSE; } ...省略 } 」 を使用していますが、FindWindowの中に入ってくれません。どうしてかわからないのですが。 lpszClassName、lpszWinNameにおいて、 lpszClassNameは、本アプリのメインクラス名を、 lpszWinNameは、アプリケーションウィンドウのタイトルをそれぞれ文字列にして定義しています。何がいけなのでしょうか。