初めまして。
調べてみても同様の事例が見つからず、理解のきっかけも想像出来ませんでしたので質問させてください。


現象としては、「ログオンしている状態であればダブルクリックで動かしても、スケジューラを使って動かしても問題なく動く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」を実際に当てはまる数字(テキストデータ全体の文字数よりも少ない数字)にしてもエラーが走ります。


現状は運用の方法を変え(いつまで経ってもロックされない仕様にしました。)
対応して問題なく動いているところですが、いまいち腑に落ちなく投稿いたしました。
どなたかご教授いただけますと幸いです。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> IE.Visible = True


の部分をカットするとどうなりますか?
デスクトップがない(ログインしていない)のにウィンドウを表示させようとすると基本的にエラーになると思いますが・・・

この回答への補足

>> IE.Visible = True
>の部分をカットするとどうなりますか?

レスポンスが遅くなりまして、申し訳ありません。。
早速試してみましたところ、同様に

>上記のソースの中で「strSchedule = Mid(Schedule,counterStart)」の部分でエラーが走ってしまいます。
>内容としては、要するにMidの引数がふさわしくないとのことなのですが、
>試しに「counterStart」を実際に当てはまる数字(テキストデータ全体の文字数よりも少ない数字)にしてもエラーが走ります。

のエラーが走ります・・・。

補足日時:2008/09/16 22:44
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qカッコ悪い使い方

カッコ悪い使い方ってあると思います。
モノの使い方、言葉の使い方、ファッション、
店の利用の仕方、あるいは、このサイトやネットの使い方etc
皆さんの考える「この使い方はカッコ悪い」を教えて下さい。

Aベストアンサー

ものの使い方ではないんですが、ひとつ挙げるとすれば、その人が外見的にカッコ良い人でもそうでなくても、いかにもカッコつけた態度をとっている人、つまり自意識過剰が見え見えの人はカッコ悪いと思います。

逆に言えば、自分に自信が持てるってことは、すごく幸せなことかも。
ま、それがその人の性格だったら、どうしようもないですけど・・・(-_-;)

QF9キーを実行するVBスクリプトを作ったのですがエラーになる

F9キーを実行するVBスクリプトを作ったのですがエラーになります
なぜでしょうか?

Sendkeys {F9}
Exit

ただこれだけです。

Aベストアンサー

Dim objFnc
Set objFnc = CreateObject("WScript.Shell")
objFnc.SendKeys "{F9}"
コマンドプロンプトで確認したけど、こんな感じ?

1.CreateObjectしてあげる
2."{ファンクション}"
3.Exitはプロシージャから抜けるとき記述します。

Qラブホテルで、本来以外の使い方をした経験、ありますか?

本来の使い方は、皆さん知っていますね?
そうではなくて、本来以外の使い方です。
テレビで「ラブホ女子会」が流行っている話をしていましたが、例えばそういうこととか、単に寝るために泊まったとか、出張で使ったとか、カラオケとか、昼寝とか・・・とにかく、本来の使い方ではない使い方です。
もちろんその後も、本来の使い方はしないでチェックアウトしたという前提です。

ラブホテルによっては、そういう使い方を認めないところもあるようですが、本来以外の使い方をした経験はありますか?

Aベストアンサー

お盆に家族旅行に行ったとき高速で30Km渋滞と表示されていたので、雄琴温泉に仕方なく宿泊しようとした。何処も満室で仕方なくラブホに家族で宿泊した。
回転するベッドや明るさの調整できる風呂があり、子供が大はしゃぎで遊んでいた。
妻とこんな使い方もあるなーと話をした。家族全員だと雄琴なら6,7万円必要なところ8000円ですみ
朝食もディナーのような肉料理だった。フロントの人は、普通はこんな使い方しないけど、いい勉強になった
こんな使い方も考えてみたいと言っていた。

Qアプリケーションのエラーを検出して他のプログラムを実行する方法

基本的な方法として,
(1)プログラムの起動時にエラーレベルを検出
(2)エラーの時には,他のプログラムを起動
という処理をbatファイルで記載しようと考えています。
(Windows2000上での処理です。)

ここで,分からない点が,
(1)アプリケーションのエラーレベルをどうやって
  調べるのか?
(2)エラーのときは,ダイアログが立ち上がり,
  DOSプロンプトが非アクティブになるので,
  DOSプロンプト以外のウィンドウ,ダイアログ
  を閉じたい。

という2点です。
よろしくお願いします。

Aベストアンサー

エラーになってもプログラムが終了しないのでは、バッチでは無理ですね。
VBS+WSHを使って、ループしながら、プログラムの終了とエラー時のダイアログのタイトルを監視するんでしょうか。WshShell.AppActivate("ABC") は、ABC というタイトルのウィンドウがあれば真を、無ければ偽を返します。ウィンドウがあればそれがアクティブになりますから、WshShell.SendKeys でダイアログを閉じるキーを送れば良いでしょう。

set WshShell = WScript.CreateObject("WScript.Shell")
Do
 if not WshShell.AppActivate("プログラムのウィンドウタイトル") then exit do
 if WshShell.AppActivate("エラーのウィンドウのタイトル") then
  WshShell.SendKeys "ウィンドウを閉じるキー"
  エラーのときの処理
  exit do
 end if
 Wscript.Sleep 1000
Loop

エラーになってもプログラムが終了しないのでは、バッチでは無理ですね。
VBS+WSHを使って、ループしながら、プログラムの終了とエラー時のダイアログのタイトルを監視するんでしょうか。WshShell.AppActivate("ABC") は、ABC というタイトルのウィンドウがあれば真を、無ければ偽を返します。ウィンドウがあればそれがアクティブになりますから、WshShell.SendKeys でダイアログを閉じるキーを送れば良いでしょう。

set WshShell = WScript.CreateObject("WScript.Shell")
Do
 if not WshShell.AppActivat...続きを読む

Qこのお箸の使い方ってOKなんですか?はたして疑問

たまに目にする箸の使い方。
フォークとナイフのように右と左に1本づつ持って
何かを切る、という箸の使い方って正しいんでしょうか。
私個人的にはそういう使い方を目にすると
嫌悪感を覚えるのですが。以前テレビを見ていたとき
君島十和子さんが堂々とそういう使い方をするのを
見て驚きました。ネットで調べたけれど、この使い方に
ついては見つけることができませんでした。
どなたか教えてください。

Aベストアンサー

調べてきました。
「ちぎり箸」というそうで、間違った使い方のひとつとのことです。

参考URL:http://www.table-manners.org/dainty_kaiseki/chopsticks/

Qpythonを始めたのですが次のプログラムが実行エラーを起こしますが理由を教えてください

linuxのterminalから以下を実行して以下のようなエラーが生じました

[root@fx8350 ~]# python<<EOL
> a = set(['red', 'blue', 'green'])
> a.add(['black'])
> print a #=> set(['red', 'blue', 'green', 'black'])
> EOL
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: unhashable type: 'list'
[root@fx8350 ~]#

Aベストアンサー

a.add(['black'])

じゃなくって

a.add('black')

じゃないですか?

Q日本語 「よう」の使い方

「よう」の使い方で同じ使い方のものを選ぶ問題の中で、
 1. 彼の家は大きくて、お城のようです。と
 2. 彼は日本人のように上手に話せます。が、同じ「よう」の使い方になっていました。1.は名詞+のようだ。 2.は名詞+のように+名詞or形容詞の使い方だと私は思うのですが......。1.と2.が同じ使い方になるのはどうしてなのでしょうか........?教えてください。

Aベストアンサー

コメントにお答えします。

まず、最初のご質問文の中にある誤りを指摘していませんでしたが、
 2.は名詞+のように+名詞or形容詞
は誤りで、
 2.は名詞+のように+動詞or形容詞or形容動詞
とすべきです。


では、本題。

>>>1.と2.の「よう」の意味は同じ、使い方は同じではないということですか??????。

問題は、解答者に対してこの2つの比較を求めています。
1「~のようです」(「ようです」の終止形)
2「~のように」(「ようだ」の連用形)

あなたの考え方は、
 1.は名詞+の+「ようだ/ようです(=終止形)」。
 2.は名詞+の+「ように(=連用形)」+動詞or形容詞or形容動詞
となっているから、使い方は異なるのではないか、ということですよね。

しかし、
国語(日本語)の問題で「同じ使い方のものを選べ」という問題がある場合、
単に活用形が異なるだけの言葉同士を「使い方が違う言葉」として扱うことは、通常ありません。


「お城のようだ/ように/ようです」「日本人のようだ/ように/ようです」は、
A + の + ようだ/ようです = 「Aのようだ/です」
の形です。
つまり、「形として、使い方が同じ」です。

そして、どちらも
・「Aではないけれども、Aに似ている」
・「Aではないけれども、Aの感じがする」
という意味になります。
つまり、「意味として、使い方が同じ」です。

ですから、1と2は、「形としても、意味としても、使い方は同じ」ということになります。


では!

コメントにお答えします。

まず、最初のご質問文の中にある誤りを指摘していませんでしたが、
 2.は名詞+のように+名詞or形容詞
は誤りで、
 2.は名詞+のように+動詞or形容詞or形容動詞
とすべきです。


では、本題。

>>>1.と2.の「よう」の意味は同じ、使い方は同じではないということですか??????。

問題は、解答者に対してこの2つの比較を求めています。
1「~のようです」(「ようです」の終止形)
2「~のように」(「ようだ」の連用形)

あなたの考え方は、
 1....続きを読む

QVBScriptの実行完了を待ってからDOSのプログラムを実行したい。

DOSのバッチからVBScriptを実行しています。
VBScriptの実行が完了してから次のDOSコマンドを実行させたいのですが、
START /WAIT SAMPLE.vbs
では
実行完了を待ってくれないみたいです。

どうしたらよいでしょうか?ご教授お願いいたします。

Aベストアンサー

適当なVBScript を書いて試してみましたが、完了待ちしますよ。
ひょっとして、 SAMPLE.vbs でウインドウアプリを起動してたりして、
それが終了してないのに、終了してるとか思ってませんか

SMPLE.vbs を補足していただけますか

Qタイガーバームの使い方

おみやげでタイガーバームを頂きました。使い方を教えて下さい。
基本的な使い方から意外な使い方まで、何でもお願いします。

Aベストアンサー

「何にでも効く」というふれ込みの万能?軟膏ですね。(笑)香港やシンガポールにはこれで大金持ちになった方が作った「タイガーバームガーデン」なるものがありました。
基本的には筋肉痛や肩こりなどに効くとされていますが、匂いがものすごいため、人前に出るときにはどうかと思います。
使用法は、少量をとり、肌に良くすりこみます。さらにマッサージをするすと、有効成分が浸透しやすく、いっそう効果的だそうです。
でも、けして切り傷や生傷には使用しないで下さい。 また体の粘膜部分など敏感なところへの使用もだめですよ。

Qバッチファイルのタスクスケジューラでの実行について教えて下さい。

AAAのパソコンのDドライブの111というフォルダを、ネットワーク経由でBBBのパソコンのDドライブの222という共有フォルダ内に333というフォルダ内へxcopyでコピーするバッチ(backup.bat)を作ってタスクスケジューラで1日1回自動実行させようと思うのですが、うまくいきません。どうすればよいのでしょうか?

AAAパソコン:Windows2000 professional SP4
       000フォルダ内にbackup.bat(共有フォルダではないです)
       111フォルダは共有フォルダではないです
       ユーザーアカウント⇒Administrator
       パスワードはないです
      
BBBパソコン:WindowsXP professional SP2
       222フォルダは共有フォルダ
       333フォルダは222の共有フォルダの中
       ユーザーアカウント⇒バックアップ
       パスワード⇒123

バッチファイル(backup.bat)
 ↓
 net use \\BBB\222 123 /user:バックアップ
 xcopy d:\111 \\BBB\222\333\ /E/C/F/H/R/K> d:\バックアップログ.log
 net use \\BBB\222 /delete

上記バッチファイルをAAAパソコンの「タスクの実行するファイル名」に直接登録(d:\000\backup.bat)して実行させてみたのですが、タスクの詳細設定のログ表示でログを見ると、『タスクは次の終了コードで完了しました:(1).』となっていて実行されませんでした。
cmd.exe /c d:\000\backup.batでタスク登録してもだめでした。

バッチファイル(backup.bat)をダブルクリックして実行するとBBBパソコンにコピーできます。

タスク設定時の
  実行するアカウント名⇒AAA\Administrator
  パスワードはなし

よろしくお願いいたします。

AAAのパソコンのDドライブの111というフォルダを、ネットワーク経由でBBBのパソコンのDドライブの222という共有フォルダ内に333というフォルダ内へxcopyでコピーするバッチ(backup.bat)を作ってタスクスケジューラで1日1回自動実行させようと思うのですが、うまくいきません。どうすればよいのでしょうか?

AAAパソコン:Windows2000 professional SP4
       000フォルダ内にbackup.bat(共有フォルダではないです)
       111フォルダは共有フォルダではないです
       ユーザー...続きを読む

Aベストアンサー

パソコンAAAのアカウントAdministraorにパスワードを設定し、
タスク実行時にもそのパスワードを設定してみて下さい。

それで実行できれば、参考URLにあるとおり原因はセキュリティ上の仕様なのでしょう。
WindowsXP以降で発生する、と書かれているので原因が違っているかもしれませんが・・・

参考URL:http://support.microsoft.com/kb/299854/ja


人気Q&Aランキング

おすすめ情報