Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5173 / 13644 ツリー ←次へ | 前へ→

【52242】フォルダー内のファイル件数と名前の取得 07/11/3(土) 20:23 質問[未読]
【52243】Re:フォルダー内のファイル件数と名前の取得 ぱっせんじゃー 07/11/3(土) 21:03 発言[未読]
【52246】Re:フォルダー内のファイル件数と名前の取得 07/11/3(土) 22:10 お礼[未読]

【52242】フォルダー内のファイル件数と名前の取得
質問    - 07/11/3(土) 20:23 -

引用なし
パスワード
   以前お世話になりました。相変わらず初心者ですが宜しくお願いします。
EXCEL上でのスライドショー(表示のみ)をしたいのですが、画像件数やファイル名の取得方法がわかりません。

『検討したこと』
自分のレベルに合わせるため、実際の条件を下記のように変えて試してみました。
(1)フォルダー名「写真」に5件の写真を保存した・・実際は任意の件数
(2)写真のファイル名は「番号」に書き換えた・・・実際は任意のファイル名(文字)
その結果、上記の条件の範囲では出来ましたが

実用的にするには下記の2点が分りません
(1)フォルダー名「写真」に何個のファイルが存在するかを取得する方法
(2)個々の写真のファイル名の取得方法
下記コードをどのように直せばいいのか、ご教授願います。

Sub スライド練習()

Dim myNo As Integer

For myNo = 1 To 5
  Range("A1").Activate
    ActiveSheet.Pictures.Insert("C:\My Documents\EXCEL練習\写真\" & myNo & ".jpg").Select
    MsgBox "次を見る"
      ActiveSheet.Shapes(1).Delete
Next

End Sub

【52243】Re:フォルダー内のファイル件数と名前の...
発言  ぱっせんじゃー  - 07/11/3(土) 21:03 -

引用なし
パスワード
   スライドショーのように画像を次々と表示したいなら、
シェイプを一々削除するのではなく、予め用意しておいた
シェイプに表示するようにしてはいかがでしょう?
コントロールツールボックスのImageでもいいですし、
コマンドボタンのキャプション代わりに画像を表示する
ことも出来ます。

フォルダ内のファイルの数の取得は、
「FileSystemObject」を使うと便利です。
http://www.officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm

Sub test()
Dim Fol As String
Dim FSO As Object
Dim cnt As Integer
 Set FSO = CreateObject("Scripting.FileSystemObject")
 Fol = "フォルダのフルパス"
 cnt = FSO.getfolder(Fol).Files.Count
 MsgBox cnt
End Sub

他には
Dir関数
を使い、ループでフォルダ内のファイルの数を取得する方法もあります。
拡張子の指定も可能です。

【52246】Re:フォルダー内のファイル件数と名前の...
お礼    - 07/11/3(土) 22:10 -

引用なし
パスワード
   ▼ぱっせんじゃー さん:
早速の回答有難うございます。
投稿後、本を調べていたら使えそうな例題があり、それと組み合わせてみたら
うまくいきました。

>スライドショーのように画像を次々と表示したいなら、
>シェイプを一々削除するのではなく、予め用意しておいた
>シェイプに表示するようにしてはいかがでしょう?

これから、ぱっせんじゃーさんのアドバイスの方法を試してみます。
因みに現在のコードを書いておきます(基本は前のままですが・・・)

Sub スライド練習2()

Dim FileName As String
Dim i As Integer, myFile As String
 
 i = 1
 
 FileName = Dir("C:\My Documents\EXCEL練習\写真\*.*")
 
 Do While FileName <> ""
  myFile = FileName
  
  Range("A1").Activate
  ActiveSheet.Pictures.Insert("C:\My Documents\EXCEL練習\写真\" & myFile).Select
   
    MsgBox "次を見る"
    ActiveSheet.Shapes(1).Delete
   
  '同じ条件での検索
  FileName = Dir()
  i = i + 1
 Loop

End Sub

有難うございました。

5173 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free