FileListBoxコントロールのMultiSelectプロパティを「2-拡張」にして、
CtrlやShiftを併用することでファイルを複数選択できるようにしました。
とりあえず動作確認段階なので、ファイル選択状態でCommandButtonを押下することで、ファイル名を表示するようにしたいのですが、
Msgbox (File1.FileName) ※File1はFileListBoxコントロール名
では、当たり前の事ながら、(複数選択したうちの)1ファイルしか表示されません。FileNameプロパティにインデックスを付けるなど素人考えで色々当たってみたのですが、どうも上手くいきません。
選択した全てのファイル名をフルパスで取得したいのですが、何かいいテクニックはないでしょうか?
No.4
- 回答日時:
k_o_j_iさん、おはようございます。
選択ファイル数のプロパテイがあるかどうか、しりませんので、専門家の方、教えて下さい。
ReDim TBL(File1.ListCount)
とその時の最大配列ではマズイのでしょうか?
選択した数の分だけの配列にしなくてはいけない理由がわかりませんが、
どうしてもそうであれば、2回ループでしょうね。
ループ処理を少なくしたいのであれば、
ReDim TBL(j)
とループの中で ReDim する方法もあるけど、何か本末転倒のような気がします。
おはようございます!(もうすっかり晩ですが 笑)
>ReDim TBL(File1.ListCount)
>とその時の最大配列ではマズイのでしょうか?
割り当てられるメモリ量などは大したこと無いでしょうから、
それでもいいのですが、出来れば一旦配列変数に全選択ファイル名を格納して、
処理の前に「○個のファイルを処理します」といったメッセージを
入れたかったんです。
>ループ処理を少なくしたいのであれば、
>ReDim TBL(j)
>とループの中で ReDim する方法もあるけど、何か本末転倒のような気がします。
ループ2回まわしか、ループ内でRedim Preserveを使うか、の二者択一ですね。
とりあえず今回は後者採用でいってみたいと思います。
どうも色々とありがとうございました。
No.3
- 回答日時:
> ところでここで取得したファイル名を1つずつ配列変数に格納したいのですが、
> 配列変数を宣言するときにはあらかじめ選択ファイル数がわかっている必要があります。
> こういう場合は、やはりFor~Next文2回まわし(1回目で選択ファイル数取得、Redimでその数字を変数の次元に指定、2回目で配列変数に各ファイル名を格納)しかないのでしょうか?
> 出来ればループ処理は少なくしたいのですが……
>
これもヘルプの Redimにのっていると思うのですが、preserveという宣言方法があります。
ご教授いただきどうもありがとうございます。
Redim preserve 変数(idx)
で、変数の内容を保持したまま、再定義が出来るんですね。
となると、やはり
Option Base 1
Dim strFileName() As String
j = 1
For I = 0 To File1.ListCount - 1
Redim Preserve strFileName(j)
If File1.Selected(I) Then
strFileName(j) = Dir1.Path & "\" & File1.List(I)
j = j + 1
End If
Next I
の様にループ内部でRedim Preserveを使うのが良さそうですね。
No.2
- 回答日時:
たぶんVB6だと思いますが、ヘルプに書かれていませんか?キーワードは「Selected」です。
VB6は内容は全てヘルプに書かれています。
ヘルプに書かれていない内容は「サポート情報」を別にして誰にもわかりません。
この回答への補足
おっしゃるとおり、HELPに書かれていました。
下にも書きましたが、Selectedプロパティの例文が
ListBox主体に書かれていたので、気が付きませんでした。
>ヘルプに書かれていない内容は「サポート情報」を別にして
>誰にもわかりません。
VisualStudio6.0のHELPは確かに充実していますが、
「こういう処理をやりたい」という場合、
キーワードがわからないとかなり難渋するのが玉に瑕です……。
No.1ベストアンサー
- 回答日時:
k_o_j_iさん、こんばんは!
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Private Sub File1_PathChange()
Dir1.Path = File1.Path
End Sub
Private Sub Command1_Click()
For I = 0 To File1.ListCount - 1
If File1.Selected(I) Then Debug.Print Dir1.Path & "\" & File1.List(I)
Next I
End Sub
でフルパスで選択したファイル名が表示されます。
即座の回答どうもありがとうございます。
>For I = 0 To File1.ListCount - 1
>If File1.Selected(I) Then Debug.Print Dir1.Path & "\" & File1.List(I)
>Next I
ListBoxと同じやり方なのですね。
FileNameプロパティに拘泥しすぎてしまったようです。
実行してみたところ上手くいきました。
ところでここで取得したファイル名を1つずつ配列変数に格納したいのですが、
配列変数を宣言するときにはあらかじめ選択ファイル数がわかっている必要があります。
こういう場合は、やはりFor~Next文2回まわし(1回目で選択ファイル数取得、Redimでその数字を変数の次元に指定、2回目で配列変数に各ファイル名を格納)しかないのでしょうか?
出来ればループ処理は少なくしたいのですが……
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 配列に格納した値の平均の...
-
Excelのセルの色指定をVBAから...
-
スプレットシートのGetTextにつ...
-
array関数で格納した配列の型を...
-
DataSetから、DataTableを取得...
-
表にフィルターをかけ、絞った...
-
配列がとびとびである場合の書き方
-
【VBS】innerTEXTで取得した内...
-
エクセルVBAで変数をセルに一行...
-
SUMPRODUCT関数を用いた最小値
-
Excel VBA 配列の分割について
-
VB6.0 ファイルの一括読込み
-
読み込みで一行おきに配列に格納
-
VB.NET→クリスタルレポートにお...
-
Datatableへの代入
-
iniファイルのキーと値を取得す...
-
二次元配列の中の各行の要素を...
-
ExcelのINDEXとMATCH関数でスピ...
-
[VBA]改行入りのセルの値を配列...
-
【VBA】ユーザーフォーム リス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
エクセルで、絶対値の平均を算...
-
表にフィルターをかけ、絞った...
-
ExcelのINDEXとMATCH関数でスピ...
-
[エクセル]連続する指定範囲か...
-
array関数で格納した配列の型を...
-
配列がとびとびである場合の書き方
-
VBA 配列に格納した値の平均の...
-
DataSetから、DataTableを取得...
-
[VBA]改行入りのセルの値を配列...
-
読み込みで一行おきに配列に格納
-
Excel オートフィルタのリスト...
-
iniファイルのキーと値を取得す...
-
【VBA】ユーザーフォーム リス...
-
Split関数でLong配列に格納する...
-
配列のSession格納、及び取得方...
-
VB6.0 ファイルの一括読込み
-
Dictionaryを使い4つの条件の一...
-
INDEX(D:D,L3)の意味は?
-
SUMPRODUCT関数を用いた最小値
おすすめ情報