回答編集履歴
4
文法修正
answer
CHANGED
@@ -8,14 +8,14 @@
|
|
8
8
|
*UTF-8の取り込みは.TextFilePlatform = 65001でOKと思います。
|
9
9
|
|
10
10
|
追記。以下3列のtest.csvの場合。
|
11
|
-
```
|
11
|
+
```CSV
|
12
12
|
列A前ゼロ,列B指数,列C日付
|
13
13
|
01,1111111111111,2020/1/1
|
14
14
|
02,9999999999999,2021/12/31
|
15
15
|
|
16
16
|
```
|
17
17
|
|
18
|
-
```VBA
|
18
|
+
```VBA
|
19
19
|
With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
|
20
20
|
.TextFilePlatform = 65001 'UTF-8
|
21
21
|
.AdjustColumnWidth = False '列の幅を自動計算しない
|
3
文法修正
answer
CHANGED
@@ -8,14 +8,14 @@
|
|
8
8
|
*UTF-8の取り込みは.TextFilePlatform = 65001でOKと思います。
|
9
9
|
|
10
10
|
追記。以下3列のtest.csvの場合。
|
11
|
-
```
|
11
|
+
```test.csv
|
12
|
-
前ゼロ,列B指数,列C日付
|
12
|
+
列A前ゼロ,列B指数,列C日付
|
13
13
|
01,1111111111111,2020/1/1
|
14
14
|
02,9999999999999,2021/12/31
|
15
15
|
|
16
16
|
```
|
17
17
|
|
18
|
-
```VBA
|
18
|
+
```VBA(With句だけ)
|
19
19
|
With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
|
20
20
|
.TextFilePlatform = 65001 'UTF-8
|
21
21
|
.AdjustColumnWidth = False '列の幅を自動計算しない
|
2
テストデータとコード案を追記しました
answer
CHANGED
@@ -5,4 +5,25 @@
|
|
5
5
|
問題の列(面倒なら全部の列)を、[表示形式=文字列(xlTextFormat)]で取り込むと良い。
|
6
6
|
|
7
7
|
*文字列型で取り込んだデータを、後で数値として扱いたい時はValとかCIntで数値に変換。
|
8
|
-
*UTF-8の取り込みは.TextFilePlatform = 65001でOKと思います。
|
8
|
+
*UTF-8の取り込みは.TextFilePlatform = 65001でOKと思います。
|
9
|
+
|
10
|
+
追記。以下3列のtest.csvの場合。
|
11
|
+
```CSV
|
12
|
+
前ゼロ,列B指数,列C日付
|
13
|
+
01,1111111111111,2020/1/1
|
14
|
+
02,9999999999999,2021/12/31
|
15
|
+
|
16
|
+
```
|
17
|
+
|
18
|
+
```VBA
|
19
|
+
With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
|
20
|
+
.TextFilePlatform = 65001 'UTF-8
|
21
|
+
.AdjustColumnWidth = False '列の幅を自動計算しない
|
22
|
+
.TextFileCommaDelimiter = True 'コンマ区切り
|
23
|
+
.TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat) '★追加
|
24
|
+
'.TextFileColumnDataTypes = Array(2, 2, 2) '★こっちでも動きます
|
25
|
+
.Refresh BackgroundQuery:=False 'シートに出力
|
26
|
+
|
27
|
+
.Delete
|
28
|
+
End With
|
29
|
+
```
|
1
Microsoftの該当ヘルプページのリンクをつけました
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
0. [数字先頭0落ち] => おそらく表示形式が[標準]になっている為。
|
2
2
|
0. [E+12] => おそらく表示形式が[指数]になっている為。
|
3
3
|
|
4
|
-
QueryTables
|
4
|
+
[QueryTablesのプロパティの[.TextFileColumnDataTypes]で、各列の表示形式を指定出来る。](https://docs.microsoft.com/ja-jp/office/vba/api/excel.querytable.textfilecolumndatatypes)
|
5
5
|
問題の列(面倒なら全部の列)を、[表示形式=文字列(xlTextFormat)]で取り込むと良い。
|
6
6
|
|
7
7
|
*文字列型で取り込んだデータを、後で数値として扱いたい時はValとかCIntで数値に変換。
|