
初めまして。
調べてみても同様の事例が見つからず、理解のきっかけも想像出来ませんでしたので質問させてください。
現象としては、「ログオンしている状態であればダブルクリックで動かしても、スケジューラを使って動かしても問題なく動くVBS」を作成しました。(ソースは末尾に記載します。)
しかし、「コンピュータのロックがかかっている状態(時間が経つと勝手にロックがかかる仕様になっています)」でタスクスケジューラを使いスクリプトを動かすとエラーになるというものです。
ソースは↓
要するに特定のWEBページの情報を持ってきて置換処理をしいらない部分を削除し、メールで送信する。というスクリプトです。
-----------------------------------------------------------
Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://")
Set WshShell = WScript.CreateObject("WScript.Shell")
Do While IE.Busy
Wscript.Sleep 10
Loop
'↓開いたらログイン処理やページ移動処理などをして
目的のページ移動する処理があり、目的のページを開いたら↓の処理に続きます。
Do While IE.Busy
WScript.Sleep 10
Loop
'目的のページをテキストデータで読み込みます。
Do While IE.Document.readyState <> "complete"
WScript.Sleep 100
Loop
Dim Schedule
'読み取ったページ内容を変数に格納します。
Schedule = IE.Document.Body.InnerText
'テキストデータの中からいらない情報を置換して消していきます。
後の処理をみると無駄な作業に見えますが諸事情により必要な処理です。
Schedule = Replace (Schedule,"89101112131415161718192021222324","")
Schedule = Replace (Schedule,"891011121314151617181920212223","")
Schedule = Replace (Schedule,"8910111213141516171819202122","")
Schedule = Replace (Schedule,"89101112131415161718192021","")
Schedule = Replace (Schedule,"891011121314151617181920","")
Schedule = Replace (Schedule,"8910111213141516171819","")
Schedule = Replace (Schedule,"reserved.","")
'テキストデータの中で固有のデータ(データ取得時の西暦)があるので、
それをInStrで探し出し、Midを使って固有のデータ移行のテキストデータを
strScheduleの中に格納しています。
Dim strFind
Dim counterStart
Dim strSchedule
strFind = Year(Now)
counterStart = InStr(Schedule, strFind)
strSchedule = Mid(Schedule,counterStart)
Dim nowdate
nowdate = Date()
Call SendMail("aaa@aa.com", nowdate & "のスケジュール",strSchedule)
'-------------- ↓サブルーチン↓ -----------------
'メール送信
Sub SendMail(mailto,subj,body)
Set bobj = CreateObject("basp21")
Dim smtp '--SMTPサーバー
smtp = "mail.aaa.com"
mailfrom = "sysadmin@aaa.com"
files = ""
msg = bobj.SendMail(smtp,mailto,mailfrom, subj,body,files)
End sub
'------------- ↑サブルーチン↑ -----------------
IE.Quit
Set objIE = Nothing
-----------------------------------------------------------
上記のソースの中で「strSchedule = Mid(Schedule,counterStart)」の部分でエラーが走ってしまいます。
内容としては、要するにMidの引数がふさわしくないとのことなのですが、
試しに「counterStart」を実際に当てはまる数字(テキストデータ全体の文字数よりも少ない数字)にしてもエラーが走ります。
現状は運用の方法を変え(いつまで経ってもロックされない仕様にしました。)
対応して問題なく動いているところですが、いまいち腑に落ちなく投稿いたしました。
どなたかご教授いただけますと幸いです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> IE.Visible = True
の部分をカットするとどうなりますか?
デスクトップがない(ログインしていない)のにウィンドウを表示させようとすると基本的にエラーになると思いますが・・・
この回答への補足
>> IE.Visible = True
>の部分をカットするとどうなりますか?
レスポンスが遅くなりまして、申し訳ありません。。
早速試してみましたところ、同様に
>上記のソースの中で「strSchedule = Mid(Schedule,counterStart)」の部分でエラーが走ってしまいます。
>内容としては、要するにMidの引数がふさわしくないとのことなのですが、
>試しに「counterStart」を実際に当てはまる数字(テキストデータ全体の文字数よりも少ない数字)にしてもエラーが走ります。
のエラーが走ります・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
C++ Builder6.0 TNMFTPコンポー...
-
シグナル 6(SIGABRT)とは?
-
ListViewから選択中の文字列を取得
-
どう増強すべきか
-
フォーカスがどこか行ってしまう
-
どうやってもFor文を抜けてしま...
-
【Vb.net】プリンタジョブの取得
-
特定の名前のオートシェイプの...
-
複数個のTextBoxでいずれかの内...
-
vbaのエラー対応(実行時エラー...
-
IF文に時間(何時から何時ま...
-
VBA マクロ 英語版WINDOWSで全...
-
VB6にてネットワーク上にある共...
-
c# の try の入れ子
-
EXCEL-VBAでキー入力で処理を分...
-
順番に処理させたい
-
特定のファイルを他のプロセス...
-
Excel VBA セルの名前があるか...
-
ドリブン??
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
どう増強すべきか
-
Excel VBA セルの名前があるか...
-
vbaのエラー対応(実行時エラー...
-
IF文に時間(何時から何時ま...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
マクロで、次のコードへ行く前...
-
どうやってもFor文を抜けてしま...
-
【Vb.net】プリンタジョブの取得
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
シェルスクリプトでファイル内...
-
【VBA】エラー処理で別プロシー...
-
cobolのコントロールブレイク
-
Functionで戻り値を複数返す方法
-
エクセル VBAで複数セル選択時...
-
【C#】Page_Loadさせない方法に...
-
ExcelのVBAで、選択したファイ...
おすすめ情報