• ベストアンサー

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

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
質問者

お礼

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

関連するQ&A

  • 複数行の文字列を変数として使う方法

    Excel2010 VBAを使っています。 ファイルAに AAA BBBB CCCCC DD ・・・ というように50行程度に渡って文字列が書かれています。 この文字列をファイルB(これも同じく文字列が書かれています)と合体させるプログラムを作っています。 このプログラムをほかのPCでも使用したいのですが、 xlsmファイルとともにファイルAも同時にコピーする必要があり不便です。 ファイルAの内容を標準モジュールの中に保存したいのですが どのようにすれば良いでしょうか? dim a(50) a(0) = "AAA" a(1) = "BBBB" a(2) = "CCCCC" a(3) = "DD" ・・・ というように配列として保存しておけば、これができるのですが、 いちいち、ダブルクオテーションマークでくくって 上記のようなコードを書くのが面倒です。 例えば、 a = "AAA BBBB CCCCC DD ・・・" のように複数行に渡る文字列を変数として用いたいのですが このようなことは可能でしょうか?

  • C言語でファイルからの文字列抽出について

    C言語でファイルからの文字列抽出について INPUTファイルからキーワードを探し、キーワードがあった行をOUTPUTファイルに出力したいのですが、どうしたら良いかわかりません。 //一行ずつ読み込む while(fgets(buf,sizeof(buf),fp)!=NULL){ //文字列からキーワードを探す //キーワードがある一行をOUTPUTファイルに出力 } こんな感じになると思うのですが、どういうコードを書いたら良いかわかりません。 分かる方いらっしゃいましたらご回答宜しくお願いします。

  • 指定した文字列を含む行から、指定した文字列を

    含む行まで、全ての行を抽出して別ファイル(名前は元ファイルと同じ)としたいのです。 対象ファイルに結果を上書きでもかまいません。 指定したフォルダの中にある複数のフォルダ各々に1つずつ入っているテキストファイルが対象になります。 例) 東京都 新宿区 <start123AAA> 東京都 港区 <end>AAABBB 東京都 目黒区 どのファイルにも必ず<start と<end の文字列があります。(必ず1組です) <start の文字列を含む行から <end の文字列を含む行までを 抽出したいのです。 (欲しい結果↓) <start123AAA> 東京都 港区 <end>AAABBB フリーのエディタソフトのgrep、grepのマクロ、バッチでできないものかと試してみているのですが どうしてもうまくいきません。 抽出したい範囲、削除する範囲には禁則文字?が入っているのでバッチは難しいのでしょうか? できればバッチで処理できればなと思っているのですが、うまくいきません。 (<>!""/ あたりが入っています。別の文字に置き換えることは可能です) 範囲を抽出ではなく、 <startを含む行の一つ上の行から前を全て削除 <endを含む行の一つしたの行から後を全て削除 する方法や VBAで、スタート行をとエンド行をSearchして抽出する方法など ご教授いただきたくお願い致します。

  • txtファイルから読み取った文字列の処理について

    お世話になります。 終わる文字列を表す「EOS」は、VBでどうやって処理しますか? ファイルの内容: 。 記号-句点 EOS EOS   記号-空白 新 接頭詞-名詞接続 VBプログラムで一行一行を読み取って、 配列へ格納することで、 EOSの行にどうやって処理するでしょうか 以上、宜しくお願いいたします。

  • 文字列の検索

    プログラムをいじる時に必要な文字列を検索出来るようなものはないでしょうか? 例えばHTMLファイルをノートパットに入れて、その文書をコピーして「HTTP」と書いてある文字列のみを表示させる。 って言うような都合が良いフリーソフトを探しております。 どなたか知らないでしょうか?

  • 文字列検索 複数のテキストファイル

    最近趣味でC言語を始めたのですが、 大本のリストを含んだテキストファイルに含まれる文字列 【テキストの中身】 osaka nagoya tokyo 上のリストを行ごとに読み込んで もう一つのファイルから検索して該当する文字列を含む行以外を削除するようにしたいのですが何か良い方法はないでしょうか? 色々調べながらやってはいるもののまだまだ勉強不足なせいかわからず困っております。よろしければご教授お願いします。

  • 複数の文字列を含むファイルの検索-linux

    linuxにおいてファイル内の文字列を検索するのにgrepを用いますが、 複数の文字列を含むファイルを検索するにはどうしたらよいでしょうか。 同じ行ではなく別の行にある場合で、ファイル名を出力したいです。 つまり ~~~~~~~~~ ~~~~~~~~文字列1  ~~~~~~~~~~ ~~~~~~~~ ~~~~~~~文字列2 のような記述のあるファイルを探すにはどうしたらよいでしょうか。

  • 複数の文字列を同時に置換できるソフト

    こんにちは。 複数の文字列を一括で置換できるソフトで、 以下の条件に合ったソフトを探しております。 (1)HTMLファイルが読み込める。 (2)複数の文字列を同時に一括置換できる(複数行を対象に)。 (↑あらかじめ置換したいリストを作成・登録する形に なるのかもしれません。) (3)さらに複数のファイルで同時に置換できる。 上記の(1)、(2)は必須になります。 可能であれば、(3)ができれば大変助かります。 ・・以上のようなフリーソフトはありますでしょうか? ご回答よろしくお願い致します。

  • VBA/FIND関数を使っての先頭文字列の検索方法

    エクセルVBAにてFIND関数を使って、 文字列検索⇒コピー&ペーストのマクロを作成しているのですが、 どうしても、先頭文字列から検索をする方法がわかりません。 たとえば、 あいうえお いうえおあ おあいうえ えおあいう という文字列から「あいう*」を検索したい場合、 1行目だけを抽出したいのですが、 1,3,4行目が抽出されてしまいます。 find関数では先頭文字からの検索はできないのでしょうか? もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか? アドバイス、よろしくお願いいたします。

  • ファイルから文字列を読み込んで、検索するプログラム

    以下のようなプログラムをつくりたいのですが、 どうしたらよいでしょうか?? 文字列を配列型に入れるときにわからなくなって しまうのですが。。。 ファイルからデータを順番に読み込み,メモリ上に一次元配列構造に並べて線形探索するプログラムを作成せよ. データの仕様 一行に、 「番号(スペース)読み仮名(スペース)文字列(住所)」 があり、これが10~1000行ほど、ファイルに(.dat) 入っている。 ファイルを配列に読み込んだあと、 番号を入力すると、住所が検索されてでてくる。 問題文も微妙なのですが、 これは番号の配列と住所の配列は別にして、 検索したほうがいいですよね、、? 何かヒントになることだけでも良いので、 よろしくお願いします!

専門家に質問してみよう