• 締切済み

VBAでの質問

エクセルVBAにて下記のようなことを行うにはどのようにしたら良いのでしょうか? (1)テキストデータ取り込み (2)取り込んだデータから、あるフレーズ(文字)の後に続く文字を抽出 セルに挿入 (3)その文字から次の同じフレーズまでにある特定のフレーズの後ろに続く数字を取り出し、日付と時刻に分けてセルに挿入 フレーズは 2つあります。start finish (4)間の不要な行の削除して体裁を整える。不要な項目がある為 テスト環境にてPCよりログとして出力されるデータをエクセルで 加工し結果が直ぐに分かるような表をマクロorVBAにて作成したいのです。 出来れば順序良く、ここまでだったらこの方法で、とういう風に教えて いただければ助かります。 宜しくお願いします。

みんなの回答

noname#140971
noname#140971
回答No.2

<c:\temp\siberianhasky.txt> The Siberian Husky is a medium-sized working dog who is quick and light on his feet; free and graceful in action. 今、上述のテキストファイルを読み込んで、'Siberian Husky'という単語が見つかったら抜き出してみましょう。 抜き出すのは、'working dog' と ';' との間。 Private Sub CommandButton1_Click()   Dim I     As Integer   Dim N     As Integer   Dim strTexts() As String   Dim strText  As String      strTexts() = FileReadArray("C:\temp\siberianhusky.txt")   N = UBound(strTexts())   For I = 0 To N     If InStr(1, strTexts(I), "Siberian Husky", vbTextCompare) > 0 Then       strText = Trim(CutStr(CutStr(strTexts(I), "working dog", 2), ";", 1))       Debug.Print strText     End If   Next I End Sub 実行結果を確認してみましょう。 [イミディエイト] who is quick and light on his feet 確かに、目的は達成しています。 さて、マル投げの質問に全てを回答しても意味はないでしょう。 第一、質問と回答がどこまで噛み合っているのかも定かじゃないですからね。 そこで、ヒントだけ。 FileSystemObject を利用してファイルを呼び込んでいるということ。 文字列の切り取りでは Split関数を利用しているということ。 Public Function FileReadArray(ByVal FileName As String) As String()   Dim fso    As FileSystemObject    Dim strTexts() As String       ・・・・ 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 これだけの情報があれば、何とかなるんじゃないかな。 おまけ: [イミディエイト] ? Cutstr("The Siberian Husky is a medium-sized working dog who is quick and light on his feet;", "working dog", 2) who is quick and light on his feet; ? Cutstr("Twho is quick and light on his feet;", ";", 1) Twho is quick and light on his feet Split関数での抜き出しを2回行えば、囲まれている範囲が抜き出せるということです。 strText = Trim(CutStr(CutStr(strTexts(I), "working dog", 2), ";", 1)) は、上述の抜き出しをコード化しただけ。 ここで、「なーるほど、ガッテンだー」と思えば、ゴールは近い! 跳び越すべきハードルは抜き出しだから・・・。 後は、ともかく、自分なりにコードを書いてから・・・。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

データの提示が無いので、データを読み込んで文字列有無と位置をチェックする方法のみになります。 プログラムが組めるなら下記が参考になるでしょう。 テキストデータの読み込み http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110.html InStr関数 http://officetanaka.net/excel/vba/function/InStr.htm

関連するQ&A