• ベストアンサー

複数のファイルからの文字列の抜き出し方について教えて下さい。

VBAとC言語の基本的なことは分かりますが、VBAは昔少しだけやっただけでほとんど分かりません。 100個くらいあるHtmlファイルから指定した行に書かれている文字列をコピーしてそのHtmlファイルの名前を自動で書き換えてくれるプログラムを作りたいのですが、どのようにすれば良いのでしょうか? 100個も同時にファイルを開くと非常に重くなると思うので、順番に文字列を抽出するようなものの方が良いと思うのですが、 何から始めて良いのか分かりません。 VBの基本書を頭から順番に読むというのはいま時間がないので、基本的な手順だけ教えて頂けないでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.1

D:\Temp\Test.txt 1111 2222 3333 4444 こういうファイルから任意の行を読み込んでみます。 [イミディエイト] ? FileReadOptional("D:\Temp\Test.txt", 1, 1) 1111 ? FileReadOptional("D:\Temp\Test.txt", 2, 3) 2222 3333 ? FileReadOptional("D:\Temp\Test.txt", 4, 6) 4444 ? FileReadOptional("D:\Temp\Test.txt", 1, 1) & FileReadOptional("D:\Temp\Test.txt", 2, 2) 1111 2222 一応、任意の行を読み込んでいます。 また、合成も出来ています。 Public Function FileReadOptional(ByVal FileName As String, _                  ByVal S As Integer, _                  ByVal E As Integer) As String   Dim StopNow As Boolean   Dim I    As Integer   Dim strText As String   Dim strTexts As String      Do     I = I + 1     strText = FileRead(FileName)     If I >= S And strText <> "" Then       strTexts = strTexts & strText & vbCrLf     End If     StopNow = CBool((I = E) Or (strText = ""))   Loop Until StopNow   FileRead "", True   FileReadOptional = strTexts End Function FileReadOptional関数はFileRead関数を利用しています。 Public Function FileRead(ByVal FileName As String, Optional isStop As Boolean = False) As String On Error GoTo Err_FileRead   Static isOpen As Boolean   Static fso  As Object   Static fil  As Object   Static txs  As Object      If Not isOpen Then     isOpen = True     Set fso = CreateObject("Scripting.FIleSystemObject")     Set fil = fso.GetFile(FileName)     Set txs = fil.OpenAsTextStream(1, -2)   End If   FileRead = txs.ReadLine Exit_FileRead:   If Len(FileRead) = 0 Or isStop Then     isOpen = False     Set txs = Nothing     Set fil = Nothing     Set fso = Nothing   End If   Exit Function Err_FileRead:   Resume Exit_FileRead End Function 後は、GetFileList()の類があればと思います。

MASSYY
質問者

お礼

ありがとうございます。 まだ完全には理解出来ていないのですが、 ・[イミディエイト]という何なのでしょうか? ・その下に「?」とありますが、これはタイポでしょうか? ・それとVBと特徴としてGUIを自分で作ることがあると思いますが、 これはどうすれば良いのでしょうか? もう少し調べてみます。よろしくお願い致します。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

エクセル、アクセス、VBのコードエディターに付属しているウインドウ。 その中に、直接に関数をテストできるイミディエイトというものがあります。 ですから、そこで実際にFileReadOptional関数の働きをテストしている訳です。 10 INPUT a, b 20 LET c = a * b 30 PRINT c 10 INPUT a, b 20 LET c = a * b 30 ? c ?=PRINT つまりは、「FilereadOptional関数の戻り値を印字(表示)せよ!」ということ。 GUIの件は、テキストベースではないという意味ではもはや・・・。 ですから、ちょっと回答は控えます。

MASSYY
質問者

お礼

ありがとうございます。 教えて下さった内容を理解しようと本やネットで調べているのですが、 なかなか思うように進みません。 出来れば、いまやろうとしていることに関して詳しく書かれている書籍を教えて頂けないでしょうか? 図書館で調べてみても、本当に初歩的な本か、ネットワークとかサーバーとかものすごいハイレベルかのどちらかで、 見たい内容の本が見あたらないのですが・・・ よろしくお願い致します。

専門家に質問してみよう