回答編集履歴
2
コード例追加
answer
CHANGED
@@ -22,4 +22,41 @@
|
|
22
22
|
|
23
23
|
二次元配列を、シートの指定範囲に代入します。
|
24
24
|
|
25
|
-
上記の方法にすれば、シートへのアクセスは1回ですみ、それ以外はメモリ上の操作ですので高速になります。
|
25
|
+
上記の方法にすれば、シートへのアクセスは1回ですみ、それ以外はメモリ上の操作ですので高速になります。
|
26
|
+
|
27
|
+
---
|
28
|
+
コメントにテキストデータ例が出たので、そこから必要データを取り出してセルに出力するコード例
|
29
|
+
|
30
|
+
テキストファイル C:\test\test.log
|
31
|
+
データ
|
32
|
+
```text
|
33
|
+
. . 値 "AA"をダウンロードしています
|
34
|
+
. . 値 "AB"をダウンロードしています
|
35
|
+
. . 値 "AC"をダウンロードしています
|
36
|
+
. . 値 "AD"をダウンロードしています
|
37
|
+
```
|
38
|
+
|
39
|
+
`値 "` と `"` の間のテキストを取り出して、A2セル以降に出力するコード例
|
40
|
+
|
41
|
+
```vba
|
42
|
+
Public Sub テキストインポート()
|
43
|
+
Dim FSO As Object, Log As String
|
44
|
+
Set FSO = CreateObject("Scripting.FileSystemObject")
|
45
|
+
With FSO.GetFile("C:\test\test.log").OpenAsTextStream
|
46
|
+
Log = .ReadAll 'Log変数に全文読み込み
|
47
|
+
MsgBox buf
|
48
|
+
.Close
|
49
|
+
End With
|
50
|
+
Set FSO = Nothing
|
51
|
+
|
52
|
+
Dim ar As Variant
|
53
|
+
ar = Split(Log, vbCrLf) '改行で分割して一次元配列に変換
|
54
|
+
|
55
|
+
For i = LBound(ar) To UBound(ar)
|
56
|
+
ar(i) = Split(Split(ar(i), "値 """)(1), """")(0) '値 " と " の間を取り出す
|
57
|
+
Next
|
58
|
+
|
59
|
+
'一次元配列を2次元配列に変換してA2以降に出力
|
60
|
+
Range("A2").Resize(UBound(ar) + 1).Value = WorksheetFunction.Transpose(ar)
|
61
|
+
End Sub
|
62
|
+
```
|
1
追記
answer
CHANGED
@@ -3,4 +3,23 @@
|
|
3
3
|
とりあえず、下記を理解して、自分でできるとこまでコードを書いてください。
|
4
4
|
話はそれからです。
|
5
5
|
|
6
|
-
[VBA 高速化テクニック ~ 配列とセルの相互転記 - t-hom’s diary](https://thom.hateblo.jp/entry/2015/08/30/141854)
|
6
|
+
[VBA 高速化テクニック ~ 配列とセルの相互転記 - t-hom’s diary](https://thom.hateblo.jp/entry/2015/08/30/141854)
|
7
|
+
|
8
|
+
---
|
9
|
+
提示のコードをみても、
|
10
|
+
テキストデータがどのようなもので、それをどのようにしたいのか結局分かりませんので、
|
11
|
+
概要を回答しておきます。
|
12
|
+
|
13
|
+
テキストファイルを1行ずつではなく、一気に読み込みます。
|
14
|
+
(1行ずつだと何行なのか分からないので、二次元配列のサイズを決定できないため)
|
15
|
+
FileSystemObjectのReadAllを使うといいでしょう。
|
16
|
+
|
17
|
+
読み込んだテキストを、Split関数で改行で分割して配列にします。
|
18
|
+
Splitの配列は一次元配列なので、
|
19
|
+
別にSplitの要素数×2列の二次元配列を確保します。
|
20
|
+
|
21
|
+
Splitの一次元配列をループで1行ずつ読み込んで、必要データを取り出して、二次元配列に格納します。
|
22
|
+
|
23
|
+
二次元配列を、シートの指定範囲に代入します。
|
24
|
+
|
25
|
+
上記の方法にすれば、シートへのアクセスは1回ですみ、それ以外はメモリ上の操作ですので高速になります。
|