いつもお世話になっております。
http://okwave.jp/qa/q8672643.html
前回質問させていただいた、
txtファイルをHTMLに自動的に変換するプログラムを
作成中ですが、
ひとつ分からない点があるため、質問させていただきました。
ためしに、テキストファイル2つ。
VBSファイル1つをフォルダに置いて実行してみました。
しっかり1行ずつ実行できているか
Msgbox を使って確認したのですが、
1つ目のファイル「読み込み失敗.txt」が1度で全部読み込みしてしまい、
2つ目のファイル「読み込み成功.txt」は1行ずつ読み込め、無事変換できております。
------------読み込み失敗.txt-------------
Private Sub CommandButton1_Click()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
''資料作成
ChertGraph.ComboBox1.Value = Me.ComboBox1.Value 'データ入力
Call ChertGraph.CommandButton1_Click 'ボタンクリック
Graph_MAKE.ComboBox1.Value = Me.ComboBox1.Value'データ入力
Graph_MAKE.ComboBox1.Value = Me.ComboBox1.Value'データ入力
Call SCKindofGraph_SELECT.BothCreate_Click'ボタンクリック
Call SCKindofGraph.CommandButton1_Click 'ボタンクリック
History.ComboBox3.Value = Me.ComboBox1.Value '履歴に値を入れる
Call History.CommandButton1_Click '履歴出力実行
Call BookCopy 'データ出力
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Call Module1.sheet_sort
MsgBox Me.ComboBox1.Value & vbCrLf & "完了しました。"
Worksheets("TOP").Activate
End
End Sub
----------------------------------------
------------読み込み成功.txt-------------
Sub ComboboxNarabi()
Dim i As Long
Dim j As Long
Dim Count As Long
Dim Swap As String
Dim SortListData As Variant
SortListData = Array("A", "B", "C", "D", "E", "F", "G", "")
Count = 0
For j = 0 To UBound(SortListData)
For i = 0 To ComboBox2.ListCount - 1
If ComboBox2.List(i) = SortListData(j) Then
Swap = ComboBox2.List(Count) '現在の位置の内容をSwapにコピー
ComboBox2.List(Count) = ComboBox2.List(i) '現在位置に、検索したワードをコピー
ComboBox2.List(i) = Swap 'もとの内容をコピー
Count = Count + 1
End If
Next
Next
End Sub
----------------------------------------
--------------VBSファイル---------------
Dim strScriptPath'自分の現在位置
strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")'フルネームから、スクリプトネームを削除!
' フォルダをオブジェクト取得
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(strScriptPath)
for each file in objFolder.Files
If file.name<> WScript.ScriptName and Right(file.name,5)= ".html" Then
objFso.DeleteFile file.Path
End if
Next
Set objFolder = objFso.GetFolder(strScriptPath)
for each file in objFolder.Files
If file.name<> WScript.ScriptName and Right(file.name,4)= ".txt" Then
Msgbox file.Path
Set HTMLOutPutData = objFso.CreateTextFile(objFso.GetBaseName(file) & ".html",True)
Set fileRead = objFSO.OpenTextFile(file)'ファイルを開く
If Err.Number = 0 Then
HTMLOutPutData.WriteLine "<html>"
HTMLOutPutData.WriteLine "<head>"
HTMLOutPutData.WriteLine "<title></title>"
HTMLOutPutData.WriteLine "</head>"
HTMLOutPutData.WriteLine "<body>"
HTMLOutPutData.WriteLine "<h1 align=""" &"center" &""">"& objFso.GetBaseName(file) & "</h1>"
HTMLOutPutData.WriteLine "<hr>"
Do Until fileRead.AtEndOfStream = true
LINEDATA = fileRead.ReadLine
Msgbox LINEDATA
If InStr(LINEDATA,"'") = 0 then'含んでない場合
HTMLOutPutData.WriteLine "<font color=""" &"black"&""">" & LINEDATA & "</font><br>"
Else
HTMLOutPutData.WriteLine Replace(LINEDATA,"'","<font color=""" &"green"&""">'") & "</font><br>"
End if
Loop
HTMLOutPutData.WriteLine "</body>"
HTMLOutPutData.WriteLine "</html>"
fileRead.Close
Else
MsgBox "ファイルが開けません"
End If
End if
Next
Msgbox "終わり!"
----------------------------------------
LINEDATA = fileRead.ReadLine
Msgbox LINEDATA
と実行した場合に、何故1行ずつ読み込めていないのか
調べ方が悪いのか情報が無かったため
何か情報があれば、お願い致します!
以上、よろしくお願い致します。
'スクリプト名を含まないフルパスを編集する(自分の場所のみ表示)
'strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
'スクリプト名を含むフルパス
'WScript.echo "スクリプト名を含む " & WScript.ScriptFullName
'スクリプト名を含まないフルパス
'WScript.echo "スクリプト名を含まない " & strScriptPath
Dim strScriptPath'自分の現在位置
strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")'フルネームから、スクリプトネームを削除!
' フォルダをオブジェクト取得
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(strScriptPath)
for each file in objFolder.Files
If file.name<> WScript.ScriptName and Right(file.name,5)= ".html" Then
objFso.DeleteFile file.Path
End if
Next
Set objFolder = objFso.GetFolder(strScriptPath)
for each file in objFolder.Files
If file.name<> WScript.ScriptName and Right(file.name,4)= ".txt" Then
'Msgbox objFso.GetBaseName(file)ファイル名
Set HTMLOutPutData = objFso.CreateTextFile(objFso.GetBaseName(file) & ".html",True)
Set fileRead = objFSO.OpenTextFile(file)'ファイルを開く
'If InStr(l, "本社") = 0 含んでない場合
'Replace(文字列,どれを、どれに)
'<font color="green">文字列</font>緑色に
If Err.Number = 0 Then
HTMLOutPutData.WriteLine "<html>"
HTMLOutPutData.WriteLine "<head>"
HTMLOutPutData.WriteLine "<title></title>"
HTMLOutPutData.WriteLine "</head>"
HTMLOutPutData.WriteLine "<body>"
HTMLOutPutData.WriteLine "<h1 align=""" &"center" &""">"& objFso.GetBaseName(file) & "</h1>"
HTMLOutPutData.WriteLine "<hr>"
Do Until fileRead.AtEndOfStream = true
LINEDATA = fileRead.ReadLine
If InStr(LINEDATA,"'") = 0 then'含んでない場合
HTMLOutPutData.WriteLine "<font color=""" &"black"&""">" & LINEDATA & "</font><br>"
Else
HTMLOutPutData.WriteLine "<font color=""" &"black"&""">" & Replace(LINEDATA,"'","</font><font color=""" &"green"&"""><b>'") & "</b></b></font><br>"
End if
Loop
HTMLOutPutData.WriteLine "</body>"
HTMLOutPutData.WriteLine "</html>"
fileRead.Close
Else
MsgBox "ファイルが開けません"
End If
End if
Next
Msgbox "終わり!"
というプログラムにしてみました。(変わっていないかも…?)
お礼
回答ありがとうございました。 メモ帳で確認してみたところ、仰るとおりでした。 一旦Terapadで開き、メモ帳に貼り付けて保存しなおすことで 直りました! ありがとうございました^^
補足
'スクリプト名を含まないフルパスを編集する(自分の場所のみ表示) 'strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"") 'スクリプト名を含むフルパス 'WScript.echo "スクリプト名を含む " & WScript.ScriptFullName 'スクリプト名を含まないフルパス 'WScript.echo "スクリプト名を含まない " & strScriptPath Dim strScriptPath'自分の現在位置 strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")'フルネームから、スクリプトネームを削除! ' フォルダをオブジェクト取得 Set objFso = CreateObject("Scripting.FileSystemObject") Set objFolder = objFso.GetFolder(strScriptPath) for each file in objFolder.Files If file.name<> WScript.ScriptName and Right(file.name,5)= ".html" Then objFso.DeleteFile file.Path End if Next Set objFolder = objFso.GetFolder(strScriptPath) for each file in objFolder.Files If file.name<> WScript.ScriptName and Right(file.name,4)= ".txt" Then 'Msgbox objFso.GetBaseName(file)ファイル名 Set HTMLOutPutData = objFso.CreateTextFile(objFso.GetBaseName(file) & ".html",True) Set fileRead = objFSO.OpenTextFile(file)'ファイルを開く 'If InStr(l, "本社") = 0 含んでない場合 'Replace(文字列,どれを、どれに) '<font color="green">文字列</font>緑色に If Err.Number = 0 Then HTMLOutPutData.WriteLine "<html>" HTMLOutPutData.WriteLine "<head>" HTMLOutPutData.WriteLine "<title></title>" HTMLOutPutData.WriteLine "</head>" HTMLOutPutData.WriteLine "<body>" HTMLOutPutData.WriteLine "<h1 align=""" &"center" &""">"& objFso.GetBaseName(file) & "</h1>" HTMLOutPutData.WriteLine "<hr>" Do Until fileRead.AtEndOfStream = true LINEDATA = fileRead.ReadLine If InStr(LINEDATA,"'") = 0 then'含んでない場合 HTMLOutPutData.WriteLine "<font color=""" &"black"&""">" & LINEDATA & "</font><br>" Else HTMLOutPutData.WriteLine "<font color=""" &"black"&""">" & Replace(LINEDATA,"'","</font><font color=""" &"green"&"""><b>'") & "</b></b></font><br>" End if Loop HTMLOutPutData.WriteLine "</body>" HTMLOutPutData.WriteLine "</html>" fileRead.Close Else MsgBox "ファイルが開けません" End If End if Next Msgbox "終わり!" というプログラムにしてみました。(変わっていないかも…?)