Excel VBA質問箱 IV

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

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


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

【52955】テキストファイルの読み込み ryo 07/12/10(月) 14:57 質問[未読]
【52963】Re:テキストファイルの読み込み じゅんじゅん 07/12/10(月) 15:57 発言[未読]
【52965】Re:テキストファイルの読み込み ryo 07/12/10(月) 16:27 質問[未読]
【52968】Re:テキストファイルの読み込み じゅんじゅん 07/12/10(月) 16:58 発言[未読]
【52972】Re:テキストファイルの読み込み ryo 07/12/10(月) 17:38 質問[未読]
【52975】Re:テキストファイルの読み込み じゅんじゅん 07/12/10(月) 18:49 発言[未読]
【52977】Re:テキストファイルの読み込み ryo 07/12/10(月) 19:10 質問[未読]
【52979】Re:テキストファイルの読み込み じゅんじゅん 07/12/10(月) 20:11 発言[未読]
【52980】Re:テキストファイルの読み込み ryo 07/12/10(月) 20:40 お礼[未読]
【52981】Re:テキストファイルの読み込み ryo 07/12/10(月) 21:01 質問[未読]
【52982】Re:テキストファイルの読み込み じゅんじゅん 07/12/10(月) 21:10 発言[未読]
【52983】Re:テキストファイルの読み込み ryo 07/12/10(月) 21:15 質問[未読]
【52984】Re:テキストファイルの読み込み かみちゃん 07/12/10(月) 21:17 発言[未読]
【52985】Re:テキストファイルの読み込み ryo 07/12/10(月) 21:23 質問[未読]
【52986】Re:テキストファイルの読み込み かみちゃん 07/12/10(月) 21:27 発言[未読]
【52987】Re:テキストファイルの読み込み じゅんじゅん 07/12/10(月) 21:33 発言[未読]
【52989】Re:テキストファイルの読み込み じゅんじゅん 07/12/10(月) 21:44 発言[未読]
【52991】Re:テキストファイルの読み込み かみちゃん 07/12/10(月) 21:47 発言[未読]
【52992】Re:テキストファイルの読み込み じゅんじゅん 07/12/10(月) 21:53 発言[未読]
【52988】Re:テキストファイルの読み込み ryo 07/12/10(月) 21:34 質問[未読]
【52990】Re:テキストファイルの読み込み かみちゃん 07/12/10(月) 21:44 発言[未読]
【52993】Re:テキストファイルの読み込み ryo 07/12/10(月) 21:59 お礼[未読]
【52994】Re:テキストファイルの読み込み かみちゃん 07/12/10(月) 22:04 発言[未読]

【52955】テキストファイルの読み込み
質問  ryo  - 07/12/10(月) 14:57 -

引用なし
パスワード
   開いているSheetにテキストファイル(全部)を読み込ませたいのですが
どうしたらよいでしょうか?

【52963】Re:テキストファイルの読み込み
発言  じゅんじゅん  - 07/12/10(月) 15:57 -

引用なし
パスワード
   ▼ryo さん:
>開いているSheetにテキストファイル(全部)を読み込ませたいのですが
>どうしたらよいでしょうか?

参考URL
http://www.officetanaka.net/excel/vba/file/file08.htm

ただし、行数が多くて1シートに入りきらないというのであれば、
対応策が必要かな。(詳しくないんですいません)

【52965】Re:テキストファイルの読み込み
質問  ryo  - 07/12/10(月) 16:27 -

引用なし
パスワード
   >参考URL
>http://www.officetanaka.net/excel/vba/file/file08.htm
>
じゅんじゅんさん昨日に引き続きアドバイスありがとうございます。

Dim n As Long, buf As Variant, tmp As String
  n = FreeFile
  Open "D:\Test.txt" For Input As #n
    Line Input #n, tmp          
  Close #n
  buf = Split(tmp, ",")          
  Worksheets("Sheet1").Range("A1:D5") = buf


データが5行ある場合はどうしたらよいのでしょうか
教えて下さい。

【52968】Re:テキストファイルの読み込み
発言  じゅんじゅん  - 07/12/10(月) 16:58 -

引用なし
パスワード
   ▼ryo さん:
>>参考URL
>>http://www.officetanaka.net/excel/vba/file/file08.htm

>データが5行ある場合はどうしたらよいのでしょうか
>教えて下さい。

【52914】テキストファイルに保存 
の逆パターンって事でしょうか?

テキストファイルに1列に入っているものを、全てC列に取り込むなら、
(全てが5行なら5行取り込まれるハズ。)

Sub try()
  Dim n As Long
  Dim i As Long
  Dim v
  n = FreeFile
  Open "D:\Test.txt" For Input As #n
  Do Until EOF(n)
    Input #n, v
    i = i + 1
    Range("C" & i).Value = v
  Loop
  Close #n
End Sub
で、いいのかな?(初めて書いたので自信なし)

【52972】Re:テキストファイルの読み込み
質問  ryo  - 07/12/10(月) 17:38 -

引用なし
パスワード
   ▼じゅんじゅん さんありがとうございました。
説明不足でした。

<テキストデータ>
123,345,あいう
あいう,123、456
123,あいう,456

   ↓

  A   b   C
1 123  345  あいう
2 あいう 123  456
3 123  あいう 456

このようにしたいのですが。
教えていただけないでしょうか。

【52975】Re:テキストファイルの読み込み
発言  じゅんじゅん  - 07/12/10(月) 18:49 -

引用なし
パスワード
   ▼ryo さん:
>▼じゅんじゅん さんありがとうございました。
>説明不足でした。
>
><テキストデータ>
>123,345,あいう
>あいう,123、456
>123,あいう,456
>
>   ↓
>
>  A   b   C
>1 123  345  あいう
>2 あいう 123  456
>3 123  あいう 456
>
>このようにしたいのですが。
>教えていただけないでしょうか。

Sub try2()
  Dim n As Long
  Dim i As Long
  Dim v, vv
  n = FreeFile
  Open "D:\Test.txt" For Input As #n
  Do Until EOF(n)
    Line Input #n, v
    i = i + 1
    vv = Split(v, ",")
    Range("A" & i).Resize(1, UBound(vv) + 1).Value = vv
  Loop
  Close #n
End Sub
で、いいのかな?(初めて書いたので自信なし2)

【52977】Re:テキストファイルの読み込み
質問  ryo  - 07/12/10(月) 19:10 -

引用なし
パスワード
   ▼じゅんじゅん さん:
ありがとうございました。
きちんとできました。

もうひとつ。
数字が文字列として保存されてしまいます。
数字にするにはどのようにしたら良いでしょうか?

【52979】Re:テキストファイルの読み込み
発言  じゅんじゅん  - 07/12/10(月) 20:11 -

引用なし
パスワード
   ▼ryo さん:
>▼じゅんじゅん さん:
>ありがとうございました。
>きちんとできました。
>
>もうひとつ。
>数字が文字列として保存されてしまいます。
>数字にするにはどのようにしたら良いでしょうか?

Sub try3()
  Dim n As Long
  Dim i As Long
  Dim v, vv
  n = FreeFile
  Open "D:\Test.txt" For Input As #n
  Do Until EOF(n)
    Line Input #n, v
    i = i + 1
    vv = Split(v, ",")
    With Range("A" & i).Resize(1, UBound(vv) + 1)
       .Value = vv
       .Value = .Value
    End With
  Loop
  Close #n
End Sub
こんな感じでしょうか?

【52980】Re:テキストファイルの読み込み
お礼  ryo  - 07/12/10(月) 20:40 -

引用なし
パスワード
   ▼じゅんじゅん さん:
ありがとうございました。
きちんとできました。

また宜しくお願いします。

【52981】Re:テキストファイルの読み込み
質問  ryo  - 07/12/10(月) 21:01 -

引用なし
パスワード
   >▼じゅんじゅん さん:
すみません。
アプリケーション定義またはオブジェクト定義のエラーがでてしまいました。

【52982】Re:テキストファイルの読み込み
発言  じゅんじゅん  - 07/12/10(月) 21:10 -

引用なし
パスワード
   ▼ryo さん:
>>▼じゅんじゅん さん:
>すみません。
>アプリケーション定義またはオブジェクト定義のエラーがでてしまいました。

どこででしょうか?
エラーの場所も提示して頂かないと。

【52983】Re:テキストファイルの読み込み
質問  ryo  - 07/12/10(月) 21:15 -

引用なし
パスワード
   ▼じゅんじゅん さん:

>どこででしょうか?
>エラーの場所も提示して頂かないと。

実行時エラー1004です

【52984】Re:テキストファイルの読み込み
発言  かみちゃん  - 07/12/10(月) 21:17 -

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

横から失礼します。

>>どこででしょうか?
>>エラーの場所も提示して頂かないと。
>
>実行時エラー1004です

それは、エラーの番号であって、場所(コード)ではありません。
With Range("A" & i).Resize(1, UBound(vv) + 1)
で出るのではないでしょうか?

気になるのは、
入力のテキストファイルが65536行を超えていませんか?

【52985】Re:テキストファイルの読み込み
質問  ryo  - 07/12/10(月) 21:23 -

引用なし
パスワード
   ▼かみちゃん さん:

エラーが出ているところは
With Range("A" & i).Resize(1, UBound(vv) + 1)  です。
  
入力のテキストファイルは今の所10行です。

【52986】Re:テキストファイルの読み込み
発言  かみちゃん  - 07/12/10(月) 21:27 -

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

>エラーが出ているところは
>With Range("A" & i).Resize(1, UBound(vv) + 1)  です。
>  
>入力のテキストファイルは今の所10行です。

あと、テキストファイルの","の数が256より多いとか・・・
テストデータを提示していただいたほうがいいかと思います。

あと、投稿時に半角カタカナは使わないようにしましょう。
機種依存文字になり、機種によっては、文字化けをします。

【52987】Re:テキストファイルの読み込み
発言  じゅんじゅん  - 07/12/10(月) 21:33 -

引用なし
パスワード
   >>エラーが出ているところは
>>With Range("A" & i).Resize(1, UBound(vv) + 1)  です。
>>  
>>入力のテキストファイルは今の所10行です。

テキストファイルにデータのない行を間に作ってテストすると、
同じ場所で同じエラーは出ましたね。
(でも、書き込む際にそう言う事が起こりえるのかは未体験なのですが。)

【52988】Re:テキストファイルの読み込み
質問  ryo  - 07/12/10(月) 21:34 -

引用なし
パスワード
   ▼かみちゃん さん:
いろいろアドバイスありがとうございます。
ためしのテキストデータは

1,2
30,40
50,80
90,1
2,30
4,112
3,123
aiu,555
1a2c,あいう
888,777

です。

【52989】Re:テキストファイルの読み込み
発言  じゅんじゅん  - 07/12/10(月) 21:44 -

引用なし
パスワード
   ▼じゅんじゅん さん:
>>>エラーが出ているところは
>>>With Range("A" & i).Resize(1, UBound(vv) + 1)  です。
>>>  
>>>入力のテキストファイルは今の所10行です。
>
>テキストファイルにデータのない行を間に作ってテストすると、
>同じ場所で同じエラーは出ましたね。
>(でも、書き込む際にそう言う事が起こりえるのかは未体験なのですが。)

改行しかない行が存在する事でエラーが起きてるのなら、

Sub try4()
  Dim n As Long
  Dim i As Long
  Dim v, vv
  n = FreeFile
  Open "D:\Test.txt" For Input As #n
  Do Until EOF(n)
    Line Input #n, v
    If v <> "" Then
      i = i + 1
      vv = Split(v, ",")
      With Range("A" & i).Resize(1, UBound(vv) + 1)
        .Value = vv
        .Value = .Value
      End With
    End If
  Loop
  Close #n
End Sub
こんなのとか?

【52990】Re:テキストファイルの読み込み
発言  かみちゃん  - 07/12/10(月) 21:44 -

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

>ためしのテキストデータは

提示されたテキストデータではうまく動きますが、
52987のじゅんじゅんさんのコメントにありますとおり

> テキストファイルにデータのない行

がある場合、提示のエラーになります。
この場合
UBound(vv)
が-1となり、Resize(1, -1 + 1) つまり、Resize(1, 0) となるため
エラーになります。

要するに、
UBound(vv)
が0以上の値の場合だけ処理するようなコードにする必要があると思います。

そこで、
    If UBound(vv) >= 0 Then '★
     With Range("A" & i).Resize(1, UBound(vv) + 1)
       .Value = vv
       .Value = .Value
     End With
    End If '★

と★の行を追加すれば回避処理されると思います。

【52991】Re:テキストファイルの読み込み
発言  かみちゃん  - 07/12/10(月) 21:47 -

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

>>>>エラーが出ているところは
>>>>With Range("A" & i).Resize(1, UBound(vv) + 1)  です。
>>>>  
>>>>入力のテキストファイルは今の所10行です。
>>
>>テキストファイルにデータのない行を間に作ってテストすると、
>>同じ場所で同じエラーは出ましたね。
>>(でも、書き込む際にそう言う事が起こりえるのかは未体験なのですが。)
>
>改行しかない行が存在する事でエラーが起きてるのなら、

52990 で書きましたが、
Resize(1, UBound(vv) + 1)
において、
UBound(vv) + 1
が0より大きくなるようにしないといけません。

つまり、
UBound(vv)
が0以上の場合という分岐処理をすればいいと思います。

改行だけある行は、
UBound(vv)
は、-1になります。

i = i + 1
は、どこに入れるかは、改行だけの行を詰めるか詰めないかで書く位置が変わると
思います。

【52992】Re:テキストファイルの読み込み
発言  じゅんじゅん  - 07/12/10(月) 21:53 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>52990 で書きましたが、
>Resize(1, UBound(vv) + 1)
>において、
>UBound(vv) + 1
>が0より大きくなるようにしないといけません。
>
>つまり、
>UBound(vv)
>が0以上の場合という分岐処理をすればいいと思います。
>
>改行だけある行は、
>UBound(vv)
>は、-1になります。
>
> i = i + 1
>は、どこに入れるかは、改行だけの行を詰めるか詰めないかで書く位置が変わると
>思います。

かみちゃんさん、参考にさせて頂いてます。

そうですね、私はデータのない行は”セルに書き込まない”を目的に変更しました。
かみちゃんさんの方法も大変参考になりました。ありがとうございます。

【52993】Re:テキストファイルの読み込み
お礼  ryo  - 07/12/10(月) 21:59 -

引用なし
パスワード
   ▼かみちゃん さん:
わかりやすい説明ありがとうございます。
解決できました。
ありがとうございました。

じゅんじゅんさん
ありがとうございました。

【52994】Re:テキストファイルの読み込み
発言  かみちゃん  - 07/12/10(月) 22:04 -

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

▼ryo さん

>>開いているSheetにテキストファイル(全部)を読み込ませたいのですが
>>どうしたらよいでしょうか?
>
>参考URL
>http://www.officetanaka.net/excel/vba/file/file08.htm

これ、
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=52914;id=excel
で紹介しましたよね?
紹介したものは、すみからすみまできちんと参考にされたほうがいいかと思います。
私がURLを提示するときは、「他にも参考になりそうなところがあるから困っ
たときは見てね」という思いが含まれています。
サンプルコードなどキーワードがわかれば、ヘルプで調べることができます。
ヘルプに使用例も載っています。
また、ここの掲示板には過去ログを検索することができます。
キーワードを入れれば、よく似たスレッドを検索することができので、そのスレ
ッドの解決方法を試すことができます。

今回のも、すぐ聞くのではなく、まずは試して調べることをしてもよかったので
はないでしょうか?
参考にしてわからないならば、参考にしたコードは提示して、わからないところ
を質問するようにしませんか?

質問して、コメントをする者と一問一答するのではなく、
試したコード、使ったデータ、期待している結果は、きちんと最初から書くよう
にしましょう。
エラーが出るならば、エラーメッセージとエラーとなっているコード(メッセー
ジが出たときに表示されるデバッグボタンをクリックすると、原因となっている
コードが黄色反転するはずです)を提示しましょう。

そうすることにより、割と簡単に短いスレッドで終わるかもしれません。
今回のようなチャット状態の質疑応答だとずっと張り付いていないといけませんから。

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