「WindowsXP」/「Office2003Professional」を使用しています。
一つのフォルダに格納された複数のテキストファイルから、指定した文字列を含んだ行だけをExcelに抽出し、一覧表にする方法を教えて下さい。
各テキストファイルの抽出したい部分は以下のようになっています。(一部抜粋)
------------------
+製造元 *NEC
+型番 *ABC-000
+メモリMAX *512GB
+スロット数 *2
+DIMM1 *256 MB *333MHz
+DIMM2 *256 MB *333MHz
------------------
文字の先頭に[+]がついているものが検索文字列で、[*]が抜き出したいデータ部分です。
(実際のテキストでは[+]や[*]は書いてありません。)
これをExcelで検索文字列を項目名に指定し、[*]部分を抜き出し全テキストファイルを一覧表にしたいと思っています。(行列反転した表)
------------------
A B C D E F G
1 ファイル名 製造元 型番 メモリMAX スロット数 DIMM1 DIMM2 …
2 aaa.txt NEC ABC-000 512MB 2 256MB 256MB
3 bbb.txt FUJITU FMV10 1024MB 2 512MB
・
・
------------------
●テキストファイルの検索文字列とデータの間には半角スペースが入っています。
●テキストファイルの検索文字列の行位置はファイルごとに異なります。
●テキストファイルの検索文字列の中にはファイルによっては存在しない文字列もあります。
●ExcelのA列にはフォルダ内のファイル名が予め全て入力されています。
もしもVBAを使用しなければならない場合は、VBAの知識が無い為、勝手を申しますが詳しくご教示頂けると幸いです。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
1、[Sheet1]タグを右クリックし[コードの表示(V)]をクリック。
2、メニューバーも[ツール(T)]-[参照設定(R)]をクリック。
3、Microsoft scripting runtime にレ点を付けて[OK]ボタンをクリック。
これで、コンパイルエラーは回避できます。
質問者は、単なる関数ユーザーです。
A1=DataRead("C:\Temp\test1.txt", "製造元")
と書けりゃー十分ですよ。
この回答への補足
御礼と補足が前後して申し訳ありません。
どうやらテキストファイルの中身の空白の数が行によってランダムになっている為、うまく行かないようなのですが…
これを解決する方法はありますか?
厚かましくも思いますが宜しくお願い申し上げます。
No.3
- 回答日時:
横槍ごめんなさい。
あれっ! その後どうなったのでしょう? 気になったので・・・
未だのときは、こんな感じでテストされてみては如何でしょうか。
1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.コードウィンドウに Husky2007さん 提示のコードをコピーして貼り付けます。
4.メニューから[ツール]--->[参照設定]で、「参照可能なライブラリファイル」の中から
「Microsoft Scripting Runtime」を探し、チェックを付け[OK]します。
5.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
6.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
「中」にして[OK]します。
これでVBAの設定は完了。
次にシートのセルB2に =DataRead("C:\DATA\"&$A2,B$1) の計算式を設定します。
(上の式で C:\DATA\ の部分は、実際のテキストファイルのパスを指定)
これをG列迄右にコピーし、更にそれをA列の最終データまで下へコピーします。
あと、DIMM1と2のクロックを拾ってくるかどうか。 もしかして変更必要かも。
この回答への補足
有難い横槍感謝しておりますm(u_u*)m
ご配慮頂いたお陰で何とかテストは成功しました。
>=DataRead("C:\DATA\"&$A2,B$1) の計算式を設定します。
>あと、DIMM1と2のクロックを拾ってくるかどうか。 もしかして変更必要かも。
教示頂いた式で試し、後ほど結果をご報告致します。
その後の報告です。
実際のパスで式を作りましたが…何故か空白が返ってきてしまいます(つДT)
項目名(検索文字列)が実際には英語である事は関係ありますか?
本当は「System,Vendor」「System,Model」となっているのですが、前回同じ内容で投稿した際、
「英語で書くと回答者にわかり難い」とご指摘頂いたので、回答もつかなかった為、変更して投稿したのですが…。
仕事なので諦める訳にはいかない為、色々試してみます。
No.1
- 回答日時:
VBA 初心者ならば、その手続きをコードで記述することが苦手でしょう。
ならば、非手続き的に関数一発で読み込む環境を整えるしかないでしょう。
<Test1.txt>
製造元 NEC
型番 ABC-000
これを、非手続き的に関数一発で読み込むテストをしてみましょう。
[イミディエイト]
? DataRead("C:\Temp\test1.txt", "製造元")
NEC
? DataRead("C:\Temp\test1.txt", "型番")
ABC-000
この際、実行速度とかは無視し、簡便さのみを追求するとこのようでしょう。
次の2つの関数を標準モジュールに追加すれば、このように関数一発で読み込めます。
A1=DataRead("C:\Temp\test1.txt", "製造元")
でA1には’NEC’と表示されます。
これで、VBAと無関係にデータを呼び込むことも可能かと思います。
Public Function DataRead(ByVal FileName As String, ByVal KeyWord As String) As String
On Error GoTo Err_DataRead
Dim isFound As Integer
Dim fso As FileSystemObject
Dim fil As File
Dim txs As TextStream
Dim strData As String
Set fso = New FileSystemObject
Set fil = fso.GetFile(FileName)
Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)
Do
strData = txs.ReadLine
If InStr(1, strData, KeyWord, vbTextCompare) > 0 Then
isFound = 2
Exit Do
End If
Loop Until 0
Exit_DataRead:
Set txs = Nothing
Set fil = Nothing
Set fso = Nothing
DataRead = CutStr(strData & "", " ", isFound)
Exit Function
Err_DataRead:
Resume Exit_DataRead
End Function
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
※Microsoft scripting runtime を参照させて下さい。
※もしくは、ダイレクトに参照させるコードに修正。
ご回答有難うございます。
意味が解らないなりにやってみたのですがやはり出来ません(T_T)
テストの段階でコンパイルエラーと表示され既に躓きました。
やはり私には無理なのでしょうか......
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
テキストファイルの一部分を抽出する方法について
Visual Basic(VBA)
-
【VBA】テキストファイルを指定行数からの読み込み
Visual Basic(VBA)
-
[エクセル VBA]テキストファイルから特定の行のみを抜き出したい 下記のようなテキストファイルから
Excel(エクセル)
-
-
4
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
5
複数のテキストファイルをエクセルに一括で取り込みたい
Excel(エクセル)
-
6
【VBA ・ エクセル】 テキストファイルから特定情報をぬきだすには
Visual Basic(VBA)
-
7
複数のtxtの特定部分を抽出し、一つのxlsファイルにまとめたいです。
Excel(エクセル)
-
8
【VBA】複数のtxtファイルから特定区間の複数行を呼び出し、エクセルにまとめたい。
Visual Basic(VBA)
-
9
テキストファイルから特定の文字列が入った行を取得したいです。 例えば下記のような文が記載されたテキス
Visual Basic(VBA)
-
10
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
11
ExcelVBA テキストファイルから特定行を抽出し、エクセルファイルのテキストボックスに張り付ける
その他(コンピューター・テクノロジー)
-
12
txtファイルから特定の文字列が書かれた行だけを取得や削除するソフト
フリーソフト
-
13
Excel VBAでフォルダ内の全テキストファイルの任意データを取得について
Visual Basic(VBA)
-
14
ある文字列を含む行の抽出
Excel(エクセル)
-
15
ReadLineでの読み出し行を指定する
Visual Basic(VBA)
-
16
同一フォルダにある複数のテキストファイル(メモ帳)を一括でエクセルに取り込みたいです。
Visual Basic(VBA)
-
17
エクセルでファイルを開かずに文字を検索し、行を抽出したい
Excel(エクセル)
-
18
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
19
csvファイルを開かずに文字を検索し行を抽出したい
Visual Basic(VBA)
-
20
マクロを使ってフォルダー内にあるtxtデータをエクセルにデータに変換する方法をご教授願います
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel関数-文字列で自動作成さ...
-
エクセルの関数について教えて...
-
Excelデータをコピペして、ペー...
-
職場の人から聞かれており、こ...
-
ユーザー定義関数をアドイン登...
-
Excelで50個のセルに同じ文字を...
-
スプレッドシート、Excelでの数...
-
Microsoft Officeの中古は信用...
-
エクセルで不等号記号(≠)が上に...
-
スプレッドシートで使う数式を...
-
エクセルでの特別な文字を上に...
-
エクセル日付 文字列の関数がエ...
-
A列とB列を参照してC列に連番を...
-
エクセルVBA、別ブックへ転記す...
-
各ページの1番上の表示について
-
エクセルでセルに標準で入力さ...
-
EXCELの質問です 119から足した...
-
pdfの表をexcelにはりつけて計...
-
Excelのif関数で文字が見えなく...
-
【マクロ】アクティブセルにブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報