advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 14729 for VBA�������������� (0.003 sec.)
[[20080404142253]]
#score: 3408
@digest: 742c73c0480828aab6af228c1a1b3cad
@id: 37120
@mdate: 2008-04-19T00:40:53Z
@size: 7357
@type: text/plain
#keywords: maxcol (20033), 00000 (15717), 0020105 (15497), 0045793 (15497), 0088261 (15497), 00040 (14010), 更te (13533), 00023 (12932), 者) (11289), 00000000 (8910), ラ- (6046), 00001 (5787), opentextfile (5286), 要変 (4577), 000000 (4374), readall (3939), テキ (3788), キス (3502), ubound (2583), ー10 (2312), vbcrlf (2092), 時エ (2062), トデ (2040), 区切 (1893), トb (1828), 行時 (1788), ファ (1743), filesystemobject (1691), split (1689), temp (1654), seiya (1511), 初心 (1394)
『テキストデータから特定のデータのみを読み込む』(VBA初心者)
下記のようなタブで区切られたテキストデータがあり、 @テキストファイルを選択。 AD・E・F列の3行目以降のデータを読み込む ということは出来ないでしょうか? どなたかご教授願います。 A B C D E F 1 0061111 000 000000 00000 00000 00000 2 0065575 000 000000 00000 00000 00000 3 0020105 000 000433 00040 00023 00001 4 0045793 000 001120 00001 00153 00002 5 0088261 000 032333 00005 01111 00089 ---- 全部読み取って、1:2行目/A:C列を削除 でもよさそうな... Sub test() Dim a(), n As Long, fn As String, txt As String, x, y, maxCol As Integer fn = "c:¥test.txt" '<- 要変更 temp = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll x = Split(temp, vbCrLf) ReDim a(1 To UBound(x) + 1, 1 To Columns.Count) For i = 2 To UBound(x) y = Split(x(i),vbTab) If UBound(y) > 2 Then n = n + 1 For ii = 3 To UBound(y) a(n, ii - 2) = y(ii) Next maxCol = Application.Max(maxCol, UBound(y) + 1) End If Next ThisWorkbook.Sheets(1).Range("a1").Resize(n,maxCol).Value = a End Sub (seiya) ---- 私のエクセルは、97ですので、多少操作が異なるかもしれませんが、 ファイル、開く、ファイル指定、開くボタンクリック、取り込み開始行指定、次へ、次へとして、 各列のデータ形式で文字列をONにして、OKとするのですが、なにか不具合があるのでしょうか?(6UP) ---- (seiya)さんありがとうございました。 試してみたら、"実行時エラー9"とでてしまいます。 なぜなのでしょうか? それと、できれば解説もお願いします。 (VBA初心者) ---- 変更箇所は正しく変更されていますか? 実行時エラー9 (Subscript Out Of Range) ? 括弧の中の文字列が見当たらない、というようなことです。 (seiya) ---- (6UP)さんに追加、 不要な列は削除してやれば、簡単かと思います。 これで意味が解ります?(データ形式を指定する時) BJ ---- c:¥test.txt←これをかえるんですね。 そのままにしてました。 かえたら今度は実行時エラー1004とでました・・・ (6UP)さんとBJさんへ 手作業で取り込めばいいのではないかというご意見でしょうか? (VBA初心者) ---- そのように回答差し上げています。 (6UP) ---- > かえたら今度は実行時エラー1004とでました・・・ どの行でエラーが出ますか? 手作業で読み込んで、マクロの記録をしたほうがよいと思いますが? (seiya) ---- ThisWorkbook.Sheets(1).Range("a1").Resize(n,maxCol).Value = a でエラ-が出ます。 (VBA初心者) ---- マクロの自動記録で試してみようと思います。 (VBA初心者) ---- > ThisWorkbook.Sheets(1).Range("a1").Resize(n,maxCol).Value = a > でエラ-が出ます。 ということは、nが0だということでしょう。 Tab 区切りのテキストファイルですか? そおでなければ y = Split(x(i),vbTab) の vbTab の部分を変更する必要があります。 (seiya) ---- スペースで区切られたファイルでした。 なので、 y = Split(x(i),Chr(32)) に直してやってみたらできました。 このマクロに関してなんですが、 今回はテキストAのスペースで区切られた6つの項目のデータを取り込みました。 このテキストAと同じようにスペースで区切られた6つの項目があるテキストBのデータを 取り込むことはできますか? [テキストA] A B C D E F 1 0061111 000 000000 00000 00000 00000 2 0065575 000 000000 00000 00000 00000 3 0020105 000 000433 00040 00023 00001 4 0045793 000 001120 00001 00153 00002 5 0088261 000 032333 00005 01111 00089 [テキストB] A B C D E F 1 477 XXX 000 00000 00000 00000 2 477 HDX 000 00000 00000 00000 3 477 HDX 433 00040 00023 00001 4 477 XXX 120 00001 00153 00002 5 488 GBX 333 00005 01111 00089 (VBA初心者) ---- fn を テキストBのファイル名に変更して試しましたか? (seiya) ---- いくつかのファイルでファイル名を変えて試してみましたが、 できるものとできないものがあります。 できなかったテキストデータは以下のような内容で、 スペースで区切られていることも確認しました。 何が原因なんでしょうか? 0065C561 ??? 00000000 00000000 00000000 00000000 0065C575 ??? 00000001 000001FE 00000265 000001E8 (VBA初心者) ---- どのようにできなかったのでしょう? その辺を詳しく説明してもらわないと、こちらにはさっぱりわかりません。 (seiya) ---- "実行時エラー1004" ThisWorkbook.Sheets(1).Range("a1").Resize(n,maxCol).Value = a でエラ-が出ました。 (VBA初心者) ---- 行数・列数・区切り文字等がどのようになったものですか? 3行目/4列目から読み始めるので 3行に満たない、または4列以上無いファイルではそのままでは読み込めませんよ? (seiya) ---- 行数:32行 列数:6列 区切り文字:スペース(←コードを確認しました。) です。 試しに新しいテキストブックにエラーとなったテキストの内容をコピペしたら エクセルに読み込むことができました。 こんなことってあるんですか? (VBA初心者) ---- > 試しに新しいテキストブックに... ^^^^^^^^^^^^^ 私にはわかりません。 (seiya) ---- エラーとなるファイルをEmEditorで開いて名前をつけて保存としたとき、 ファイルの種類、エンコードの選択のほかに改行方法というのがありました。 もとは" LFのみ(UNIX)"となっていて、これを"CR+LF(Windows)"にして保存したテキストファイルの読み込みはできました。 これは解決策のヒントになるでしょうか? この問題についてはとりあえず、おいといて・・・ ファイル指定について ファイルを指定していましたが、 これをどのファイルでも選択できるようにできないかと・・・ http://officetanaka.net/excel/vba/file/file02.htmを参考にして 自分でこんな感じに作ってみました。 Sub test1() Dim a(), n As Long, fn As String, txt As String, x, y, maxCol As Integer fn = Application.GetOpenFilename("テキストファイル,*.txt") If OpenFileName <> "False" Then temp = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll x = Split(temp, vbCrLf) ReDim a(1 To UBound(x) + 1, 1 To Columns.Count) For i = 2 To UBound(x) y = Split(x(i), Chr(32)) If UBound(y) > 2 Then n = n + 1 For ii = 3 To UBound(y) a(n, ii - 2) = y(ii) Next maxCol = Application.Max(maxCol, UBound(y) + 1) End If Next ThisWorkbook.Sheets(1).Range("a1").Resize(n, maxCol).Value = a End If End Sub やりたいはできていますが、これでいいの?と思っています。 (VBA初心者) ---- それでしたら Chr(9) または chr(160) とかで試してみてください。 (seiya) ---- Chr(9) と chr(160)で試してみましたが、できませんでした。 (VBA初心者) ---- これで試してください。 Sub test() Dim a(), n As Long, fn As String, txt As String, x, y, maxCol As Integer fn = "c:¥test.txt" '<- 要変更 temp = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll With CreateObject("VBScript.RegExp") .Pattern = "[¥f¥n¥r¥v]" .Global = True txt = .replace(txt, vbCrLf) .Pattern = "¥n{2,}" txt = .replace(txt, vbCrLf) End With x = Split(temp, vbCrLf) ReDim a(1 To UBound(x) + 1, 1 To Columns.Count) For i = 2 To UBound(x) y = Split(x(i),vbTab) If UBound(y) > 2 Then n = n + 1 For ii = 3 To UBound(y) a(n, ii - 2) = y(ii) Next maxCol = Application.Max(maxCol, UBound(y) + 1) End If Next ThisWorkbook.Sheets(1).Range("a1").Resize(n,maxCol).Value = a End Sub (seiya) ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200804/20080404142253.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97037 documents and 608190 words.

訪問者:カウンタValid HTML 4.01 Transitional