こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【ExcelVBA】FreeFile関数とGet関数について

最近ExcelVBAを多用する部署に配属になり、現在勉強中の初心者です。
基本的な部分は何とか理解できるのですが、以下の部分がよくわかりません。
やっていることは、(FNAME)という名前のファイルにある数百万個の数値を、
R()という配列に格納しているらしいのですが、
"FreeFile"と"Get"の使い方がよく分かりません。
漠然とした質問で申し訳ありませんが、詳しい方教えてください。


Dim i As Integer, N As Integer
Dim R(1 To 1000000) As Single
Dim FNAME As String

N = FreeFile
Open FNAME For Binary As N

For i = 1 To 10000

Get N, , R

Next i

投稿日時 - 2007-10-25 21:16:50

QNo.3461049

困ってます

質問者が選んだベストアンサー

ファイルからデータを読み込む際、openステートメントを使用した方法では
・openステートメントでファイルを開く(アクセス可能状態にする)
・getステートメントでデータを読み込む
を別々に行う必要があります。無論、ファイルを開いてからでないと読み込みはできません。
また、複数のファイルを同時に開いた場合などのときのため、データを読み込む毎にどのファイルから読み込むのか指定しなくてはいけません。

そのためopenステートメントでは開いたファイルに必ず目印となるファイル番号を指定し、getステートメントではその番号を指示することで目的のファイルから正しく読み込むわけです。その番号がここでの変数Nです。

このファイル番号は1~511の整数のどれかを指定する必要があるのですが、すでに使用している番号を使ってしまうと重複してしまいます。
freefile関数は今まで使用していないファイル番号を自動で選択して選んでくれる関数で、これを使うことで番号の重複を防ぐことができます。


N = FreeFile
は変数Nに現在使用可能なファイル番号を格納し、

Open FNAME For Binary As N
はFNAMEファイルをバイナリ処理向けに開き、そのファイルのファイル番号と変数Nの値と決めて、

Get N, , R
はファイル番号Nのファイルからデータを読みそのデータを変数Rに格納する。

という動作となります。

投稿日時 - 2007-10-25 22:53:36

お礼

Nはファイルの目印を表しているにすぎない、と思って読むと
ぐっと分かりやすくなりました。
大変参考になりました!
ありがとうございました。

投稿日時 - 2007-10-25 23:30:26

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問