teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2017/04/24 06:36

投稿

ttyp03
ttyp03

スコア17002

answer CHANGED
@@ -9,7 +9,7 @@
9
9
  1行読んだ後、1文字ずつ精査し、ダブルクォーテーションが閉じられていない場合は、次の行も読み込み、前行と連結、というのを繰り返す必要があると思います。
10
10
 
11
11
  読み込み処理のところのコードを書いてみました。
12
- 参考まで
12
+ 参考まで(※エラー処理は省いています)
13
13
  ```VBA
14
14
  Dim objFSO
15
15
  Dim objr

1

コード追加

2017/04/24 06:36

投稿

ttyp03
ttyp03

スコア17002

answer CHANGED
@@ -6,4 +6,32 @@
6
6
  警告3行目",null
7
7
  ```
8
8
  なので単純にReadLineで読み込んだのを1行として扱ってしまうとおかしくなります。
9
- 1行読んだ後、1文字ずつ精査し、ダブルクォーテーションが閉じられていない場合は、次の行も読み込み、前行と連結、というのを繰り返す必要があると思います。
9
+ 1行読んだ後、1文字ずつ精査し、ダブルクォーテーションが閉じられていない場合は、次の行も読み込み、前行と連結、というのを繰り返す必要があると思います。
10
+
11
+ 読み込み処理のところのコードを書いてみました。
12
+ 参考まで。
13
+ ```VBA
14
+ Dim objFSO
15
+ Dim objr
16
+ Dim str
17
+
18
+ Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
19
+ Set objr = objFSO.OpenTextFile(WScript.Arguments.Item(0))
20
+
21
+ Do While objr.AtEndOfStream <> True
22
+ str = ""
23
+ ' 1行分のデータ読み込みループ
24
+ Do While objr.AtEndOfStream <> True
25
+ str = str & objr.ReadLine
26
+ ' ダブルクォーテーションの数をカウントし偶数ならループを抜ける
27
+ if (Len(str) - Len(Replace(str,"""",""))) Mod 2 = 0 Then Exit Do
28
+ Loop
29
+ ' 1行分のデータを表示
30
+ WScript.Echo "[" & str & "]"
31
+ Loop
32
+ objr.Close
33
+
34
+ Set objr = Nothing
35
+ Set objFSO = Nothing
36
+
37
+ ```