
No.2ベストアンサー
- 回答日時:
こんにちは。
#1のka_na_deです。
前回紹介した解説で分かりましたか?
ちょっと説明します。
(1)区切り文字ファイル(DataType:=xlDelimitedの場合)
例えば、FieldInfo:=Array(Array(1, 2), Array(2,1), Array(3,3))
とした場合は、
1列目:テキスト(文字列)
2列目:一般(標準)
3列目:MDY (月日年) 形式の日付
として、指定されます。これなら簡単です。
しかし、VBAのヘルプには、
「列の指定はどのような順番で行ってもかまいません。
指定されなかった列は標準形式と解釈されます。」
とあるので、分かりにくくなっています。上記は
FieldInfo:=Array(Array(3,3),Array(1, 2))
でも良いということです。
しかし、現実にはこのように引数FieldInfoのArray関数を
省略してしまうと、データが正常に取り込めないという不具合に
直面してしまう。そうです。
(2)固定長フィールドファイル(DataType:=xlFixedWidthの場合)
例えば、FieldInfo:=Array(Array(0, 2), Array(5, 5), Array(13, 1)
とした場合は、
0~4文字目:テキスト(文字列)
5~12文字目:YMD (年月日) 形式の日付
13文字以降:一般(標準)
として、指定されます。
尚、参考ページにもありますが、
<FieldInfoのArray関数のニ番目の要素に指定する数値と変換方法>
数値 変換方法
1 一般(標準)
2 テキスト(文字列)
3 MDY (月日年) 形式の日付
4 DMY (日月年) 形式の日付
5 YMD (年月日) 形式の日付
6 MYD (月年日) 形式の日付
7 DYM (日年月) 形式の日付
8 YDM (年日月) 形式の日付
9 EMD (台湾年月日) 形式の日付
10 スキップ列(削除列)
No.3
- 回答日時:
こんばんは。
>FieldInfo:=をArray関数のネストにしているのを見かけますが
それは、人為的に書くことは、あまりないのではありませんか?記録マクロで出来上がったものを流用しているに過ぎないような気がします。仮に、そういうコードを使っている人でさえも、現実に、そのようなコードで書くとは思えません。ただ、QueryTable やOpenText メソッドは、複合のデリミタ(Delimiter)で切り分けるときには、とても便利なメソッドですので、Open ...For Input As # のステートメントよりも便利なときがあります。
なお、配列の中の配列という理屈は、Array関数の中は、もともと、Variant 型なので、その中に、何を入れようとも可能だと思うのです。そして、列+書式設定の命令というのは、ひとつの約束ごとには違いないのですが、それにネストをするというのも、やはりOpenText メソッドの約束ごとのひとつだと思っています。実際、それ以上の構造や仕組みは考えたことがありません。出てくる機会も少ないからです。
No.1
- 回答日時:
こんにちは。
ここが分かりやすいのではないでしょうか?
ずっと読み進めると解説されています。
ちなみに私は実践したことがありません。
スキルアップ講座第12回(DataType:=xlDelimitedの場合)
http://www.moug.net/skillup/nksw/nksw12-01.htm
スキルアップ講座第13回(DataType:=xlFixedWidthの場合)
http://www.moug.net/skillup/nksw/nksw13-01.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBAでOpenTextのFieldInfoが効かない・・
Excel(エクセル)
-
Excel VBAでテキストを開く際の表示形式
Visual Basic(VBA)
-
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
オブジェクト変数の取得について
Visual Basic(VBA)
-
6
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
7
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
8
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
9
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
-
10
【Excel VBA】先頭の「0」飛びを埋める方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差し込み印刷に当日の日付が入...
-
「24日の0時」って・・・
-
日付の大小の表現
-
回覧板の日付について質問です...
-
マクロボタンを押すと、ファイ...
-
「時間」、「期日」、「日付」...
-
エクセルで日付別にシートを分...
-
エクセル マクロ 名前を付けて...
-
履歴書の日付間違いで落ちますか。
-
会社や役所などに提出する書類...
-
日付以外のデータを抽出したい...
-
EXCELで日付を****年上期、****...
-
フォームの値をクエリーに反映...
-
Access 2013 テキストボックス...
-
Excelについて
-
エクセルで日付け表示で、明治...
-
2つの日付の中間の日付 エク...
-
エクセルで6ヵ月後を自動入力で...
-
AccessのDMax関数の複数条件式...
-
ACCESSで1月1日~12月31日まで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「24日の0時」って・・・
-
マクロボタンを押すと、ファイ...
-
日付の大小の表現
-
差し込み印刷に当日の日付が入...
-
「時間」、「期日」、「日付」...
-
回覧板の日付について質問です...
-
エクセル マクロ 名前を付けて...
-
履歴書の日付間違いで落ちますか。
-
エクセルで日付別にシートを分...
-
Excelについて
-
日付以外のデータを抽出したい...
-
差込印刷 縦書きで和暦(漢数...
-
EXCELで日付を****年上期、****...
-
Excelで1週間毎の集計(今週と...
-
エクセルで日付け表示で、明治...
-
Facebookで投稿日時を変更できない
-
フォームの値をクエリーに反映...
-
会社や役所などに提出する書類...
-
エクセルで6ヵ月後を自動入力で...
-
2つの日付の中間の日付 エク...
おすすめ情報