WSH 外部ファイル のキーワードで検索したが、目ぼしい結果は無し。
WSH 外部ファイル 行目 MsgBox で検索しても目ぼしい結果は無し。
WSH 外部ファイル 指定行 MsgBox で検索しても同じ。
なんでもいいので、外部ファイルを読み込んで出力するような WSHプログラムを作成する事にした。
【ソース01】[外部ファイルの出力]
Option Explicit
Dim objFs 'File System Object
Dim objFile '読み込み対象ファイル
'FileSystemObject取得
Set objFs = CreateObject("Scripting.FileSystemObject")
'読み込みファイルオブジェクト作成
Set objFile = objFs.OpenTextFile("C:\readme.txt")
'全部読み込み
Do Until objFile.AtEndOfLine
MsgBox objFile.ReadLine '1行づつ表示
Loop
objFile.Close 'ファイルを閉じる
'終了処理
Set objFile = Nothing
Set objFs = Nothing
自分で考えてやってみた。
【ソース02】[外部ファイルの出力]
Option Explicit
Dim objFs 'File System Object
Dim objFile '読み込み対象ファイル
Dim cnt
cnt = 0
'FileSystemObject取得
Set objFs = CreateObject("Scripting.FileSystemObject")
'読み込みファイルオブジェクト作成
Set objFile = objFs.OpenTextFile("C:\readme.txt")
If cnt = 3 Then
'全部読み込み
Do Until objFile.AtEndOfLine
MsgBox objFile.ReadLine '1行づつ表示
Else cnt = cnt + 1
Loop
End If
objFile.Close 'ファイルを閉じる
'終了処理
Set objFile = Nothing
Set objFs = Nothing
If文を含んだサンプルプログラムを動かす。
If文 サンプル で検索~
【ソース03】[If文の実験]~
If Beer >= 5 Then
WScript.Echo "飲み過ぎっすよまささん"
Else
WScript.Echo "今日は体調不良ですか?まささん"
End If
【NAVI】> 誤り01 > Else の後ろに何か書くことは出来ない。
【NAVI】> 誤り02 > Ifのブロックが、ループブロックの外側にあるので、
Ifが偽になれば、ループ全体が実行されない。
今回の話は、ループの内側もIfブロックが無いといけない。
【NAVI】> 細分課題01 >「飲みすぎ」が表示される場合と、体調不良が表示される場合のプログラム両方を作って欲しい。
細分課題01 >「飲みすぎ」が表示される場合と、体調不良が表示される場合のプログラム両方を作る。
【ソース04】[If文の実験]
Beer=6
If Beer >= 5 Then
WScript.Echo "飲み過ぎっすよまささん"
Else
WScript.Echo "今日は体調不良ですか?まささん"
End If
【ソース05】[If文の実験]
Beer=2
If Beer >= 5 Then
WScript.Echo "飲み過ぎっすよまささん"
Else
WScript.Echo "今日は体調不良ですか?まささん"
End If
Beer=6 とかの部分が InputBoxにてユーザ入力できるように改造したソースを別途作る。
【ソース06】[ユーザ入力の実験]
Beer = InputBox("ビールの本数を入力して下さい",,"")
If Beer >= 5 Then
WScript.Echo "飲み過ぎっすよまささん"
Else
WScript.Echo "今日は体調不良ですか?まささん"
End If
ElseIfを含んだプログラムを作成する。
【ソース07】[ElseIfの理解]~
Option Explicit
'MsgBox関数の戻り値を格納する変数
Dim Msg
'MsgBoxのダイアログ・タイトルを示す定数
Const TITLE = "ダイアログ・クイズ"
'MsgBox関数の戻り値がMsgという変数に代入される
Msg = MsgBox("「アルプスの少女○○ジ」○○のところになにがくる?", vbQuestion + vbYesNoCancel, TITLE)
If Msg = vbYes Then 'もしMsgがvbYesなら
MsgBox "正解!たいしたもんだ。" , vbInformation, TITLE
ElseIf Msg = vbNo Then 'もしMsgがvbNoなら
MsgBox "ブー!「アルプスの少女イイエジ」ってことはないだろ。" , vbCritical, TITLE
Else 'それ以外の場合なら
MsgBox "キャンセルを押しました。" ,vbExclamation, TITLE
End If
ビールのプログラムをベースにそれを改修して、ElseIfを含んだものとする。
【ソース08】[ElseIfの理解]~
Beer = InputBox("ビールの本数を入力して下さい",,"")
If Beer >= 5 Then
WScript.Echo "飲み過ぎっすよまささん"
ElseIf Beer = 4 Then
WScript.Echo "公園で裸にならないでくださいよ!まささん"
Else
WScript.Echo "今日は体調不良ですか?まささん"
End If
ビールプログラムをさらに改修して、何でもいいので、For文も含んだプログラムとする。
【ソース09】[For文の理解]
cnt = 0
Beer = InputBox("ビールの本数を入力して下さい",,"")
If Beer >= 5 Then
WScript.Echo "飲み過ぎっすよまささん"
ElseIf Beer = 4 Then
WScript.Echo "公園で裸にならないでくださいよ!まささん"
Else
WScript.Echo "今日は体調不良ですか?まささん"
End If
i = Beer
For Beer = i To 1 Step -2
cnt = cnt + 1
Next
Cnt = cnt - 1
WScript.Echo "2の",Cnt,"倍以上飲んだね?まささん"
InputBoxによるビール飲用本数指定の回数だけ、「ビールを飲みました」を表示するようにする。
【ソース10】[For文の実施]
Beer = InputBox("ビールの本数を入力して下さい",,"")
For i = 1 To Beer
WScript.Echo "ビールを飲みました"
Next
If Beer >= 5 Then
WScript.Echo "飲み過ぎっすよまささん"
ElseIf Beer = 4 Then
WScript.Echo "公園で裸にならないでくださいよ!まささん"
Else
WScript.Echo "今日は体調不良ですか?まささん"
End If
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (Beer_if_2009_7_25_03.jpg)
ビールを飲みすぎかどうかの判定結果をファイルに出力するようにする。
【ソース11】[ファイル出力の実行]
Set objFs = CreateObject("Scripting.FileSystemObject")
Set tmpFile = objFs.CreateTextFile("C:\Beer01.txt")
Beer = InputBox("ビールの本数を入力して下さい",,"")
If Beer >= 5 Then
tmpFile.WriteLine("飲み過ぎっすよまささん")
ElseIf Beer = 4 Then
tmpFile.WriteLine("公園で裸にならないでくださいよ!まささん")
Else
tmpFile.WriteLine("今日は体調不良ですか?まささん")
End If
tmpFile.close
Set tmpFile = Nothing
Set objFs = Nothing
出来たかな?
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (Beer_2009_7_25_04.jpg)
InputBoxでなくて、テキストファイルからの入力により、ビールの本数が決まるようにする。ファイルには、1行だけあって、そこに整数値が書かれているものとする。
【ソース12】[テキストファイルからの入力のテスト]~
Set objFs = CreateObject("Scripting.FileSystemObject")
Set tmpFile = objFs.OpenFile("C:\Beer02.txt")
Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
Loop
Beer = tmpLine
Set tmpFile02 = objFs.CreateTextFile("C:\Beer01.txt")
If Beer >= 5 Then
tmpFile02.WriteLine("飲み過ぎっすよまささん")
ElseIf Beer = 4 Then
tmpFile02.WriteLine("公園で裸にならないでくださいよ!まささん")
Else
tmpFile02.WriteLine("今日は体調不良ですか?まささん")
End If
tmpFile02.close
Set tmpFile02 = Nothing
Set objFs = Nothing
~~
出来たかな?
~~
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (error_beer_2009_7_25.jpg)
エラー出現。よーわからんっす。
【ソース13】[errorの修正]
Set objFs = CreateObject("Scripting.FileSystemObject")
Set tmpFile = objFs.OpenTextFile("C:\Beer02.txt")
Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
Loop
Beer = tmpLine
Set tmpFile02 = objFs.CreateTextFile("C:\Beer01.txt")
If Beer >= 5 Then
tmpFile02.WriteLine("飲み過ぎっすよまささん")
ElseIf Beer = 4 Then
tmpFile02.WriteLine("公園で裸にならないでくださいよ!まささん")
Else
tmpFile02.WriteLine("今日は体調不良ですか?まささん")
End If
tmpFile02.close
Set tmpFile02 = Nothing
Set objFs = Nothing
出来たかな?
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (Beer_text_file_2009_7_25.jpg)
読み込みファイルの内容を3行にして、1行目にビールの本数が書かれていて、2や3行目には、無関係の文字列が入っているようにする。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (3gyou_2009_7_25.jpg)
文字を2行目と3行目に入れたら、型が違うと出た。~
何でもいいからForループするプログラム (ただしStepを設定しない) を作成して、ループの3回目だったら、MsgBoxするプログラムを作成する。
【ソース14】[For文の理解促進]
For i = 1 To 9
If i = 3 Then
MsgBox "ループの3回目です。"
End If
Next
出来たくさい。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (loop_2009_7_25.jpg)
読み込みファイルの内容を3行にして、1行目にビールの本数が書かれていて、2や3行目には、無関係の文字列が入っているようにする。
ReadLineしているループ中で、カウンタの役割を果たす変数にカウントさせるようにする。そうして、1行目なら1行目とかechoするようにする。
【ソース15】[カウンタの理解]
i = 0
Set objFs = CreateObject("Scripting.FileSystemObject")
Set tmpFile = objFs.OpenTextFile("C:\Beer02.txt")
Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
i = i + 1
WScript.Echo i,"行目"
Loop
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (cnt_gyou_2009_7_25.jpg)
2行目のときだけ、「2行目だー!」と、それらしい表示をするようにする。
【ソース16】[If文の理解]
i = 0
Set objFs = CreateObject("Scripting.FileSystemObject")
Set tmpFile = objFs.OpenTextFile("C:\Beer02.txt")
Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
i = i + 1
If i = 2 Then
WScript.Echo "2行目だぁー!"
Else
WScript.Echo i,"行目"
End If
Loop
~~
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (2gyoume_2009_7_25.jpg)
読み込みファイルの内容を3行にして、1行目にビールの本数が書かれていて、2や3行目には、無関係の文字列が入っているようにする。
2行目や3行目だったら、ReadLineした内容を空読みにすれば良い。1行目とは違う変数に入れてしまうようにする。
~~
【ソース17】[空読みの理解]
i = 0
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objTmpFile = objFs.OpenTextFile("C:\Beer02.txt")
Do Until objTmpFile.AtEndOfStream
i = i + 1
If i >= 2 Then
tempCase = objTmpFile.ReadLine
Else
tmpLine = objTmpFile.ReadLine
End If
Loop
Beer=tmpLine
Set objTmpFile02 = objFs.CreateTextFile("C:\Beer01.txt")
If Beer >= 5 Then
objTmpFile02.WriteLine("飲み過ぎっすよまささん")
ElseIf Beer = 4 Then
objTmpFile02.WriteLine("公園で裸にならないでくださいよ!まささん")
Else
objTmpFile02.WriteLine("今日は体調不良ですか?まささん")
End If
objTmpFile02.close
Set objTmpFile02 = Nothing
Set objFs = Nothing
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (3gyou_kara_2009_7_25.jpg)
最終更新:2009年08月02日 12:03