回答編集履歴

4

文法修正

2021/11/17 08:43

投稿

mmkkmm
mmkkmm

スコア103

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  追記。以下3列のtest.csvの場合。
20
20
 
21
- ```test.csv
21
+ ```CSV
22
22
 
23
23
  列A前ゼロ,列B指数,列C日付
24
24
 
@@ -32,7 +32,7 @@
32
32
 
33
33
 
34
34
 
35
- ```VBA(With句だけ)
35
+ ```VBA
36
36
 
37
37
  With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
38
38
 

3

文法修正

2021/11/17 08:43

投稿

mmkkmm
mmkkmm

スコア103

test CHANGED
@@ -18,9 +18,9 @@
18
18
 
19
19
  追記。以下3列のtest.csvの場合。
20
20
 
21
- ```CSV
21
+ ```test.csv
22
22
 
23
- 前ゼロ,列B指数,列C日付
23
+ 列A前ゼロ,列B指数,列C日付
24
24
 
25
25
  01,1111111111111,2020/1/1
26
26
 
@@ -32,7 +32,7 @@
32
32
 
33
33
 
34
34
 
35
- ```VBA
35
+ ```VBA(With句だけ)
36
36
 
37
37
  With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
38
38
 

2

テストデータとコード案を追記しました

2021/11/17 08:41

投稿

mmkkmm
mmkkmm

スコア103

test CHANGED
@@ -13,3 +13,45 @@
13
13
  *文字列型で取り込んだデータを、後で数値として扱いたい時はValとかCIntで数値に変換。
14
14
 
15
15
  *UTF-8の取り込みは.TextFilePlatform = 65001でOKと思います。
16
+
17
+
18
+
19
+ 追記。以下3列のtest.csvの場合。
20
+
21
+ ```CSV
22
+
23
+ 前ゼロ,列B指数,列C日付
24
+
25
+ 01,1111111111111,2020/1/1
26
+
27
+ 02,9999999999999,2021/12/31
28
+
29
+
30
+
31
+ ```
32
+
33
+
34
+
35
+ ```VBA
36
+
37
+ With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
38
+
39
+ .TextFilePlatform = 65001 'UTF-8
40
+
41
+ .AdjustColumnWidth = False '列の幅を自動計算しない
42
+
43
+ .TextFileCommaDelimiter = True 'コンマ区切り
44
+
45
+ .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat) '★追加
46
+
47
+ '.TextFileColumnDataTypes = Array(2, 2, 2) '★こっちでも動きます
48
+
49
+ .Refresh BackgroundQuery:=False 'シートに出力
50
+
51
+
52
+
53
+ .Delete
54
+
55
+ End With
56
+
57
+ ```

1

Microsoftの該当ヘルプページのリンクをつけました

2021/11/17 08:40

投稿

mmkkmm
mmkkmm

スコア103

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- QueryTables.Addのプロパティの[.TextFileColumnDataTypes]で、各列の表示形式を指定出来る。
7
+ [QueryTablesのプロパティの[.TextFileColumnDataTypes]で、各列の表示形式を指定出来る。](https://docs.microsoft.com/ja-jp/office/vba/api/excel.querytable.textfilecolumndatatypes)
8
8
 
9
9
  問題の列(面倒なら全部の列)を、[表示形式=文字列(xlTextFormat)]で取り込むと良い。
10
10