はじめまして。ken-zieです
エクセル2003でVBにチャレンジし始めたんですが
ブックの新規作成
↓
文字入力
↓
文字や、パターン等の書式設定
までは何とかできたのですが、
その後セルC7から下にネットワークドライブにある
フォルダの中身のjpgファイルを拡張子込みの形式で
取得して表示したいと考えています。
が!ここで詰まってしまいました。
だれかご教授願いたいと思います。
できたらダイアログを使用してフォルダの中のjpgを
一括で取得できたらいいなぁ~と思っています。
よろしくお願いします。
No.1
- 回答日時:
こんにちは。
KenKen_SP です。Dir関数とかFileSearchオブジェクトでファイル検索します。
参考: http://oshiete1.goo.ne.jp/kotaeru.php3?q=1744224
上記URL の Wendy02さんのものが参考になります。下記は Wendy02 さんのものを
ちょこちょこっとカスタマイズしたものです。
フォルダ選択ダイアログについて、ネットワークドライブが想定される場合、下記
のコードはやや物足りないかもしれません。別の方法もありますが、コードが長く
なるので、、まずは下記でどんな感じか試してみて下さい。
Sub SampleMacro()
Dim myFolder As Object
Dim myFolderItem As String
Dim i As Long
Dim lngR As Long
'フォルダ選択ダイアログ表示(以下はCドライブ以下の設定です)
Set myFolder = CreateObject("Shell.Application"). _
BrowseForFolder(0, "フォルダを選択してください", 0, "C:\")
If Not myFolder Is Nothing Then
myFolderItem = myFolder.Items.Item.Path
Else
Exit Sub
End If
'FileSearch オブジェクトでファイル検索
With Application.FileSearch
.LookIn = myFolderItem
.Filename = "*.jpg" '<-----検索ファイル名(ワイルドカード可)
If .Execute > 0 Then
'該当ファイルが見つかった場合の処理
lngR = 7 '7行目から
For i = 1 To .FoundFiles.Count
'↓↓↓ この間に処理を書く ↓↓↓
Sheets("Sheet1").Cells(lngR, "C").Value = .FoundFiles(i)
lngR = lngR + 1
If lngR = 65537 Then
MsgBox "最大行数に達しましたので終了します"
Exit For
End If
'↑↑↑ ここまで ↑↑↑
Next i
Else
'該当ファイルが見つからない場合
MsgBox "該当ファイルはありません"
End If
End With
Set myFolder = Nothing
End Sub
早速の回答ありがとうございます!
ネットワークドライブなんですが、c:\の記述を
\:\としてみたらデスクトップから指定していかなければならないけど、なんとかできました(これって問題ありますか?)
あとはパス名表示を「ファイル名.拡張子」だけで
表示したいのです。
もしよかったらおしえてもらえますか?
No.2ベストアンサー
- 回答日時:
> あとはパス名表示を「ファイル名.拡張子」だけで
> 表示したいのです。
パスは Left、Mid、Right 関数辺りで分割できます。パスセパレータ
の¥記号の位置で切り取ってやります。¥記号の位置を調べるには
EXCEL2000 以降に限定されますが、InStrRev 関数を使うと簡単です。
#1 の次の部分を修正して下さい。
---------------------------------------------------------------
Sheets("Sheet1").Cells(lngR, "C").Value = .FoundFiles(i)
↓↓↓
Sheets("Sheet1").Cells(lngR, "C").Value = _
Mid$(.FoundFiles(i), InStrRev(.FoundFiles(i), "\") + 1)
---------------------------------------------------------------
> ネットワークドライブなんですが...(これって問題ありますか?)
使ってみて不具合がなければ大丈夫だと思います。
ただ、ネットワークドライブに割り当てられるドライブレターは PC
により異なる場合がありますよね?
会社などで複数の PC で使うものをコーディングする場合、この相違が
トラブルの原因になる場合があります。ある PC では大丈夫なのに、あ
る PC では「ファイルやフォルダが見つかりません」といったエラーに
なるかも知れないということです。
特別な理由がないなら UNC を使った方がいいと思います。
【参考:UNC 】IT用語辞典 e-Words
http://e-words.jp/w/UNC.html
【参考:ドライブレター】IT用語辞典 e-Words
http://e-words.jp/w/E38389E383A9E382A4E38396E383 …
【参考:ネットワークドライブ】IT用語辞典 e-Words
http://e-words.jp/w/E3838DE38383E38388E383AFE383 …
> c:\の記述を\:\
ネットワークドライブなら Z:\ などのように割り当てたドライブを
指定します。UNC で指定するなら例えば、ネットワーク名が Server1
の PC なら
\\Server1\
のように指定します。Server1 上の共有フォルダを指定するなら
\\Server1\(共有フォルダ名)
です。
------------------------------------------------------------
以下は余談というか今後の参考話です。
BrowseForFolder(0, "フォルダを選択してください", 0, "ルートフォルダパス")
でルートフォルダに空または無効なパスを指定するとデスクトップが
ルートフォルダに設定されます。
フォルダ選択ダイアログの表示方法ですが、#1の方法の良いところは
コードが簡単なことですね。ただ、前回選択したフォルダを覚えてく
れないとか、、階層が深いフォルダだと面倒です。これを解決するに
は、「フォルダ選択ダイアログ」で WEB 検索するとサンプルが多く
ありますので、調べてみて下さい。
このサイトでは、下記スレッドが参考になると思います。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1449156
あと、今回は簡単にやってしまいましたが、FileSearch オブジェクト
はファイル検索に大変便利なのですが、多少不安定な面があるんです。
「FileSearch 不安定」などで WEB 検索してみて下さい。
絶対確実に、、というのであれば Dir 関数 でファイル検索した方が
いいかも知れません。
では。
KenKen_SPさん大変ありがとうございます!
当面はこの形式で問題なさそうなのでOKとします^^
今後の参考まで載せていただいてほんとありがとです!
これからもっと勉強したいとおもいます
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
ファイル名と同名のフォルダを...
-
フォルダにリンクを貼りたい
-
ディレクトリ名変更してコピー...
-
保存先のフォルダ名を指定した...
-
平日出力されるログを月次処理...
-
pythonでDepixを起動
-
フォルダ選択ダイアログ:ネッ...
-
VBA 最新のフォルダ取得
-
EXPLORERで開いているフォルダ...
-
Excel VBA マクロ リストボックス
-
エクセルマクロで指定フォルダ...
-
Access VBA で フォルダ権限...
-
エクセルのデータをメモ帳に貼...
-
Pythonの作業環境・作業フォル...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
指定フォルダからファイルを全...
-
ツリービューを使って、エクス...
-
フォルダのサイズを一覧にした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報