• 締切済み

テキストファイルからの任意データの抜き出し

テキストファイルから下記のデータを取り出したいです。 どうすればいいでしょうか?(エクセルのVBAでできますか?) (やりたいこと) ・行の先頭から始まる000*******の数字を取り出す。 (******は任意の数字。注意点:00000*****には続けて、アルファベットや漢字が続く。また他の箇所にも数字があるが、行の先頭から始まるものだけをとりだしたい。) ・任意の文字列のあとの数字を取り出したい。 (注意点:数字の桁数はさまざまである。) 下記にイメージのテキストファイルとそれをもとにやりたいことを記載します。 だれかご教授ください。 お願いします。 (イメージ) ABC 00005674 あいうえお 0000012345ABCDEF かきくけこ さしすせと 213223434 いろは98989898 ABC 00005675 あいうえお 0000012346ABCDEF かきくけこ さしすせと 213223434 いろは34343434 ABC 00005676 あいうえお 0000012347ABCDEF かきくけこ さしすせと 213223434 いろは1212 (次のように取り出したい。) 0000012345   98989898 0000012346   34343434 0000012347    1212   

  • lasm
  • お礼率11% (1/9)

みんなの回答

noname#140971
noname#140971
回答No.5

全て対応できます。

noname#140971
noname#140971
回答No.4

補足: ? "0000" & Trim(Str(Val(CutStr("ABC 00005674 あいうえお", "0000", 2)))) 00005674 こんな手も・・・。

lasm
質問者

補足

回答ありがとうございます。 (イメージ)で下記の部分に関してですが、 ”ABCDEF かきくけこ さしすせと 213223434” この部分も実は、固定の文字列、数字ではなく、いろんな文字列、数字がならびます。 このような状況でも、上記関数で対応できるのでしょうか? (理解してなくてすみません。) ”いろは”は常に固定です。 説明不足で申し訳ありせんでしたが、 下記のようなイメージもありうるということです。 (すみません。) (イメージ) ABC 00005674 あいうえお 0000012345NFFDEF かきくけこ さしすせと 213223434 いろは98989898 ABC 00005675 あいうえお 0000012346ABFGHJ かきくけこ さしすせと 3334 いろは34343434 ABC 00005676 あいうえお 0000012347ASADEF かきまみあかさた あいう 2132 いろは1212

回答No.3

ABC 00005674 あいうえお 0000012345ABCDEF かきくけこ さしすせと 213223434 いろは98989898 1行の中で 区切りが何ヶ所かありますが 全角スペースでしょうか 半角スペースでしょうか タブですか TXTは固定の場所の固定の名前のファイルなのでしょうか ファイルはたくさんあるのでしょうか 1ファイルの中に行数はたくさんあるのでしょうか 良ければ教えてください

lasm
質問者

補足

ご回答ありがとうございます。 >全角スペースでしょうか 半角スペースでしょうか タブですか 全角スペースです。 >TXTは固定の場所の固定の名前のファイルなのでしょうか PDFファイルからテキストをコピーしてtxtファイルに張り付けたものですので、ファイル名は任意の名前で任意の場所です。 >ファイルはたくさんあるのでしょうか ファイルは1ファイルです。 >1ファイルの中に行数はたくさんあるのでしょうか はい。 行数は100行ほどです。

noname#140971
noname#140971
回答No.2

[イミディエイト] ? CutStr(CutStr("ABC 00005674 あいうえお", "ABC", 2), " ", 2) 00005674 ? Format(Val(CutStr("ABC 00005674 あいうえお", "ABC", 2)),"00000000") 00005674 ? CutStr("いろは98989898", "いろは", 2) 98989898 ? CutStr("いろは34343434", "いろは", 2) 34343434 Excel 2003 のイミディエイトウインドウでの抜き出しテストです。 次の CutStr関数一つでも工夫しだいでは・・・。 <標準モジュール> Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function

lasm
質問者

補足

ありがとうございます。 基本的なことがわかってないのですが、、 これらの内容をエクセルのどの画面に入力すればいいのでしょうか?

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>テキストファイルから下記のデータを取り出したいです。 >どうすればいいでしょうか?(エクセルのVBAでできますか?) 簡単なのは、秀丸のような正規表現をサポートするエディタで要らない部分をスペースに置換する

関連するQ&A

  • perlでのcsv形式のテキストファイルの変換

    perlを使用してcsv形式のテキストファイルを下記のように変換したいと思っています。 【変換前】 10, abc , def , ghi ,jkl    ----1行目 10, abc , def , aaa, bbb   ----2行目 10, abc , def , ccc , ddd  ----3行目 11, abc , def , eee , fff   ----4行目 11, abc , def , aaa , ggg ----5行目 11, zzz , def , aaa , ggg  ----6行目 12, abc , def , aaa ,ggg ----7行目 12, zzz , def, aaa , ggg   ----8行目 【変換後】 10, abc , def , ghi ,jkl    ----1行目 11, abc , def , eee , fff   ----4行目 11, zzz , def , aaa , ggg  ----6行目 12, abc , def , aaa ,ggg ----7行目 12, zzz , def, aaa , ggg   ----8行目 変換内容はcsv形式のテキストファイルで、”,”で区切った先頭3列が 前の行の先頭3列と同じならその行は出力しない、といった 変換をしたいと思っております。 (例えば2行目ですと先頭3列は10, abc ,defになっており、  1行目の先頭3列と同じ文字列になっているためこの行は出力しない) 当方、Perl初心者で上記のようなことがPerlでできるかも よくわかっておりません。 そこで、上記のような変換はPerlで可能なのか、そしてもし可能であるのなら どのようにPerlで記述すればできるのか教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • テキストファイルの任意の行への読み書き

    VisualC++6.0でMFCのプログラムを組んでいるのですが、 ファイルの操作で分からないことがあるので教えてください。 数行にわたってデータの書き込んであるテキストファイルがある場合、 任意の行に新たに文字を書き込んだり、任意の行のデータを読み込んだりすることは可能ですか?? fprintf,fscanfを用いて1行目から順に読み込んだり、1行目に書き込んだりという処理はできたのですが、 任意の行への読み書きができずに困っています。 初歩的な質問だとは思いますが、よろしくおねがいします。

  • テキストファイルからエクセルへ

    テキストファイルをエクセルにおこした時 20406005034711412004061509545250000459023 と云う数字が 2.04060050347114E+40 となってしまいます。 桁数が多い為だと思うのですが、これを41桁で表示するにはどうすべきでしょうか? また、65,536 以上の行、または 256 以上の列を含むファイルであるため 一度に保存することができません。このような場合は分割して保存する他 方法は無いのでしょうか?

  • バッチファイルを使ってテキストファイルの任意の行を削除したい

    こんにちは。 バッチファイルを使って、テキストファイルの任意の行を削除したいのですが、可能でしょうか? 今困っているのは、あるファイルの1行目と2行目と最後の行を削除したいのですが、コマンドがわかりません。 いろいろ調べてみたのですが、わかりませんでした。 よろしくお願いします。

  • テキスト操作

    できるかどうか曖昧なのでこの場で質問させていただきます。 VBからテキストに書き込みを行う処理なんですが、 まず 111111 と先頭行に書かれたテキストファイルがあります。 これから新たに先頭行に"2222222"を追加します。 (ここからVBの処理で) 222222 111111 また先頭行に"333333"を追加します。 ここで"11111111"を削除します。 333333 222222 つまりテキストファイルが3行以上に達すると下から削除していく動きです。(ところてん式に押し出すイメージですね) こうゆう動きってVBで可能でしょうか? 僕が調べた限りでは不可能な気がします。 もし、代替案があればご指導いただきたいと思ってます。

  • テキストファイルを1行ずつ別のファイルに分割する

    400行ぐらいのテキストファイルを、1行ずつ別のファイルに分割したいと思います。 ファイル名は**001.txtのように、(**は任意の文字列、数字は連番)なってくれれば嬉しいです。 どなたかこのような処理のできる簡単な方法をご存じないでしょうか? よろしくお願いします。

  • Excel VBAでの固定長のテキストファイル読み込み

    こんにちは。 会社にてEXCELをちょろっとかじっていると言う理由から、あまり触ったことのないVBAを使って固定長のテキストファイルを読み込むプログラムを作るように言われてしまって困っています。 利用している固定長のテキストファイル中の各行の桁数は同一でなく、行によってまちまち。しかし、各行の始めの3ケタはヘッダになっています。 例) ABCTTTTTTTTTTTTTTTTKKKKKOOOOOOPPPPPPPPWWWWWWWWWWWWWWWWWWWWWWWSS XYZLLLLL <ABCとXYZがヘッダ。同じ文字が固定長で決まったあるデータ項目と考えて下さい> もちろん、1ファイルにはもっとたくさんの行がずらずら並んでおります。 中身自体は、ある伝票の内容なのですが、1ファイル中には複数の伝票内容(ヘッダABC~XYZで1伝票)が記されております。 なので、ヘッダで言うとABC,DEF,GHI...XYZとなってまたABC~が続く。 しかも、ある伝票では途中存在しないヘッダがあったり、同じヘッダが何回も繰り返されたりするものもあります。 (ABC,DEF,DEF,DEF,GHI..やABC,GHI,JKL..など) これをどうやってEXCELの各セルに貼り付けるかがどう頑張っても分かりません。どうすればよいのでしょうか?

  • テキストファイルから文字列の表示

    あるテキストファイルを読み込んで、OPEN_"*.*"(_は空白、空白の長さは固定されていない/*はワイルドカード)という形の文字列から *.* だけをテキストボックスに表示させたいのですが、どなたか教えてください。当方、初心者で全然わからずに困っています。 例.ABC.txtの中身 OPEN "BLGCOMON.DAT" AS #1 LEN=32 FIELD #1,1 AS BLG1$,8 AS BLG2$,1 AS BLG3$,20 AS BLGDUM$,2 AS BLGDEV$ OPEN  "ABCDEF.TXT" AS #1 LEN=32 GET #1,1 LSET BLG1$="1" LSET BLG2$="WSKMMKY " MID$(BLGDUM$,1,6)=MID$((STR$(WKRC)),2) MID$(BLGDUM$,7,6)=ISAMDAT$ LSET BLGDUM$ = BLGDUM$   OPEN QWER$ PUT #1,1 CLOSE #1 このテキストファイル(ABC.txt)の場合、1行目の「OPEN "BLGCOMON.DAT"」と3行目の「OPEN  "ABCDEF.TXT"」が質問の文字列に当てはまります。テキストボックスには「BLGCOMON.DAT ABCDEF.TXT」のみが表示されるようにしたいです。

  • VB.NET テキストファイルにデータを書き込み

    テキストファイル("c:\test.txt")に「かきくけこ」と全角5文字で1行のデータがあるとします。 このテキストファイルに「あいうえお」を先頭に追加で書き込みたいのですが、どうすればいいのでしょうか? あくまで「かきくけこ」を変数化せずファイルに直接、書き込む方法がある場合、教えてください。 'テキストファイルを開いたときの内容 あいうえお かきくけこ ちなみにですが、テキストファイル("c:\test.txt")に「かきくけこ」と全角5文字で1行のデータがあるとして、 末尾に「さしすせそ」を追加で書込みする方法は下記の通りでした。 'ファイルを書き込み用に開く、指定したファイルがない場合は作成する dim fsFile As System.IO.FileStream = _ System.IO.File.OpenWrite("c:\test.txt") 'StreamWriterオブジェクトを作成し、テキストデータが書き込めるようにする Dim sw As System.IO.StreamWriter = _ New System.IO.StreamWriter(fsFile) 'ファイルの末尾に移動する sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) 'データを書き込む sw.WriteLine("さしすせそ") 'ファイルを更新する sw.Flush() 'ファイルを閉じる sw.Close() fsFile.Close() 'テキストファイルを開いたときの内容 かきくけこ さしすせそ

  • perlで、後ろの行を読んで、前の行に書き込むには?

    perl初心者です。 後ろの行を読んで、戻って、指定の行に、書き込む方法が、よくわかりません。 下記のようなファイルを読み込んで ---------------------------- アルファベット= 1A 2B 3C アルファベット= 1A 2B アルファベット= 1A 2B 3C 4D 5E 6F ------------------------------ 下記のように、「アルファベット=」にアルファベットを入れるには、どうしたらいいでしょうか? ------------------------------ アルファベット=ABC 1A 2B 3C アルファベット=AB 1A 2B アルファベット=ABCDEF 1A 2B 3C 4D 5E 6F -------------------------------- よろしくお願い致します。