Excel (VBA) |
![]() ![]() |
(指定なし : 指定なし)
CSVデータを正しく配列に格納し、数値を正しく転記する方法について
投稿日時: 23/03/30 21:27:51
投稿者: TATSUYA.ich
|
---|---|
下記コードはCSVファイルを読み込み、そのデータを配列に格納した上で、所定の配列のデータを所定の列に記載するためのコードです。
|
![]() |
投稿日時: 23/03/31 06:14:26
投稿者: simple
|
---|---|
CSVデータの項目数が不定個(らしい)ですが、
|
![]() |
投稿日時: 23/03/31 06:17:22
投稿者: simple
|
---|---|
追記です。
|
![]() |
投稿日時: 23/03/31 10:31:12
投稿者: WinArrow
|
---|---|
simple さんの引用: これに対する補足です。 >一次元方向に広げることはできません。。 「拡大」も「縮小」もできません。(エラーになるはずです) |
![]() |
投稿日時: 23/03/31 17:07:12
投稿者: WinArrow
|
---|---|
前トピのコードの中におかしなところがあります。
引用: CSVをBUFに読み込んで、tmpに項目分解しているが、 変数「n」の値は変化していませんよね? 従って If n > UBound(ary,1) Then が成立していないから、配列再設定もスルーしています。 本来ならば、配列再設定でエラーになるはず・・・・ CSVのアクセスを変えるのではなく、基本的な部分をキチンと見直しましょう。 ステップ実行すれば、分かるはずです。 |
![]() |
投稿日時: 23/04/01 10:01:16
投稿者: WinArrow
|
---|---|
若しかして、掲示したコードは、手入力ですか?
引用: ➁ 引用: ➁では➀で取得した「tFile」を使っていますが、 ➁では、フルパスを指定すべきところ、ファイル名だけになっています。 「tFile」は、別のところでも使っているので、確認が必要です。 「tFile」で、動いているとすれば、@は間違いということになりませんか? 問題点2 ➂ 引用: .EOS は、間違いですよね? 問題点3 ➃ 引用: このコードは、何をしているのでしょうか? 問題4 D 引用: このコードは、不要と思います。 max_nはファイルの中のデータ件数のはずです。 しかし、aryの一次元は「0」から始まっているので、実際のデータより1件多い。 もし、これが実行されると、実際にはエラーになります。 「n」を変更しているところを探すべきです。 掲示のコード(手入力による)が実際のコードと食い違いあれば、別の話です。 |
![]() |
投稿日時: 23/04/01 13:55:11
投稿者: TATSUYA.ich
|
---|---|
simple さんの引用: Simple様 ご回答ありがとうございます!! 大変助かります。。 お返事が遅くなり申し訳ございません。 また、エクセルのバージョンなどについても申し訳ございませんでした。 Microsoft office personal2019でございました。 頂いたクエリテーブルのコードですが、今から試してみたいと思います。 いきなり読み込むよりも一度展開したほうがやりやすいですよね! |
![]() |
投稿日時: 23/04/01 13:56:31
投稿者: TATSUYA.ich
|
---|---|
WinArrow さんの引用:simple さんの引用: Simple様、WinArrow様 お返事ありがとうございます。。 そうなんですね、今回は2次元方向に広げる処理が中心になっているかと思います。 |
![]() |
投稿日時: 23/04/01 13:59:28
投稿者: TATSUYA.ich
|
---|---|
WinArrow さんの引用: WinArrow様 基本がなっておらず申し訳ございません。。 Nが変化して行数を超えた場合に、上記処理で対応できないかなと思って記述したのですが、1次元は拡大も縮小もできないということを知らずに記述しておりました。 |
![]() |
投稿日時: 23/04/01 15:37:14
投稿者: TATSUYA.ich
|
---|---|
WinArrow さんの引用: @・2の部分はご指摘下さった内容がよく理解できませんでした。 Bについては、ADODB.Streamで記述する場合にこのような記述になるとおもって記述を変更した記憶があります。 4については、確か数字の例えば2,000円とかがあると、途中のカンマで配列がが区切られてしまうのを防止するため、replaceColon関数を別でつくり、上手く配列を取り込むための処理をしている部分です。 Dについては、ご指摘下さったとおり不要かもしれませんが、何度やってもエラーが出たため、もしかしたらと思って念のため記述したコードになります。 いろいろとご検討及ぼご指摘下さり、有難うございます!今からいろいろ試して仕上げたいと思っております。 |