2017-09-07 9 views
1

TXTファイルのキーワードを検索し、キーワードが見つかった行をExcelセルに書きたいとします。Excel - TXTファイルのキーワードを検索し、キーワードがExcelセルにある行を書き込む

私は動作するVBAコードを持っていますが、それはキーワード+私が余分に与える文字を書くだけです。 キーワードの後ろにいくつの文字があるかをexaclyで知る必要があります。

私の質問に誰かが

私は必要があります。..ので、行の最後に...それは完全なラインを書くことができますコードで私を助けることができます:

  • 機能開いているファイル
  • 簡単にキーワード
  • 簡単に追加キーワードは

感謝を置かれた場所のセルを追加!!


Private Sub CommandButton1_Click() 

Dim myFile As String 
Dim text As String 
Dim textLine As String 

Dim S_Name As Integer 

myFile = Application.GetOpenFilename() 

Open myFile For Input As #1 

Do Until EOF(1) 
    Line Input #1, textLine 
    text = text & textLine 
Loop 

Close #1 

S_Name = InStr(text, "keyword1") 

Range("A10").Value = Mid(textLine, S_Name + 0, 30) 

'save sheet to txt file 
ActiveWorkbook.SaveAs Filename:="c:" & "keyword_file " + Format(Now(), "YYYYMMDD") _ 
& ".txt", FileFormat:=xlTextWindows 

End Sub 
+0

あなたの 'text'は' vbNewLine'を含んでいますか? –

+0

こんにちは、メーディ..良い質問..どうすればいい? – Luudski

+0

実際、 'vbNewLine'を含む' text'はあなたの解決策に影響します。 'vbNewLine'が含まれていなければ、Domenicの答えは正しいです。それが解決すれば、解決策は異なります。あなたは、あなたの前提に基づいて、または 'テキストがどこから来るのかに基づいてそれを知る必要があります。 –

答えて

1

キーワードのラインをテストし、それぞれの行をループし、唯一の基準を満たしているあなたの変数textラインを割り当て、その後、すぐにループを終了...

Open myFile For Input As #1 

text = "" 
Do Until EOF(1) 
    Line Input #1, textLine 
    If InStr(1, textLine, "keyword1") > 0 Then 
     text = textLine 
     Exit Do 
    End If 
Loop 

Close #1 

Range("A10").Value = text 

ラインフィード(chr(10)またはvbLf)はラインの終わりをマークするために使用される場合、ファイルシステムオブジェクトを代わりに使用することができ...

' 
' 
' 

Dim oFSO As Object 
Dim oTS As Object 

Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set oTS = oFSO.OpenTextFile(myFile) 

text = "" 
Do Until oTS.AtEndOfStream 
    textLine = oTS.ReadLine 
    If InStr(1, textLine, "keyword1") > 0 Then 
     text = textLine 
     Exit Do 
    End If 
Loop 

oTS.Close 

Range("A10").Value = text 

'etc 
' 
' 

Set oFSO = Nothing 
Set oTS = Nothing 
+0

こんにちはDomenic、あなたの返信のおかげで..あなたのコードはまだセルA10のcomleteファイルを入力します。私はキーワードが見つかった場所の完全な行をセルA10に入力したいと思います。 – Luudski

+0

私の編集した記事を参照してください。 – Domenic

+0

ドミニク、あなたのコードは動作しませんでしたが、その間に他のスクリプトが動作しています...ありがとうございました。 次の行 場合=ミッド(ライン、テスト、レン(ライン)) エンド見つけ スプリット(テキスト、vbLf) テスト= InStr関数(ライン、検索) の各行ごと テスト> 0なら、 FindValue = found End Function – Luudski

関連する問題