
初めまして。
調べてみても同様の事例が見つからず、理解のきっかけも想像出来ませんでしたので質問させてください。
現象としては、「ログオンしている状態であればダブルクリックで動かしても、スケジューラを使って動かしても問題なく動く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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- 英語 提示文の"how"の役割について 4 2022/04/27 12:11
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- 英語 大学の英語の課題で、busy scheduleをテーマにプレゼン資料を作っているのですが、why〜a 3 2022/10/25 00:14
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- 英語 英語の質問です 「もし予定が合えば来年も行きます」って英語にしたら I will go there 3 2022/08/10 23:34
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロで、次のコードへ行く前...
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
順番に処理させたい
-
C#でタイトルバーを自動的に隠...
-
VB.NET SPRED(チェックボック...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
VBAで組み合わせソフトを作ろう...
-
VBAのIF分がうまくいかんっす...
-
VBAで時刻の記述方法
-
COBOL OCCURSで指定したデータ...
-
aspx の同時処理数について教え...
-
入力した値が不正というよりイ...
-
Timerイベントについて
-
どう増強すべきか
-
Excel VBA セルの名前があるか...
-
basp21でメールが2通送信される
-
ACCESSから、FAXのジョブを削除。
-
Word VBA。各マクロの間に待ち...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
シグナル 6(SIGABRT)とは?
-
特定の名前のオートシェイプの...
-
IF文に時間(何時から何時ま...
-
どう増強すべきか
-
特定のファイルを他のプロセス...
-
Word VBA。各マクロの間に待ち...
-
どうやってもFor文を抜けてしま...
-
Excel VBA セルの名前があるか...
-
ExcelのVBAで、選択したファイ...
-
【C#】Page_Loadさせない方法に...
-
StatusStripの表示が更新されな...
-
途中で処理を中断させたい (ア...
-
エクセル VBAで複数セル選択時...
-
Functionで戻り値を複数返す方法
-
VBAでBook読み込み時の非表示方...
-
VBA 複数の行を高速で削除する...
おすすめ情報