• 締切済み

VBSでOutlookの終了確認

VBS操作でOutlookの送受信を行ってから処理に入るスクリプトを検討しています。 Call objOlApp.Session.LogOn("Outlook", "") Call objOlApp.Session.SendAndReceive(True) objOlApp.Quit この直後にItems.Countなどすると送受信前のカウントが出力されてしまいます。 なので一度"送受信を終えたのを確認してから"次の処理に入りたいのですが、 officeアプリケーションの終了している状態を確認する通信待機や obj.statusプロパティの様なものはあるでしょうか? もしくはこうした方がいい等あればお願いいたします。

みんなの回答

  • tkf-
  • ベストアンサー率58% (821/1396)
回答No.1

> obj.statusプロパティ アプリケーションが終了していたら、objは意味を持たなくなるのではないでしょうか。 あんまりやりたくはないけど、プロセス監視の方向で逃げるしかないのでは? http://www.sakutyuu.com/technology/?p=50

関連するQ&A

  • VBSで起動したアプリが前面表示しない

    Powerpointをコンテキストメニューに「読み取り専用」を追加するために以下のVBscriptを起動すると前面表示されません。 どうしたら前面表示されますでしょうか? 起動コマンド wscript.exe "C:\Program Files\Microsoft Office\Office14\OpenPptAsReadOnly.vbs" "%1" 以下がVBscript(OpenPptAsReadOnly.vbs)です。 Dim strPPTFileName Dim objPPTApp '引数のチェック If WScript.Arguments.Count <> 1 Then WScript.Quit 'ファイル名取得 strPPTFileName = WScript.Arguments(0) '起動 Set objPPTApp = WScript.CreateObject("Powerpoint.Application") objPPTApp.Visible = True '読み取り専用で開く Call objPPTApp.Presentations.Open(strPPTFileName,True) '終了処理 Set objPPTApp = Nothing WScript.Quit

  • 【続】VBSでメール件数カウント(サブフォルダ有)

    「VBSでメール件数カウント」の続きなのですが、 「受信フォルダ」の下にサブフォルダがあった場合の、 件数カウントはどうすればよいでしょうか? 試しに作ってみましたのですが、自信がないので、 よろしければ診ていただけないでしょうか? ------------------------------------------------------------ Private Function Cnt_MailItem Cnt_MailItem = 0 Set oApp = CreateObject("Outlook.Application") Set oNs = oApp.GetNameSpace("MAPI") Set oFol = oNs.GetDefaultFolder(6) '受信アイテイム Cnt_MailItem = oFol.Items.Count 'サブフォルダカウント Cnt_MailItem = Cnt_MailItem + Cnt_SubFol(oFol) msgbox "メール数:" & Cnt_MailItem End Function 'サブカウント Private Function Cnt_SubFol(byVal pFol ) 'サブがない場合は数えない If pFol.Folders.Count <= 0 Then Exit Function End If For i = 1 To pFol.Folders.Count Set oItems = pFol.Folders.Item(i) Cnt_SubFol = Cnt_SubFol + oItems.Items.Count + Cnt_SubFol(oItems) next Set oItems = Nothing End Function ------------------------------------------------------------ よろしくお願い致します。

  • vbsで起動したexeを終了させる方法

    ts動画ファイルをps動画ファイルに変換するvbsファイルをネット上から見つけることが出来ました。 これをコマンドラインから TN:"C:\TSをPSに変換.vbs" -EIT -ECM -EMM -SD -1SEG "%1" TN:cd:Z\ …と、1行目でファイルにこのvbsで適用して、その後いくつかの処理を行うようにしています。 しかし、実際には1行目が完全に終了したとみなされず 2行目以降に移ってくれません。 そこで、このvbsによって起動される"vlc.exe"を手動で終了して 初めて、2行目以降を実行してくれます。 ソースはこちらです↓ vlcpath = "C:\Program Files\VideoLAN\VLC\vlc.exe" Set objArgs = WScript.Arguments Set objSHell = WScript.CreateObject("WScript.Shell") For i = 0 To objArgs.Count - 1 if ( Right(objArgs(i),3) = ".ts" ) Then SrcFile = Chr(34) & objArgs(i) & Chr(34) DstFile = Chr(34) & Left(objArgs(i),Len(objArgs(i))-3) & ".mpg" & Chr(34) CmdLine = Chr(34) & vlcpath & Chr(34) & " " & SrcFile & " :sout=#transcode {acodec=mpga,ab=384,channels=2}:duplicate{dst=std{access=file,mux=ps,dst=" & DstFile & "}}vlc:quit" 'Wscript.StdOut.WriteLine CmdLine objSHell.Run CmdLine ,1 ,True End If Next 自分なりに http://www.whitire.com/vbs/tips0107.html こちらを参照して CmdLine.Terminateや Set objExecCmd = objSHell.Exec(CmdLine) などで試してみたのですがダメでした… ほんのちょっとしたアドバイスや参考URLで構いませんので アドバイスをよろしくお願いします。

  • OutLook Explessでのメール受信

    つい最近までAOLのメールをOutlook Expressでじゅしんできてたのに急にできなくなりました。なんででしょうか?いかがエラーのメッセージです。 *********************************************** Your 'Sent Items' folder was not polled for its unread count. Could not get the unread counts for 'Sent Items' on 'imap.jp.aol.com (1)' Account: 'imap.jp.aol.com (1)', Server: 'imap.jp.aol.com', Protocol: IMAP, Server Response: 'STATUS failed: Can't get status of mailbox IMAP/Sent Items: no such mailbox', Port: 143, Secure(SSL): No, Error Number: 0x800CCCD2

  • OUTLOOK オフィス365 メールが遅い!

    OUTLOOK オフィス365  メールソフトを使いっていますが 送受信が大変遅く困っています。 特に @gmail アカウントが 遅いです。 また フォルダーを同期し始めたり 購読フォルダーを同期している、など、動き出して全く送受信が待機状態のようになってしまいます。 改善点 確認点 操作方法 お知らせ下さい。

  • VBSについて

    いつもありがとうございます。 現在、サーバ上の2つの共有フォルダへネットワークドライブを作成するVBSを作成しております。 動作と致しましては、VBS実行時に共有フォルダへアクセスするユーザ名とパスワードを入力するフォームを表示して、認証をパスするとネットワークドライブを作成します。 ※アカウント・パスワードは共通です。 ネット上からアドバイスをいただき、参考にして下記ソース(拙いコードで申し訳ありません)にて作成したのですが、接続に失敗した際のメッセージがうまくできません。 実現したいことは失敗した際の「ユーザ名、、またはパスワードが間違っています」を表示するようにしておりますが、ネットワークドライブ接続回分表示されます。(今回の場合は2回) 複数のネットワークに失敗した場合でも1回のみの表示にして処理を終了させたいのですが アドバイス頂けないでしょうか。(最終行付近) ----------------------------------------------------------------------------- Set objNetwork = WScript.CreateObject("WScript.Network") Set objWShell = CreateObject("wscript.shell") ' ホスト名 strComputerName = UCase(Left(objNetWork.ComputerName, 6)) ' 本スクリプト名 strScriptPath = WScript.ScriptName ' コンピュータ名から対象の学校を検索 Select Case strComputerName Case "CN3002" SchoolName = "会社A" ServerIP = "\\192.168.1.30" Drive_Letter1 = "S:" Drive_Letter2 = "T:" Drive_Letter3 = "U:" Drive_Letter4 = "V:" Drive_Letter5 = "W:" Drive_Letter6 = "X:" UNC_Path1 = ServerIP & "\共有A" UNC_Path2 = ServerIP & "\共有B" UNC_Path = Array(UNC_Path1, UNC_Path2) Drive_Letter = Array(Drive_Letter1, Drive_Letter2) Case Else Wscript.echo "対象のサーバが確認できません。" & chr(13) & "ホスト名を確認して再度実行してください。" WScript.Quit 10 End Select Set colDrives = objNetwork.EnumNetworkDrives Drive_Count = 0 ServerFlag = 0 Raku_ServerFlag = 0 For i = 0 to colDrives.Count - 1 Step 2 If Left(colDrives.Item(i + 1),15) = ServerIP Then ServerFlag = 1 End If If SchoolName = "会社B" AND Left(colDrives.Item(i + 1),15) = ServerIP2 Then Raku_ServerFlag = 1 End If Next If ServerFlag <> 1 Then call InputUser(strUser,strPassword) Raku_ServerFlag = 1 End If If SchoolName = "会社B" AND Raku_ServerFlag <> 1 Then call InputUser(strUser,strPassword) End If ' 認証のみで接続されているUNCパスへの対応 For i = 0 to colDrives.Count - 1 Step 2 Next colD_Count = i - 1 For j = 0 to UBound(Drive_Letter) Drive_Count = 0 For i = 0 to colD_Count Step 2 If Drive_Letter(j) = colDrives.Item(i) Then Drive_Count = Drive_Count +1 End If Next ' 洛陽2台目サーバ対策 If Drive_Count <> 1 AND SchoolName = "会社B" AND Drive_Letter(j) = Drive_Letter4 Then On Error Resume Next objNetwork.MapNetworkDrive Drive_Letter(j), UNC_Path(j), False, strUser, strPassword Call ErrorCheck(Err.Number) ElseIf Drive_Count <> 1 Then If ServerFlag <> 1 Then On Error Resume Next objNetwork.MapNetworkDrive Drive_Letter(j), UNC_Path(j), False, strUser, strPassword Call ErrorCheck(Err.Number) Else On Error Resume Next objNetwork.MapNetworkDrive Drive_Letter(j), UNC_Path(j), False Call ErrorCheck(Err.Number) End If End If Next ' ユーザ名とパスワードを入力 Sub InputUser(strUser,strPassword) On Error Resume Next Set objExplorer = WScript.CreateObject _ ("InternetExplorer.Application", "IE_") objExplorer.Navigate "file:///C:\WINDOWS\System32\Password.htm" objExplorer.Title = "学習系サーバ接続" objExplorer.ToolBar = 0 objExplorer.StatusBar = 0 objExplorer.Width = 400 objExplorer.Height = 200 objExplorer.Left = 300 objExplorer.Top = 200 objExplorer.Visible = 1 Do While (objExplorer.Document.Body.All.OKClicked.Value = "") Wscript.Sleep 250 Loop strUser = objExplorer.Document.Body.All.UserName.Value strPassword = objExplorer.Document.Body.All.UserPassword.Value strButton = objExplorer.Document.Body.All.OKClicked.Value objExplorer.Quit Wscript.Sleep 250 If strButton = "Cancelled" Then Wscript.Quit End If On Error Goto 0 End Sub Sub ErrorCheck(Err_Number) If Err_Number <> -2147024891 Then Select Case Err_Number Case -2147023570 Wscript.echo "ユーザー名かパスワードが間違っています。" Exit Sub Case 0 Exit sub Case Else Wscript.echo "ネットワーク状態を確認してください。" End Select End If End Sub ----------------------------------------------------------------------------- 以上、あまり良い質問ではありませんが、どうぞよろしくお願い致します。

  • Outlookで、予定の件名をVBAから書き換えたいのですが

    Outlookで、予定の件名をVBAから書き換えたいのですが うまくいきません。 環境は、OS:Win2000、Ver: Outlook2000 SP3です(古いですが)。 今のところ、ネット上で拾ったコードを元に、 Dim colAppts As Items Set colAppts = Application.Session.GetDefaultFolder(olFolderCalendar).Items For i = 1 To colAppts.Count MsgBox colAppts.Item(i).Subject colAppts.Item(i).Subject = "ほげ" colAppts.Item(i).Save MsgBox colAppts.Item(i).Subject Next というようなことをやってみたのですが、Subjectプロパティへの代入前後で、 内容がまったく変わりません。 どうやったらいいのでしょうか?

  • [VBS] 動的配列について教えてください!

    VBS初心者です。 以下のように、リストを読み込んで動的配列に持たせたいです。 ----------------------------------------------------------------- GET_FILE = "sample.txt" SET objFs = CreateObject("Scripting.FileSystemObject") ' 動的配列セット Call Array_Set("AryVal",GET_FILE) ' 表示 For i = 0 To Ubound(AryVal) msgbox AryVal(i) Next ' 終了 WScript.Quit 0 Function Array_Set(AryName,ReadFile) Set strVal = objFs.OpenTextFile(ReadFile) ' 1行づつ処理 Do While strVal.AtEndOfStream <> True i = i + 1 ReDim Preserve AryName( i - 1 ) AryName( i - 1 ) = strVal.ReadLine Loop End Function ----------------------------------------------------------------- 見て頂くと分かるとおり、動的配列として持たせたい変数名を Functionの引数として渡しています。(当然のごとくエラー、、、) Functionの引数として渡した値に動的配列が格納される方法があれば教えてください。 よろしくお願いします。

  • Microsoft Outlookで送受信できない

    Microsoft Outlookで送受信できない Microsoft Outlookを使っているのですが、昨日急に送受信できないようになりました。 送受信できないと気づくちょっと前から「ネットワーク パスワードの入力」というのがOKしてもパスワードをパスワード一覧に保存するにチェックしてOKしても、何度も出てくるのですがそれも関係ありますよね?(キャンセルするといったん消えます) セキュリティソフトで遮断されているという可能性があるらしいので、ウイルスセキュリティZEROの設定がMicrosoft Outlookを許可しているか確認しましたがちゃんと許可してありました。(今まで無事に使ってたのでそれはそうだと思います) ためしに「すべての機能を無効にする」をやってみたところ送受信出来たのでこれが原因かなと思うのですが、何をどうしたらいいのかわかりません。 しかも色々試行錯誤しているうちに(↑の実験の時だけ無効にしていたのですが)「すべての機能を無効にする」にしても送受信がずっと処理中のままでできないようになってしまいました… 今は送受信しても処理中のままで進まないのですが昨日はエラーで 0x8004210A、0x800CCC0B、0x800CCC92などが出ていました。 どうしたらいいでしょうか? PC VAIO VGN-CR90S vista Microsoft office Outlook 2007 ウイルスセキュリティ バージョン 10.0.0075

  • 同様の値があるか判別するには?

    ショッピングカートを作っており商品情報を以下のような セッション配列で管理しています。 Array ( [set] => Array ( [0] => Array ( [key] => 商品名A [num] => 1 [price] => 1980 ) [1] => Array ( [key] => 商品名B [num] => 1 [price] => 2980 ) [2] => Array ( [key] => 商品名C [num] => 1 [price] => 3980 ) ) ) やりたいことは既に持っているセッションの['key']と商品名の 変数が同様かどうかを判別し同様の値があった場合となかった 場合で分岐しそれぞれの処理をしたいです。 分岐後の処理はなんとかなるのですがどうやって判断すれば いいものかわかりません^^; $set = 'ここに商品名がはいります'; if (!count($_SESSION['set'])) { // セッションカウントがない場合 // (1つ目の商品をカートに入れた場合) // 値設定 $n = 0; $_SESSION['set'][$n]['key'] = $set; // その他の処理 } else { // セッションカウントがある場合 // (2つ目以降の商品をカートに入れた場合) // 値設定 $n = count($_SESSION['set']); if (!array_search($set, $_SESSION['set'][$n])) { // ここで同様の値があるか判別したい } if (***) { // 同様の値がある場合の処理 } else { // 同様の値がない場合の処理 } } 宜しくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう