Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11327 / 13644 ツリー ←次へ | 前へ→

【16694】テキストファイルのDATAをエクセルに取得させたい ゆうゆう 04/8/6(金) 12:02 質問[未読]
【16696】Re:テキストファイルのDATAをエクセルに取... Jaka 04/8/6(金) 12:39 回答[未読]
【16700】Re:テキストファイルのDATAをエクセルに取... BOTTA 04/8/6(金) 13:31 回答[未読]
【16702】Re:テキストファイルのDATAをエクセルに取... ゆうゆう 04/8/6(金) 14:19 質問[未読]
【16703】Re:テキストファイルのDATAをエクセルに取... BOTTA 04/8/6(金) 14:40 回答[未読]
【16705】Re:テキストファイルのDATAをエクセルに取... Jaka 04/8/6(金) 16:50 発言[未読]
【16707】消し忘れました。 Jaka 04/8/6(金) 16:54 発言[未読]
【16708】Re:さらに Jaka 04/8/6(金) 16:57 回答[未読]
【16709】Re:さらに ゆうゆう 04/8/6(金) 17:11 質問[未読]
【16710】Re:さらに かみちゃん 04/8/6(金) 17:18 回答[未読]
【16714】Re:さらに ゆうゆう 04/8/6(金) 17:41 質問[未読]
【16717】Re:指定されたフォルダ内のすべてのファイ... かみちゃん 04/8/6(金) 18:03 回答[未読]
【16706】Re:テキストファイルのDATAをエクセルに取... ゆうゆう 04/8/6(金) 16:50 質問[未読]
【16711】Re:テキストファイルのDATAをエクセルに取... かみちゃん 04/8/6(金) 17:24 発言[未読]
【16713】Re:テキストファイルのDATAをエクセルに取... BOTTA 04/8/6(金) 17:36 回答[未読]
【16715】Re:テキストファイルのDATAをエクセルに取... Jaka 04/8/6(金) 17:46 お礼[未読]
【16716】無事解決いたしました! ゆうゆう 04/8/6(金) 17:47 お礼[未読]

【16694】テキストファイルのDATAをエクセルに取得...
質問  ゆうゆう  - 04/8/6(金) 12:02 -

引用なし
パスワード
   はじめまして。
マクロは、「マクロの記録」をちょこちょこ
いじるくらいしかできない初心者です。
同じ作業を延々と繰り返しているので、
マクロでできないものかと思い、ご相談させて下さい。

中身の形式が同じテキストファイルが大量にあります。
このテキストファイルの一定の場所にあるデータを、エクセルに取得したいのですが。
(データは10桁程度の数値です。)

●もとのテキストファイル TXT1、TXT2 、TXT3・・・・
TXT1(←ファイル名)
1行目)AAAA
2行目)BBBB
3行目)CCCC
4行目)DDDD

TXT2
1行目)EEEE
2行目)FFFF
3行目)GGGG
4行目)HHHH

以下同様

●エクセルに上記データを取得して(ファイル名も)、
1ファイル1行に整理したいのです。
ファイル名 1行目  2行目  3行目  4行目
 TXT1  AAAA  BBBB  CCCC DDDD
 TXT2  EEEE  FFFF  GGGG HHHH

マクロでできるものなのでしょうか?
お手数とは思いますが、教えてください。
よろしくお願いします。

【16696】Re:テキストファイルのDATAをエクセルに...
回答  Jaka  - 04/8/6(金) 12:39 -

引用なし
パスワード
   こんにちは。
書き込む位置とか足りない部分は、付け足したりして改良してください。

Dim TBL() As Variant, FMN As String,CC as Long
FNM = " 開きたいテキストフルパス"
Open FMN For Input As #1
CC = 1
ReDim Preserve TBL(1 To CC)
TBL(CC) = Dir(FMN)
Do Until EOF(1)
  CC = CC + 1
  ReDim Preserve TBL(1 To CC)
  Input #1, TBL(CC)
Loop
Close #1
Range("A1").Resize(, CC).Value = TBL
Erase TBL

【16700】Re:テキストファイルのDATAをエクセルに...
回答  BOTTA  - 04/8/6(金) 13:31 -

引用なし
パスワード
   ゆうゆうさん、こんにちは。
Jakaさん、おひさです。

久しぶりに参加させて頂きます。
FileSystemObjectを使ってみました。

Sub aaa()
  Dim fName As String
  Dim fsoText As Object
  Dim i As Integer, j As Integer
  Dim lstFNo As Long, lstLine As Long
  lstFNo = 3 'ファイルの数
  lstLine = 4 '取得する行数
  For i = 1 To lstFNo
    'Bookと同じフォルダにTextファイルがあるとして
    fName = ThisWorkbook.Path & "\TXT" & i & ".txt"
    If Dir(fName) = "" Then Exit Sub 'ファイルが無い場合は終了
    Set fsoText = CreateObject("Scripting.FileSystemObject").OpenTextFile(fName, 1)
    Cells(i, 1).Value = Dir(fName) '1列目にファイル名
    For j = 2 To lstLine + 1
      Cells(i, j).Value = fsoText.ReadLine
    Next
    fsoText.Close
  Next
  Set fsoText = Nothing
End Sub

【16702】Re:テキストファイルのDATAをエクセルに...
質問  ゆうゆう  - 04/8/6(金) 14:19 -

引用なし
パスワード
   Jakaさん。BOTTAさん。早速の回答ありがとうございます。
理解が足りず、エラーが出てしまいました。。。。
初歩的な質問で申し訳ないのですが、
教えて頂けないでしょうか?

BOTTAさんに教えていただいたマクロを
実行してみたのですが、何も起きません。
エクセルファイルと、テキストファイルは同じフォルダに入っています。
教えて頂いたマクロは、Sheet1のマクロの所に保存しました。
ここで大丈夫でしょうか?

Jakaさんに教えて頂いた
FNM = " 開きたいテキストフルパス"
に、
FNM = "C:\Documents and Settings\Owner\My Documents\新しいフォルダ\TXT1.txt"
と入れたところ、
パス名が無効ですとのエラーが出てしまいました。
書き方が間違っているのでしょうか?

何度もお手数をお掛けして申し訳ないのですが、
教えていただけないでしょうか?
よろしくお願いします。

【16703】Re:テキストファイルのDATAをエクセルに...
回答  BOTTA  - 04/8/6(金) 14:40 -

引用なし
パスワード
   ゆうゆうさん、こんにちは。
>BOTTAさんに教えていただいたマクロを
>実行してみたのですが、何も起きません。
>エクセルファイルと、テキストファイルは同じフォルダに入っています。
>教えて頂いたマクロは、Sheet1のマクロの所に保存しました。
>ここで大丈夫でしょうか?

標準モジュール(通常は「Module1」)に入れてください。
ファイル名は"TXT1.txt","TXT2.txt"・・・であるという前提です。
そのファイル名のファイルが存在しない場合は、何も実行されません。

>Jakaさんに教えて頂いた
>FNM = " 開きたいテキストフルパス"
>に、
>FNM = "C:\Documents and Settings\Owner\My Documents\新しいフォルダ\TXT1.txt"
>と入れたところ、
>パス名が無効ですとのエラーが出てしまいました。
>書き方が間違っているのでしょうか?
"C:\Documents and Settings\Owner\My Documents\新しいフォルダ"
↑のようなパスが無い場合はTextファイルのある場所に直さなければ。

【16705】Re:テキストファイルのDATAをエクセルに...
発言  Jaka  - 04/8/6(金) 16:50 -

引用なし
パスワード
   BOTTAさん こんにちは。

これで、ファイル名が合っているのか確認してみるのもいいかも...。
TXT1.txt〜TXT4.txtだけ選んでみてください。

Sub djfhk()
fg = FNM = "C:\Documents and Settings\Owner\My Documents\新しいフォルダ\TXT1.txt"
FMN = Application.GetOpenFilename("Excelファイル (*.txt), *.txt")
If FMN = "False" Then
  End
End If
Select Case Dir(FMN)
Case "TXT1.txt", "TXT2.txt", "TXT3.txt", "TXT3.txt"
   MsgBox "同じです。"
Case Else
   MsgBox "違います。"
End Select
End Sub

ここ1週間、右肋骨下辺りがチクチクするので、胆石にビクついてます。

【16706】Re:テキストファイルのDATAをエクセルに...
質問  ゆうゆう  - 04/8/6(金) 16:50 -

引用なし
パスワード
   BOTTA さん。丁寧に教えて下さり
ありがとうございます。

>標準モジュール(通常は「Module1」)に入れてください。
>ファイル名は"TXT1.txt","TXT2.txt"・・・であるという前提です。
>そのファイル名のファイルが存在しない場合は、何も実行されません。

直したところうまくいきました!!

テキストファイルのファイル名を任意の文字列に
変更したいのですが、どのようにすればよいでしょうか?

fName = ThisWorkbook.Path & "\TXT" & i & ".txt"

の部分を直すのかな?と思い、
Dim ii as String
fName = ThisWorkbook.Path & ii & ".txt"
など、試してみたのですが、動いてくれません。
何度も申し訳ないのですが、
テキストファイルを任意の文字列でも
エクセルへ取り込めるようにするにはどうすれば良いでしょうか?
教えてください。
よろしくお願いします。

【16707】消し忘れました。
発言  Jaka  - 04/8/6(金) 16:54 -

引用なし
パスワード
   ↓ いらないです。

>fg = FNM = "C:\Documents and Settings\Owner\My Documents\新しいフォルダ\TXT1.txt"

【16708】Re:さらに
回答  Jaka  - 04/8/6(金) 16:57 -

引用なし
パスワード
   Dim FNM As String
を入れてね。

【16709】Re:さらに
質問  ゆうゆう  - 04/8/6(金) 17:11 -

引用なし
パスワード
   Jaka さん。ありがとうございます。
「同じです」と表示されました!

でも、
FNM = "C\Documents and Settings\Owner\My Documents\新しいフォルダ"
と、フォルダ名までに直してみましたが、

Open FMN For Input As #1
のところで黄色くなり止ってしまいます。

お体大丈夫ですか?
無理なさらないで下さいね。
何度も申し訳ありません。
もし、よろければ教えて下さい。。。。

【16710】Re:さらに
回答  かみちゃん  - 04/8/6(金) 17:18 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>FNM = "C\Documents and Settings\Owner\My Documents\新しいフォルダ"
>と、フォルダ名までに直してみましたが、
>
>Open FMN For Input As #1

Openは、変数FMNで指定されたファイルを開きますが、
変数FMNはフォルダ名なのではないでしょうか?

>のところで黄色くなり止ってしまいます。

エラーメッセージはどのようなものでしょうか?
(想像はできますが・・・)

【16711】Re:テキストファイルのDATAをエクセルに...
発言  かみちゃん  - 04/8/6(金) 17:24 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>テキストファイルのファイル名を任意の文字列に
>変更したいのですが、どのようにすればよいでしょうか?
>
>fName = ThisWorkbook.Path & "\TXT" & i & ".txt"
>
>の部分を直すのかな?と思い、
>Dim ii as String
>fName = ThisWorkbook.Path & ii & ".txt"
>など、試してみたのですが、動いてくれません。

「動いてくれない」というのは、そのまま終了するということでしょうか?
iiを任意の文字列とし、iをファイルの通番とするということでいいのでしょうか?

Dim ii as String
ii="任意の文字列"
fName = ThisWorkbook.Path & ii & & i ".txt"
としなければ、いけないのでは?

>テキストファイルを任意の文字列でも
>エクセルへ取り込めるようにするにはどうすれば良いでしょうか?

それとも、もしかして、txtの拡張子であるファイルはすべて取り込むということでしょうか?

【16713】Re:テキストファイルのDATAをエクセルに...
回答  BOTTA  - 04/8/6(金) 17:36 -

引用なし
パスワード
   ゆうゆうさん、皆さん、こんにちは。

>txtの拡張子であるファイルはすべて取り込む
ということにしてみました。

Sub aaa02()
  Dim fName As String, fPath As String
  Dim fsoText As Object
  Dim i As Integer, j As Integer
  Dim lstLine As Long
  lstLine = 4 '取得する行数
  fPath = ThisWorkbook.Path & "\"
  fName = Dir(fPath & "*.txt")
  i = 1
  Do While fName <> ""
    Set fsoText = CreateObject("Scripting.FileSystemObject").OpenTextFile(fPath & fName, 1)
    Cells(i, 1).Value = fName '1列目にファイル名
    For j = 2 To lstLine + 1
      Cells(i, j).Value = fsoText.ReadLine
    Next
    fsoText.Close
    fName = Dir
    i = i + 1
  Loop
  Set fsoText = Nothing
End Sub

>ここ1週間、右肋骨下辺りがチクチクするので、胆石にビクついてます。
Jakaさん、お大事に。(^・^)・・・でも、もう帰ったかな??

【16714】Re:さらに
質問  ゆうゆう  - 04/8/6(金) 17:41 -

引用なし
パスワード
   かみちゃん さん。ありがとうございます。
>こんにちは。かみちゃん です。

>Openは、変数FMNで指定されたファイルを開きますが、
>変数FMNはフォルダ名なのではないでしょうか?

フォルダ名にしています。
ファイルは複数あるので、特定できないので。。。
そこが間違っているのでしょうか?


>エラーメッセージはどのようなものでしょうか?
>(想像はできますが・・・)

「パス名が無効です」というエラーが出てしまいます。

やらなくてはいけない事に実力が追いつかず、
皆様にご迷惑をお掛けしてしまって申し訳ないです。
教えていただけるとうれしいです
よろしくお願いします。

【16715】Re:テキストファイルのDATAをエクセルに...
お礼  Jaka  - 04/8/6(金) 17:46 -

引用なし
パスワード
   >>ここ1週間、右肋骨下辺りがチクチクするので、胆石にビクついてます。
>Jakaさん、お大事に。(^・^)・・・でも、もう帰ったかな??

ぎりぎりセーフ。
ありがとうございます。

>お体大丈夫ですか?
>無理なさらないで下さいね。

ありがとうございます。
回答ではなく、ゆうゆうさん ごめんなさい。

【16716】無事解決いたしました!
お礼  ゆうゆう  - 04/8/6(金) 17:47 -

引用なし
パスワード
   BOTTA さん、かみちゃんさん、Jakaさん。
何度もありがとうございます。

>>txtの拡張子であるファイルはすべて取り込む
>ということにしてみました。

まさにその通りです!!
つたない説明でめんなさい。
そして、無事解決できました!!
本当にありがとうございます。
一日つきあわせてしまtてごめんなさい。
本当に助かりました。

【16717】Re:指定されたフォルダ内のすべてのファ...
回答  かみちゃん  - 04/8/6(金) 18:03 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>Openは、変数FMNで指定されたファイルを開きますが、
>>変数FMNはフォルダ名なのではないでしょうか?
>
>フォルダ名にしています。
>ファイルは複数あるので、特定できないので。。。
>そこが間違っているのでしょうか?

はい、そこです。ファイルを開く文で、フォルダ名を指定しています。
だから、「パス名が無効です」となります。厳密には、「指定されたファイルがありません」のような感じです。

>やらなくてはいけない事に実力が追いつかず、

そこで、すでに解決済みのようですが、
指定されたフォルダ内の拡張子txtのすべてのファイルを処理するコードを私も書いてみたので、参考になれば幸いです。

Option Explicit

Sub Macro1()
 Dim RowNo As Long, ColumnNo As Integer
 Dim FileName As String
 Dim PathName As String
 Dim MyString As String
 
 '対象とするフォルダ名(このブックと同一フォルダの場合)
 PathName = ThisWorkbook.Path
 '対象とするフォルダ名(指定フォルダの場合)
 'PathName = "C:\My Documents"
 '対象とするファイル名
 FileName = Dir(PathName & "\" & "*.txt")
 
 RowNo = 2
 '指定されたフォルダ内の拡張子txtのすべてのファイルを処理する。
 Do Until FileName = ""
  Open PathName & FileName For Input As #1
  '---開いたファイルの処理
  ColumnNo = 0
  Do Until EOF(1)
   ColumnNo = ColumnNo + 1
   Input #1, MyString
   Cells(RowNo, ColumnNo).Value = MyString
  Loop
  RowNo = RowNo + 1
  Close #1
  '---開いたファイルの処理の終了
  FileName = Dir()
 Loop
End Sub

11327 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free