- 締切済み
マクロで日付データがおかしく取り込まれます
板違いで質問していたためレスが着かなかったのでこちらに 質問させていただきます。 ある測定器の測定結果のテキストファイルをエクセルのマクロで取り込む マクロを作成しましたが、開いたテキストファイル内の日付データが正しく読み込めません。 データは”07/04/11 12:33:55”という形式なのですが これをマクロで取り込むと”2011/07/04 12:33:55”と認識されてしまい 困っています。 しかもおかしな事にマクロを使わず、ファイル→開く→テキストファイル、又は外部データの取込→テキストデータ、で取り込むと 日付部分のデータは正しく取り込まれます。 テキストファイルの形式は固定長なので arrey関数等の設定を確認していますが、何度やってもマクロでは おかしな状態でしか取込出来ません 使用環境 winndousXP+office2000 です。 マクロは Workbooks.OpenText Filename:=.FoundFiles(i), StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(27, 1), Array(31, 1), Array(38, 1)) Rows("1:1").Select です。 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。#4です。 今までのは、OpenText だったわけですが、こんどは、.QueryTables にしたのですね。 というと、Office 2000 だけですよね。 この部分を、以下のように、 .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1) 「2(テキスト型)」か、「5(YMD型)」にします。 .TextFileColumnDataTypes = Array(5, 5, 5, 5, 5) 今Excel2000で試してみると、「5」だと、 07/4/11 12:33:55 ↓ 2007/4/11 12:33:55 今試してみると、「2」だと、 07/4/11 12:33:55 ↓ 07/4/11 12:33:55 ←シリアル値ではない状態のままになる ということになりますね。
- Wendy02
- ベストアンサー率57% (3570/6232)
#1,2 さん、私の回答、後でみたら、完全にダブっていました。良く見ていませんでした。すみません。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(27, 1), Array(31, 1), Array(38, 1)) 同じ内容ですが、ここの部分だと思いますが、試してみていただきたいのは、 Array(0 , 1).... の2次側を「5(YMD型)」に、Array(0,5).... にしてみたらどうか、ということと、それでダメなら、 2次側を、「2」に、Array(0,2) したらどうか、と思います。 それで、ダメなら、また、レスつけてください。
- TRX850-MDJ
- ベストアンサー率48% (20/41)
あ、ボケてましたm(__)m Array(日付列, 5) なら日時になるので、シリアル値のままいけるのではないでしょうか。
補足
回答有り難うございます。 当該のマクロは自動記録の後参考書片手に改変した物です。 又データのテキストはこのような形になっています。 No=1 07/05/10 10:37:49 *** abcdefghijk 32 - - *** 12345678901 29 - - これをマクロで取り込むと質問の状態になり それ以外、つまり手動で取り込むと問題なく取り込めるのは 先に書いたとおりです。 ちなみにデータポートの取込を自動記録したマクロは Sub デーらボードから() With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Documents and Settings\ユーザー名\デスクトップ\フォルダ\1-0.txt", Destination _ :=Range("A2")) .Name = "1-0" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlFixedWidth .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1) .TextFileFixedColumnWidths = Array(7, 20, 4, 7) .Refresh BackgroundQuery:=False End With End Sub と成るのですがどこを比較すればよいのでしょう
- TRX850-MDJ
- ベストアンサー率48% (20/41)
日付のデータはシリアル値である必要があるのでしょうか? ないのであれば、「Array(日付列, 1)」を「Array(日付列, 2)」にするのでは ダメですかね? 安易ですか(^^;
補足
いえいえ、回答有り難うございました。詳しくはTRX850-MDJ様の方に 書きましたが何でこうなるのか判りません