🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

1回答

693閲覧

VBSの条件分岐分のエラーについて

kst02w

総合スコア8

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2021/03/03 06:36

条件分岐を使って、Desktopにあるtest.txtの更新時刻と、今の時間を比較して、
60秒以内の時間差なら成功、60秒以上なら失敗というメッセージボックスを表示するScriptを作成しました。

Sub Sample()
t1 = filedatetime("C:\Users\PC\Desktop\test.txt")
t2 = now()
t3 = t2 - t1
t4 = hour(t3) * 3600 + Minute(t3)* 60 + second(t3)
if t4 > 60 then
msgbox "失敗"
else
msgbox "成功"
end if
End Sub

これを実行すると、下図のようなエラーが出てします。
エラー内容を調べてみましたが、どこを直せばいいのかがわからないので教えていただけますでしょうか。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

VBSのファイルがUTF-8になっていると思います。
SHIFT-JISで保存しなおしてください。

投稿2021/03/03 07:03

jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kst02w

2021/03/03 07:41

ご回答ありがとうございます。 SHIFT-JISに変更したら無事エラーが解消されました。 が、実行結果のメッセージボックスが出てこないのですが、 これはScriptの記述がどこか間違えているのでしょうか?
jinoji

2021/03/03 07:48

問題は2点。 まず、Sample というSubモジュールを呼び出す記述がありません。 1行目に、 Call Sample とでも書いてください。 次に、filedatetime という Function を定義する記述がありません。 VBScriptにそういう関数が備わっているわけではないので、 自分で記述する必要があると思います。
jinoji

2021/03/03 09:32

stdioさん、補正ありがとうございます。
kst02w

2021/03/03 14:34

ご回答ありがとうございます。 Sub Sample()とEnd Subを消した状態で実行すると、下記のエラーが表示されます。 行:1 文字:1 エラー:型が一致しません。"filedatetime" コード:800A000D ソース:Microsoft VBScript 実行時エラー 記述の仕方はこれであっておりますでしょうか? t1 = filedatetime("C:\Users\MAC\Desktop\test.txt") t2 = now() t3 = t2 - t1 t4 = hour(t3) * 3600 + Minute(t3)* 60 + second(t3) if t4 > 60 then msgbox "失敗" else msgbox "成功" end if
jinoji

2021/03/03 20:31 編集

その後ろに以下の記述を追加したらいいと思います。(VBSの時のみ) Function FileDateTime(fn) FileDateTime = CreateObject("Scripting.FileSystemObject").GetFile(fn).DateLastModified End Function
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問