
VBScript初心者です。
VBScriptで配列を扱った処理を作ろうとしています。
具体的には、ファイルAを読み取り、特定の条件に合うものだけをファイルBに書き込みます。
a.ファイルAを1行ずつ読み込み、配列strに格納
b.配列strの中から特定の条件に合うものをファイルBにwriteline
ファイルAは毎日行数が変動するファイルです。
困っているのは、配列strを宣言するときに要素数まで指定しないと使えない(ように見える)
ことです。調査不足かもしれませんが、ネット検索上はそう解釈できました。
この場合、上記処置をしようとすると、
1.ファイルAオープン
2.ファイルAの行数を取得
3.ファイルAクローズ
4.配列strを2で取得した行数を要素数として宣言
5.ファイルAオープン
6.上記a,bを実施
となり、ファイルAを2回オープンクローズすることになり、本当にこんなやり方しかないの?
と思ってしまいます。
ReDimという配列の再宣言という概念もあるようですが、再宣言前に格納したデータがすべて
消えてしまう動きに見え、使えそうもありません。
配列を適当に大きな要素数で定義すればできるといえばできますが、上述の通りファイルAは
日々行数が変動するファイルであり、想定を上回る行数になった場合に困るため、適正値の
判断がしにくいです。
それしか手がないならあきらめますが、当方が知らないだけで、ほかに良い方法があるのでは
と期待しております。
不勉強で恐縮ですが、ご教示お願いします。

No.2ベストアンサー
- 回答日時:
redim preserveとすることで、以前の内容が保障されます。
以下のスクリプトを実行してみてください。
redimのサンプルです。
--------------------------------
Option Explicit
Dim stime()
redim preserve stime(0)
stime(0) = "2011/11/18 09:48:25"
redim preserve stime(1)
stime(1) = "2011/11/19 09:48:25"
redim preserve stime(2)
stime(2) = "2011/11/20 09:48:25"
dim st
for each st in stime
WScript.Echo st
next
--------------------------------------
No.3
- 回答日時:
というか、
ファイルAを全て読み込まないと、ファイルBに書き出す行が判断できないのですか?
通常ですとファイルから一行ずつ読み取って、その行が書き出す行であれば書き出し、という処理になると思います。
書き出す行の判断に複数行が必要だとしても、変数をフラグに使用するなどすれば実現できると思います。
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objInput = objFS.OpenTextFile("input.txt", 1, False)
Set objOutput = objFS.CreateTextFile("output.txt")
Do While ObjInput.AtEndOfStream <> True
rem 実際は条件に合う行のみ書き込み実施
objOutput.WriteLine(ObjInput.ReadLine)
Loop
objInput.close
objOutput.close
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) 配列操作について 5 2023/04/18 07:27
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DXFファイルをVBで取り込み、図...
-
ファイルからビット単位での読...
-
C or C++で2次元のデータの並び...
-
ファイルをメモリに出力する方法
-
ファイル入力のデータを構造体...
-
Unicodeのファイル読み込みがう...
-
SDKにて。
-
日本語を配列に収め、そして表...
-
VBAでテキストファイルを複数開...
-
エクセルのプロパティーでセキ...
-
カンマ区切りのCSVファイルから...
-
エクセルvbaでdocuworksprinter...
-
エクセルで複数のコメントのサ...
-
ExcelブックをGoogleスプレッド...
-
ファイルサーバ上のファイルが...
-
【マクロ】フォルダにファイル...
-
実行ファイルのパスを取得したい
-
PDFファイルについて
-
C#の認証設定
-
ExcelのVBAでフォルダ指定がで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バイト型のデータを16進表記で...
-
バイナリファイルの一部分をカ...
-
バイナリファイルでOutOfMemory...
-
DXFファイルをVBで取り込み、図...
-
Cで2次元配列にCSVファイルを...
-
配列操作について
-
日本語を配列に収め、そして表...
-
VBScriptの配列は、要素数を指...
-
テキストファイルを後ろから読...
-
CSVファイルによる検索の高速化
-
グレースケール画像の画素値を得る
-
ファイルをメモリに出力する方法
-
RGBのバイナリデータをCImageに...
-
C++による ファイルの読み込み
-
日本語混じりのファイルをラン...
-
VBAでテキストファイルの改行を...
-
VBでバイナリファイルのコピー...
-
[VBS] 16進数でバイナリファイ...
-
C言語でのファイル読み込み
-
Unicodeのファイル読み込みがう...
おすすめ情報