Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3427 / 13645 ツリー ←次へ | 前へ→

【62296】CSVから全角数字を取得すると日付形式になってしまう 会社員 09/7/8(水) 11:12 質問[未読]
【62297】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 11:17 質問[未読]
【62299】Re:CSVから全角数字を取得すると日付形式に... 会社員 09/7/8(水) 11:27 質問[未読]
【62301】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 11:33 発言[未読]
【62302】Re:CSVから全角数字を取得すると日付形式に... kanabun 09/7/8(水) 11:37 発言[未読]
【62304】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 11:41 発言[未読]
【62303】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 11:39 発言[未読]
【62306】Re:CSVから全角数字を取得すると日付形式に... 会社員 09/7/8(水) 12:00 お礼[未読]
【62307】Re:CSVから全角数字を取得すると日付形式に... kanabun 09/7/8(水) 13:37 発言[未読]
【62308】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 13:53 発言[未読]
【62298】Re:CSVから全角数字を取得すると日付形式に... kanabun 09/7/8(水) 11:18 発言[未読]
【62300】Re:CSVから全角数字を取得すると日付形式に... 会社員 09/7/8(水) 11:32 発言[未読]
【62305】Re:CSVから全角数字を取得すると日付形式に... kanabun 09/7/8(水) 11:44 発言[未読]
【62309】Re:CSVから全角数字を取得すると日付形式に... 会社員 09/7/8(水) 14:19 質問[未読]
【62310】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 14:38 発言[未読]
【62311】Re:CSVから全角数字を取得すると日付形式に... 会社員 09/7/8(水) 14:48 発言[未読]
【62312】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 14:52 発言[未読]
【62314】Re:CSVから全角数字を取得すると日付形式に... 会社員 09/7/8(水) 15:05 発言[未読]
【62316】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 15:23 発言[未読]
【62313】Re:CSVから全角数字を取得すると日付形式に... kanabun 09/7/8(水) 15:02 発言[未読]
【62315】Re:CSVから全角数字を取得すると日付形式に... kanabun 09/7/8(水) 15:09 発言[未読]
【62319】Re:CSVから全角数字を取得すると日付形式に... 会社員 09/7/8(水) 16:43 お礼[未読]
【62320】Re:CSVから全角数字を取得すると日付形式に... かみちゃん 09/7/8(水) 16:47 発言[未読]
【62322】Re:CSVから全角数字を取得すると日付形式に... 会社員 09/7/8(水) 19:38 お礼[未読]

【62296】CSVから全角数字を取得すると日付形式に...
質問  会社員  - 09/7/8(水) 11:12 -

引用なし
パスワード
   はじめて投稿いたします。
ご指南のほどよろしくお願いいたします。

[質問事項]
CSVファイル(カンマ区切り)内の全角文字列「3−1」をVBScriptで読み込んだところ、結果が「2009/03/01」となってしまいました。
恐らくExcelが自動的に日付と判断し変換してしまうのだと思いますが、そのまま全角の「3−1」として読み込むにはどうすればいいでしょうか?なおCSVファイルを加工する事はできません。


ちなみに、他にも似たような現象が起きましたがこちらは以下のような対処で解決しております。
現象)CSVファイル(カンマ区切り)内の半角4文字「0001」をVBScriptで読み込んだところ、ゼロが削除され半角1文字の「1」となってしまった。
解決)Format(読み込む文字,"0000") として読み込んだところ「0001」のまま読み込む事ができた。

以上

【62297】Re:CSVから全角数字を取得すると日付形式...
質問  かみちゃん  - 09/7/8(水) 11:17 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>CSVファイル(カンマ区切り)内の全角文字列「3−1」をVBScriptで読み込んだところ

どういうVBScriptになっているか書かれたら、いかがでしょうか?

【62298】Re:CSVから全角数字を取得すると日付形式...
発言  kanabun  - 09/7/8(水) 11:18 -

引用なし
パスワード
   ▼会社員 さん:

>[質問事項]
>CSVファイル(カンマ区切り)内の全角文字列「3−1」をVBScriptで読み込んだところ、結果が「2009/03/01」となってしまいました。
VBScriptで読み込んで、Excelシートに展開しているのですか?

> なおCSVファイルを加工する事はできません。
ファイルの拡張子を *.txt に変更(*.txt という複製を作る)
ことも不可ですか?

>解決)Format(読み込む文字,"0000") として読み込んだところ「0001」のまま読み込む事ができた。

いまどのようなコードを書いていますか?

【62299】Re:CSVから全角数字を取得すると日付形式...
質問  会社員  - 09/7/8(水) 11:27 -

引用なし
パスワード
   かみちゃんさん。
早速のご指摘ありがとうございます。
以下のようなスクリプトになっております。

【test.csv】
0001,3−1,,,・・・・

【VBScript】
Workbooks.Open Filename:=("test.csv")
Workbooks("test.csv").Activate
Sheets("test").Select
番地 = Worksheets("test").Cells(1, 2)

(↑番地の中身が2009/03/01となってしまっています)

よろしくお願いします。


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>CSVファイル(カンマ区切り)内の全角文字列「3−1」をVBScriptで読み込んだところ
>
>どういうVBScriptになっているか書かれたら、いかがでしょうか?

【62300】Re:CSVから全角数字を取得すると日付形式...
発言  会社員  - 09/7/8(水) 11:32 -

引用なし
パスワード
   kanabunさん
ご確認ありがとうございます。

>VBScriptで読み込んで、Excelシートに展開しているのですか?
はい、そのとおりです。

>ファイルの拡張子を *.txt に変更(*.txt という複製を作る)
>ことも不可ですか?
それは可能です。

>いまどのようなコードを書いていますか?
以下のようなスクリプトになっております。

【test.csv】
0001,3−1,,,・・・・

Workbooks.Open Filename:=("test.csv")
Workbooks("test.csv").Activate
Sheets("test").Select

番地 = Worksheets("test").Cells(1, 2)

(↑番地の中身が2009/03/01となっている)

以上です。
よろしくお願いいたします。


▼kanabun さん:
>▼会社員 さん:
>
>>[質問事項]
>>CSVファイル(カンマ区切り)内の全角文字列「3−1」をVBScriptで読み込んだところ、結果が「2009/03/01」となってしまいました。
>VBScriptで読み込んで、Excelシートに展開しているのですか?
>
>> なおCSVファイルを加工する事はできません。
>ファイルの拡張子を *.txt に変更(*.txt という複製を作る)
>ことも不可ですか?
>
>>解決)Format(読み込む文字,"0000") として読み込んだところ「0001」のまま読み込む事ができた。
>
>いまどのようなコードを書いていますか?

【62301】Re:CSVから全角数字を取得すると日付形式...
発言  かみちゃん  - 09/7/8(水) 11:33 -

引用なし
パスワード
   こんにちは。かみちゃん です。

ExcelのVBAのコードではなく、VBScriptなのですか?

>番地 = Worksheets("test").Cells(1, 2)

よくわからないのですが、
Worksheets("test").Cells(1, 2)
の部分を
Cstr(Worksheets("test").Cells(1, 2).Value)
とするか
Format(Worksheets("test").Cells(1, 2).Value, "@")
ではいけないのですか?

【62302】Re:CSVから全角数字を取得すると日付形式...
発言  kanabun  - 09/7/8(水) 11:37 -

引用なし
パスワード
   ▼かみちゃん さん:

>よくわからないのですが、
>Worksheets("test").Cells(1, 2)
>の部分を
>Cstr(Worksheets("test").Cells(1, 2).Value)
>とするか
>Format(Worksheets("test").Cells(1, 2).Value, "@")
>ではいけないのですか?

いや、
> Workbooks.Open Filename:=("test.csv")
で開いているから、セルに 日付データとして展開されているのでしょう。

【62303】Re:CSVから全角数字を取得すると日付形式...
発言  かみちゃん  - 09/7/8(水) 11:39 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ExcelのVBAのコードではなく、VBScriptなのですか?
>
>>番地 = Worksheets("test").Cells(1, 2)
>
>よくわからないのですが、
>Worksheets("test").Cells(1, 2)
>の部分を
>Cstr(Worksheets("test").Cells(1, 2).Value)
>とするか
>Format(Worksheets("test").Cells(1, 2).Value, "@")
>ではいけないのですか?

CSVファイルをExcelシートに読み込んだあとの処理なのですね。
読み込んだ時点で、日付に自動変換されています。
そのため、
Worksheets("test").Cells(1, 2)
の部分を
StrConv(Format(Worksheets("test").Cells(1, 2).Value, "m-d"), vbWide)
としたほうがいいと思います。

ただ、Excelに展開する必要はなし、CSVファイルから直接変数に格納するほうが
いいようにも思います。

【62304】Re:CSVから全角数字を取得すると日付形式...
発言  かみちゃん  - 09/7/8(水) 11:41 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>> Workbooks.Open Filename:=("test.csv")
>で開いているから、セルに 日付データとして展開されているのでしょう。

ですね。
たぶん、kanabunさんは、Excelシートに展開する必要はないとお考えだと思います
ので、
そこまでは私からは触れないでおきます。
そのため、後は、お任せします。よろしくお願いします。

【62305】Re:CSVから全角数字を取得すると日付形式...
発言  kanabun  - 09/7/8(水) 11:44 -

引用なし
パスワード
   ▼会社員 さん:
>
>>ファイルの拡張子を *.txt に変更(*.txt という複製を作る)
>>ことも不可ですか?
>それは可能です。

それが可能なら、FileCopyステートメントなどを使って拡張子だけ*.txt
に変更したファイルのほうを開く操作を
Excel上でマクロ記録してみてください。

*.txtなどのファイルを Excelメニューから[ファイル]-[開く]すると
テキストファイルウィザードが開くので、その
ウィザードの 3/3 で 列ごとのデータ型の指定ができます。
データ型をデフォルトの「標準」でなく、
文字列型とか、
日付型の列なら 「YMD」とかの指定ができます。

【62306】Re:CSVから全角数字を取得すると日付形式...
お礼  会社員  - 09/7/8(水) 12:00 -

引用なし
パスワード
   かみちゃんさん。
>StrConv(Format(Worksheets("test").Cells(1, 2).Value, "m-d"), vbWide)
>としたほうがいいと思います。
たしかにこの方法だとうまくいきます。
>ただ、Excelに展開する必要はなし、CSVファイルから直接変数に格納するほうが
>いいようにも思います。
こちらの方法でも検討してみます。
いろいろとご指導ありがとうございました。


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>ExcelのVBAのコードではなく、VBScriptなのですか?
>>
>>>番地 = Worksheets("test").Cells(1, 2)
>>
>>よくわからないのですが、
>>Worksheets("test").Cells(1, 2)
>>の部分を
>>Cstr(Worksheets("test").Cells(1, 2).Value)
>>とするか
>>Format(Worksheets("test").Cells(1, 2).Value, "@")
>>ではいけないのですか?
>
>CSVファイルをExcelシートに読み込んだあとの処理なのですね。
>読み込んだ時点で、日付に自動変換されています。
>そのため、
>Worksheets("test").Cells(1, 2)
>の部分を
>StrConv(Format(Worksheets("test").Cells(1, 2).Value, "m-d"), vbWide)
>としたほうがいいと思います。
>
>ただ、Excelに展開する必要はなし、CSVファイルから直接変数に格納するほうが
>いいようにも思います。

【62307】Re:CSVから全角数字を取得すると日付形式...
発言  kanabun  - 09/7/8(水) 13:37 -

引用なし
パスワード
   ▼会社員 さん:
>かみちゃんさん。
>>StrConv(Format(Worksheets("test").Cells(1, 2).Value, "m-d"), vbWide)
>>としたほうがいいと思います。
>たしかにこの方法だとうまくいきます。

そうでしょうか??
たとえば、以下のような3行データだったら、どうでしょう?

[Test.Csv]
0010,3−1,吉田,3200,2009/5/25
00010,13−1,岡本,6200,2009/6/25
0020,13−33,加藤,3200,2009/7/25

【62308】Re:CSVから全角数字を取得すると日付形式...
発言  かみちゃん  - 09/7/8(水) 13:53 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>00010,13−1,岡本,6200,2009/6/25

は、問題あるでしょうけど、

>0020,13−33,加藤,3200,2009/7/25

は、問題ないと思いますが?

そもそも、そういうデータは想定されていないのかもしれませんし。

拡張子がcsvからtxtに変えられないとしたら、kananbunさんならどうしますか?

【62309】Re:CSVから全角数字を取得すると日付形式...
質問  会社員  - 09/7/8(水) 14:19 -

引用なし
パスワード
   kanabunさん
ご指導ありがとうございます。
教えて頂いた方法でマクロ記録を行い、VBScriptから「.txt」のファイルを開いたところ、全角文字列「3−1」として正しくデータ認識する事ができました。ありがとうございました。

ついでで申し訳ないのですが教えてください。
上記.txtファイルはLF改行により2レコード存在しているのですが、
1レコード目は正しくVBScriptでデータを取得できるのですが2レコード目が取得されず次のようなダイアログが出てしまいます。

実行時エラー'9':
インデックスが有効範囲にありません。

「.txt」ファイルの中身は以下のようになっています。
20090705000000,12345678901234,,,,,・・・[LF改行]
20090705000000,12345678901234,,,,,・・・[LF改行]
[EOF]

エラーとなるソースを以下に示します。
Workbooks.OpenText Filename:=(txtファイル) _
    , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlNone, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma _
    :=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, _
    2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2) _
    , Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), Array(15, 2), Array( _
    16, 2), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array(21, 2), Array(22, 2), _
    Array(23, 2), Array(24, 2), Array(25, 2), Array(26, 2), Array(27, 2), Array(28, 2), Array( _
    29, 2), Array(30, 2), Array(31, 2), Array(32, 2), Array(33, 2), Array(34, 2), Array(35, 2), _
    Array(36, 2), Array(37, 2), Array(38, 2), Array(39, 2), Array(40, 2), Array(41, 2), Array( _
    42, 2), Array(43, 2), Array(44, 2), Array(45, 2), Array(46, 2), Array(47, 2), Array(48, 2), _
    Array(49, 2), Array(50, 2), Array(51, 2), Array(52, 2), Array(53, 2), Array(54, 2), Array( _
    55, 2), Array(56, 2), Array(57, 2), Array(58, 2), Array(59, 2), Array(60, 2), Array(61, 2), _
    Array(62, 2), Array(63, 2), Array(64, 2), Array(65, 2), Array(66, 2), Array(67, 2), Array( _
    68, 2), Array(69, 2), Array(70, 2), Array(71, 2), Array(72, 2), Array(73, 2), Array(74, 2), _
    Array(75, 2), Array(76, 2), Array(77, 2), Array(78, 2), Array(79, 2), Array(80, 2), Array( _
    81, 2), Array(82, 2), Array(83, 2), Array(84, 2), Array(85, 2), Array(86, 2), Array(87, 2), _
    Array(88, 2), Array(89, 2), Array(90, 2), Array(91, 2), Array(92, 2), Array(93, 2), Array( _
    94, 2), Array(95, 2), Array(96, 2), Array(97, 2), Array(98, 2)), TrailingMinusNumbers _
    :=True
Workbooks(txtファイル).Activate
Sheets(txtシート).Select

For Line = 1 To 2
  ID = Worksheets(txtシート).Cells(Line, 2) ←エラー発生箇所
Next Line
Workbooks(txtファイル).Close

何がエラーの原因なのか皆目わかりません。
ご指導をよろしくお願いいたします。


▼kanabun さん:
>▼会社員 さん:
>>
>>>ファイルの拡張子を *.txt に変更(*.txt という複製を作る)
>>>ことも不可ですか?
>>それは可能です。
>
>それが可能なら、FileCopyステートメントなどを使って拡張子だけ*.txt
>に変更したファイルのほうを開く操作を
>Excel上でマクロ記録してみてください。
>
>*.txtなどのファイルを Excelメニューから[ファイル]-[開く]すると
>テキストファイルウィザードが開くので、その
>ウィザードの 3/3 で 列ごとのデータ型の指定ができます。
>データ型をデフォルトの「標準」でなく、
>文字列型とか、
>日付型の列なら 「YMD」とかの指定ができます。

【62310】Re:CSVから全角数字を取得すると日付形式...
発言  かみちゃん  - 09/7/8(水) 14:38 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Sheets(txtシート).Select

この行では、エラーにはなりませんか?

>For Line = 1 To 2
>  ID = Worksheets(txtシート).Cells(Line, 2) ←エラー発生箇所
>Next Line

エラーが出るときの txtシート の値と Line の値はわかりませんか?

> VBScriptから「.txt」のファイルを開いたところ

再度教えていただきたいのですが、
VBScript
は、拡張子VBSのファイルですか?
それとも、ExcelVBAのModule1に記述しているのですか?

【62311】Re:CSVから全角数字を取得すると日付形式...
発言  会社員  - 09/7/8(水) 14:48 -

引用なし
パスワード
   かみちゃんさん
ご確認ありがとうございます。

>Sheets(txtシート).Select
>この行では、エラーにはなりませんか?

はい、エラーにはなりません。

>For Line = 1 To 2
>  ID = Worksheets(txtシート).Cells(Line, 2) ←エラー発生箇所
>Next Line
>エラーが出るときの txtシート の値と Line の値はわかりませんか?

エラーが出るときのtxtシートの値は 12345678901234 です。
エラーが出るときのLineの値は 2 です。

>VBScript
>は、拡張子VBSのファイルですか?
>それとも、ExcelVBAのModule1に記述しているのですか?

すいません、いい忘れていました。
後者の「ExcelVBAのModule1に記述」です。

よろしくお願いいたします。


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>Sheets(txtシート).Select
>
>この行では、エラーにはなりませんか?
>
>>For Line = 1 To 2
>>  ID = Worksheets(txtシート).Cells(Line, 2) ←エラー発生箇所
>>Next Line
>
>エラーが出るときの txtシート の値と Line の値はわかりませんか?
>
>> VBScriptから「.txt」のファイルを開いたところ
>
>再度教えていただきたいのですが、
>VBScript
>は、拡張子VBSのファイルですか?
>それとも、ExcelVBAのModule1に記述しているのですか?

【62312】Re:CSVから全角数字を取得すると日付形式...
発言  かみちゃん  - 09/7/8(水) 14:52 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>For Line = 1 To 2
>>  ID = Worksheets(txtシート).Cells(Line, 2) ←エラー発生箇所
>>Next Line
>>エラーが出るときの txtシート の値と Line の値はわかりませんか?
>
>エラーが出るときのtxtシートの値は 12345678901234 です。
>エラーが出るときのLineの値は 2 です。

Worksheets(txtシート)
の部分を
Worksheets(Cstr(txtシート))
とするといかがでしょうか?

また、62307 のkanabunさんの問いかけも確認いただければと思います。
3−1
という部分が
1ケタの数字と1ケタの数字をハイフンでつなげた3文字なのてじょうか?

なお、投稿の際、引用は、最低限のものだけしていただければよいかと思います。

【62313】Re:CSVから全角数字を取得すると日付形式...
発言  kanabun  - 09/7/8(水) 15:02 -

引用なし
パスワード
   ▼会社員 さん:

>上記.txtファイルはLF改行により2レコード存在しているのですが、
>1レコード目は正しくVBScriptでデータを取得できるのですが2レコード目が取得されず次のようなダイアログが出てしまいます。

>「.txt」ファイルの中身は以下のようになっています。
>20090705000000,12345678901234,,,,,・・・[LF改行]
>20090705000000,12345678901234,,,,,・・・[LF改行]
>[EOF]


>エラーとなるソースを以下に示します。
>Workbooks.OpenText Filename:=(txtファイル) _
>    , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
>    xlNone, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma _
>    :=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, _
>    2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2) _

ということは、どの列もすべて「文字列」として読めばいいのですか?

試しに、基本的に会社員さんと同じですが、下のコードをお試しください。

◆元のCSVファイルの複製を作成してそれをプログラムから
 開きます。
◆元のファイルは閉じておいてください。

Sub Try2_OpenText()
 Dim myFile
 Dim myText As String
 Dim FieldInfo(1 To 256)
 Dim i As Long
 
 myFile = Application.GetOpenFilename("CSVファイル,*.csv")
 If myFile = False Then Exit Sub
 
 myText = Replace(LCase$(myFile), ".csv", ".txt")
 FileCopy myFile, myText
 
 For i = 1 To 256
   FieldInfo(i) = Array(i, 2)
 Next
 Workbooks.OpenText myText, Origin:=932, _
   TextQualifier:=xlDoubleQuote, _
   Tab:=False, Semicolon:=False, Comma:=True, _
   Space:=False, Other:=False, _
   FieldInfo:=FieldInfo
   
End Sub

【62314】Re:CSVから全角数字を取得すると日付形式...
発言  会社員  - 09/7/8(水) 15:05 -

引用なし
パスワード
   かみちゃん さん

>Worksheets(txtシート)
>の部分を
>Worksheets(Cstr(txtシート))
>とするといかがでしょうか?
実験してみましたが同じ箇所でエラーとなりました。

>また、62307 のkanabunさんの問いかけも確認いただければと思います。
>3−1
>という部分が
>1ケタの数字と1ケタの数字をハイフンでつなげた3文字なのてじょうか?
いわゆる住所の番地を想定しているため、いろんなパターンの構成になります。文字数の制限こそありますが何文字の桁になるか、どこにハイフンが入るかは不定です。

よろしくお願いいたします。

【62315】Re:CSVから全角数字を取得すると日付形式...
発言  kanabun  - 09/7/8(水) 15:09 -

引用なし
パスワード
   すみません。↑はしょりすぎました
>▼会社員 さん:

>◆元のCSVファイルの複製を作成してそれをプログラムから
> 開きます。
>◆元のファイルは閉じておいてください。
>
>Sub Try2_OpenText()
> Dim myFile
> Dim myText As String
> Dim FieldInfo(1 To 256)
> Dim i As Long
> 
> myFile = Application.GetOpenFilename("CSVファイル,*.csv")
> If myFile = False Then Exit Sub
> 
> myText = Replace(LCase$(myFile), ".csv", ".txt")
> FileCopy myFile, myText
> 
> For i = 1 To 256
>   FieldInfo(i) = Array(i, 2)
> Next
> Workbooks.OpenText myText, Origin:=932, _
>   TextQualifier:=xlDoubleQuote, _
    DataType:=xlDelimited, _          '◆追加
>   Tab:=False, Semicolon:=False, Comma:=True, _
>   Space:=False, Other:=False, _
>   FieldInfo:=FieldInfo

  For i = 1 To 2
   MsgBox Cells(i, 2).Value
  Next
>   
>End Sub

【62316】Re:CSVから全角数字を取得すると日付形式...
発言  かみちゃん  - 09/7/8(水) 15:23 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>Worksheets(txtシート)
>>の部分を
>>Worksheets(Cstr(txtシート))
>>とするといかがでしょうか?
>実験してみましたが同じ箇所でエラーとなりました。

どのようなコードで実験していますか?
全体のコードがわかりませんので、こちらでは、違うところでエラーになります。

Workbooks(txtファイル).Activate
変数txtファイルは、Filename で使われているのですが、どのような値が入っている
のでしょうか?

読みこんでいるテキストファイルは、
12345678901234.txt という名前なのですか?

>>また、62307 のkanabunさんの問いかけも確認いただければと思います。
>>3−1
>>という部分が
>>1ケタの数字と1ケタの数字をハイフンでつなげた3文字なのてじょうか?
>いわゆる住所の番地を想定しているため、いろんなパターンの構成になります。

なるほど、それであれば、私が提案したFormat(〜, "m-d") という方法は、使えないときがあります。
13-1 というパターンで試してみてください。

全体のコードを示していただけると検証はできますが、
kanabunさんからコードの提示が出ていますので、しばらく静観してみようかと思います。

【62319】Re:CSVから全角数字を取得すると日付形式...
お礼  会社員  - 09/7/8(水) 16:43 -

引用なし
パスワード
   kanabunさん

ご提示頂いたサンプルソースでこちらのCSVファイルを読み込んだところ、
正常に2レコード(それぞれの2列目)を表示するダイアログが出ました。
kanabunさんのソースでは全く問題ないようです。
大変参考になりました。ありがとうございました。

こちらのソースのどこに問題(差)があるのか未だ分かりませんが・・
現在検証中です。

【62320】Re:CSVから全角数字を取得すると日付形式...
発言  かみちゃん  - 09/7/8(水) 16:47 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>こちらのソースのどこに問題(差)があるのか未だ分かりませんが・・
>現在検証中です。

そちらのソース全体を見せていただけると、どこをどう直せばいいかくらいは、
アドバイスできると思います。

自分で作ったコードが、ほんの少しの修正で動くようになるのは、うれしいですからね。

【62322】Re:CSVから全角数字を取得すると日付形式...
お礼  会社員  - 09/7/8(水) 19:38 -

引用なし
パスワード
   ▼会社員 さん:
>kanabunさん
>
>ご提示頂いたサンプルソースでこちらのCSVファイルを読み込んだところ、
>正常に2レコード(それぞれの2列目)を表示するダイアログが出ました。
>kanabunさんのソースでは全く問題ないようです。
>大変参考になりました。ありがとうございました。
>
>こちらのソースのどこに問題(差)があるのか未だ分かりませんが・・
>現在検証中です。

かみちゃんさん
kanabunさん

問題が解消しました。手厚いサポートを頂き本当にありがとうございました。
2レコード目がうまく取得できなかった主な原因は「FieldInfo」と「Array」を
よく理解していなかった事による不当なCells().Value参照だったようです。
Cells().Valueの全てを一旦ワーク領域に退避し、それを使用するようにしたところうまくいきました。具体的には以下のように対処しました。(これがBestかどうかは???ですが・・)


Dim ksdt(1000, 100)
Erase ksdt

Dim FieldInfo(1 To 100)
最大カラム = 100

For i = 1 To 最大カラム
  FieldInfo(i) = Array(i, 2)
Next
' 入力ファイルオープン
myText = "inputdata.txt"
Workbooks.OpenText myText, Origin:=932, _
   TextQualifier:=xlDoubleQuote, _
   DataType:=xlDelimited, _
   Tab:=False, Semicolon:=False, Comma:=True, _
   Space:=False, Other:=False, _
   FieldInfo:=FieldInfo
' 入力ファイルから取得したレコードデータを全て退避
For i = 1 To 2
  For j = 1 To 最大カラム
    ksdt(i, j) = Cells(i, j).Value
  Next
Next

本当にありがとうございました。
以上

3427 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free