こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

テキストファイルからエクセルに転記するマクロ?というものを作成したいと

テキストファイルからエクセルに転記するマクロ?というものを作成したいと思っていますが、何をどうすればよいかぜんぜんわからないでします。
お手数ですが作り方や参考になるHPがあれば教えていただきたいと思います。
ちなみにエクセル2000をつかっています。

<前提条件>
あるフォルダ配下に複数のテキストファイルがあり、各テキストファイルに文字列が書かれています。
それらのファイルをある条件でひとつのエクセルファイルのセルに転記していきます。

すべてのファイルから抽出した文字列をエクセルの1シートに転記していきます。

<テキストファイルの中身のイメージ>
■文字列文字列文字列■□もじ□もじ□■文字列文字列文字列■□文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列□■文字列文字列文字列■□文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列□文字列□文字列文字列文字列文字列文字列文字列文字列文字列□

<テキストファイルからの転記条件>

(1)■と■ではさまれた文字列をA1のセルへ転記
(2)■の次の文字列(□)から次に出てくる■までの文字列(□もじ□もじ□)をB1のセルへ転記
(3)(1)(2)を繰り返し、それぞれA2,3,4・・・のセル、B2,3,4・・のセルに転記。
(4)次の■が見つからない場合、そのファイルの検索を終了し、フォルダ内の次のファイルを取得します。
(5)上記(1)から(4)をすべてのテキストファイルに対して行います。


以上がやりたいことです。
お手数ですがよろしくおねがいいたします。

投稿日時 - 2010-09-04 20:45:55

QNo.6158748

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

【1】
>あるフォルダ配下に複数のテキストファイルがあり
 これは、#1 さんがお書きの「Dir関数のヘルプ」をご覧ください。

MyPath = "D:\hoge\"
MyName = Dir(MyPath & "*.txt")
Do While MyName <> ""
 ▼ここで繰り返し処理
 MyName = Dir
Loop

【2】
>各テキストファイルに文字列が書かれています。
>テキストファイルからエクセルに転記する
 FileSystemObject オブジェクト の ReadAll メソッド でも使ってみましょうか。

Set objFSO = CreateObject("Scripting.FileSystemObject")

としておいて、

With objFSO.OpenTextFile(MyPath & MyName)
 buf = .ReadAll
 ▼ここで、文字列変換
 .Close
End With

【3】
><テキストファイルからの転記条件>

 これは、列区切りを「■」にすれば済みますが、「■A列に入る文字列■□B列に入る文字列□■」という書式ですので、「□■」を行区切りと考えて、一旦分割し、さらに「■」で分割します。

buf = Split(buf, "□■")
For i = 0 To UBound(buf)
myStr = Split(buf(i), "■")
If UBound(myStr) > 0 Then
 With Range("A" & Rows.Count).End(xlUp).Offset(1)
  .Value = myStr(UBound(myStr) - 1)
  .Offset(, 1).Value = myStr(UBound(myStr)) & "□"
 End With
End If
Next i


 以上で、"D:\hoge\" という「フォルダ配下に」ある「複数のテキストファイル」の中の
>(5)上記(1)から(4)をすべてのテキストファイルに対して行います。

 なお、変数の宣言は

Dim objFSO As Object
Dim MyPath As String
Dim MyName As String
Dim buf As Variant
Dim i As Long
Dim myStr As Variant

でいけると存じます。

投稿日時 - 2010-09-06 10:24:32

ANo.2

すぐに使えるエクセルVBAマクロ集
EXCELでお仕事

この2つのサイト、よく使うので参考に。
VBAを使いますからこれが初めてなら基本からみること。

テキストを行単位で読みセルにセットする、
フォルダのファイル名を列挙する
はありますから組み合わせます。

1行の中の文字検知は
文字数分1文字ずつ判定繰り返す、INSTR関数使う、区切り箇所にカンマ入れて2段階、等考えられます。文字列操作の関数をみて下さい。

投稿日時 - 2010-09-06 10:03:25

ANo.1

そのテキストファイルどこでもらってくるんですか。
文字列A1(タブ)文字列B1(改行)
文字列A2(タブ)文字列B2(改行)
文字列A3(タブ)文字列B3(改行)
文字列A4(タブ)文字列B4(改行)
っていう形式なら、エクセルで開いて、形式を変えて保存するだけで、望みの形になります。

ということで、この形式でテキストファイルを作るようにするか、テキストファイルを文字列変換ユーティリティでこの形に変換するかしてからExcelに持ってくるのが早いでしょう。

その他の部分では
(1)1つのテキストファイルを開いて、エクセルで保存し、終了するマクロを作る
(2)それを複数のフォルダに適用するように改造する
のが早いでしょう。

(1)はマクロ記録で作れるでしょう。
(2)はDir関数を使います。Dir関数のヘルプを見てください。

投稿日時 - 2010-09-04 21:24:38

あなたにオススメの質問