ギリギリ行けるお一人様のライン

お世話になっております。
タイトル通りの質問です。

日付がファイル名になっているCSVファイルが複数あるのですが、
それをそのまま「array20071020」などという名前の配列に、それぞれ入れて行きたいと思います。ループ処理でなければ出来ないと思うのですが、ループ処理内で配列を宣言していく方法はあるでしょうか。

A 回答 (2件)

dim array20071020 as string


dim array20071021 as string
dim array20071022 as string
...
みたいな事をプログラムでと言う事だと思うのですが、多分できないと思います。

で、excelにはcollectionと言う、名前も変数も文字にできるオブジェクトがあるので、
dim csv as new collection
csv.Add loadCsv("20071020"),"20071020"
csv.Add loadCsv("20071021"),"20071021"
csv.Add loadCsv("20071022"),"20071022"
(loadCsvはたとえばの関数です)
と追加しておけば、
str=csv("20071020")
で読み出せます。

collectionのアイテムは、文字とか変数だけではなく、配列やオブジェクトとかを、個々に指定できる点が便利です。
Dim hoge(1, 2) As Integer
hoge(1, 1) = 11
hoge(1, 2) = 12
Dim fumu As New Collection
fumu.Add 123, "20071020"
fumu.Add "abc", "20071021"
fumu.Add hoge, "20071022"
fumu.Add Range("A1:C5"), "20071023"
MsgBox fumu("20071020")
MsgBox fumu("20071021")
MsgBox fumu("20071022")(1, 1)
MsgBox fumu("20071022")(1, 2)
MsgBox fumu("20071023").Rows.Count
MsgBox fumu("20071023").Columns.Count
    • good
    • 1
この回答へのお礼

ご返信遅れましてすみません。

Collectionをの使い方を勉強して、無事希望通りのことができました。
配列ではなくDataTableを使いましたが、
教えて頂いたようにそれぞれのCSV内のデータをDataTableに入れる関数をつくり、キーを変数で指定できたのでループ処理でコレクションに追加できました。

どうもありがとうございました<(_ _)>

お礼日時:2007/10/25 06:01

Set StrCSV = CreateObject("Scripting.Dictionary")



StrCSV("array20071020") = "A"
StrCSV("array20071021") = "B"
StrCSV("array20071022") = "C"
StrCSV("array20071023") = "D"

もし、VB6なら上記のような連想配列というのがあります。
    • good
    • 1
この回答へのお礼

ご返信遅れてすみません。

今回はNo.1さんに教えていただいた方法で試行錯誤し、ようやく希望通りのことができました。

連想配列を使う方法、なんとか頭では理解できましたので、こちらでやる方法も勉強してみたいと思います。

どうもありがとうございました<(_ _)>

お礼日時:2007/10/25 06:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A