- 締切済み
画像の名前を指定しないで全てを表示したい
開発環境はVB6.0です。 このサイトで面白そうなのを見つけたのでやってみた所、写真の名前を指定しないと表示できない事に気づきました。 Private Sub Command1_Click() ChDir "c:\image" For n = 0 To 2 fn = Chr(48 + n) & ".jpg" Form2.Image1(n).Picture = LoadPicture(fn) Next Form2.Show ChDir App.Path End Sub 以上の方法ですと、Form1にあるボタンを押すとForm2にあるImage1にc\image内にある".jpg"の画像(この場合は写真)が表示される。 まではわかったのですが、For~Next文を使用しているので1.jpgや2.jpgなど名前を特定した場合でないと表示できない事に気づきました。 前説が長くて申し訳ありませんが、問題点は ●"IMGP0271.jpg"のような場合はどうすればよいのか。 ●写真の枚数を指定しないでフォルダ内にある".jpg"であれば全て表示させるようにするにはどうすればよいのか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
APIは別として (1)DIR 利用法 (2)FSO利用法(VBScript) ここでフォルダ内のファイルを1つずつ取得し、拡張子が.JPGなど画像関係のものを判別し、そのファイル名でLosdPicture すればよい。 下記のMsgboxのところに画像表示の処理のコードを入れる。 Sub test06() Dim objFSO As Object Dim objfolder As Object Dim objFile As Object Dim strPath As String Set objFSO = CreateObject("Scripting.FileSystemObject") Set objfolder = objFSO.GetFolder("C:\Documents and Settings\ユーザー名\My Documents\") For Each objFile In objfolder.Files If Right(objFile.Name, 4) = ".doc" Then MsgBox objFile.Name End If Next End Sub doc文書を捉える例。
- himajin100000
- ベストアンサー率54% (1660/3060)
#補足 >For~Next文を使用しているので Do While ~ Loop と FindFirstFileExやFindNextFileの戻り値を変数に格納して これがTrueである間実行する、って感じになるってことで。 ひょっとしたらExit Doも使うかも
補足
返信ありがとうございます。 For~Next文は繰り返し数を指定するものなので、やはりDo~Loopを使うんですね。 >FindFirstFileExやFindNextFileの戻り値を変数に格納して >これがTrueである間実行する、って感じになるってことで。 の意味がわからないのですが、FindFirstFileExやFindNextFileは指定された名前と属性が一致するファイルのディレクトリを検索すると書いてましたので、検索結果がTrueであれば実行であってますか? あと、『戻り値を変数に格納』とはどういう意味ですか?
- himajin100000
- ベストアンサー率54% (1660/3060)
http://www.bcap.co.jp/hanafusa/VBHLP/Fil_Dirkansu.htm Dir関数 FindFirstFileEx API http://msdn2.microsoft.com/en-us/library/aa364428.aspx FindNextFile http://msdn2.microsoft.com/en-us/library/aa364428.aspx コントロール配列とLoadなど(ってこんなやり方だったかな。もう忘れた) http://homepage1.nifty.com/rucio/main/shokyu/jugyou20.htm など。
お礼
返信ありがとうございます。 色々参考にして勉強します。
お礼
返信ありがとうございます。 imogasiさんが書いて下さったコードを記入した所、Msgboxにファイル名が表示出来ました! あとは、MsgBox objFile.Nameの所を Form2.Image1(n).Picture = LoadPicture(fn) と記入したら良いと思ったのですが、 Form2.Image1.Picture = LoadPicture(objFile.Name) と記入したら「メソッドまたはデータメンバが見つかりません。」と表示されました。この場合、フォルダ内のファイルの取得・拡張子の判断までは出来ているんですよね。 Form2.Image1.Picture = LoadPicture(objFile.Name) では何故表示されないのでしょうか? Form2のImageに問題があるのでしょうか?ファイル数よりもImageの方がたくさんあるのですが。