- 締切済み
VBでファイルの数を調べる
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- maruru01
- ベストアンサー率51% (1179/2272)
適当なAPI関数が見つからなかったので、私は自分で関数を作りました。 checkNameに入れるDir関数の第2引数の定数で、ファイルの属性を指定できます。 下の例では、通常ファイル、システムファイル、隠しファイル、読取専用ファイルをすべて配列に格納します。 では。 'FolderName内の全ファイル名(フルパス)をallFile()に格納して、ファイル数を返す Public Function FileArray(FolderName As String, allFile() As String) As Long Dim setPath As String '現在のパス Dim checkName As String '調べるファイル(フォルダ) Dim checkFlag As Boolean '繰り返しの終了判定 Dim pathCount As Long '処理するパスの個数 Dim pathList() As String 'パス名のリスト Dim fc As Long 'ファイル数 If (GetAttr(FolderName) And vbDirectory) <> 0 Then If Right(FolderName, 1) <> "\" Then FolderName = FolderName & "\" End If fc = 0 pathCount = 0 setPath = FolderName checkFlag = True Do While checkFlag = True checkName = Dir(setPath & "*.*", vbNormal + vbSystem + vbReadOnly + vbHidden + vbDirectory) Do While checkName <> "" If checkName <> "." And checkName <> ".." Then If (GetAttr(setPath & checkName) And vbDirectory) <> 0 Then pathCount = pathCount + 1 ReDim Preserve pathList(pathCount) pathList(pathCount) = setPath & checkName Else ReDim Preserve allFile(fc) allFile(fc) = setPath & checkName fc = fc + 1 End If End If checkName = Dir() Loop If pathCount = 0 Then checkFlag = False Else setPath = pathList(pathCount) & "\" pathCount = pathCount - 1 End If Loop If fc = 0 Then ReDim allFile(fc) allFile(fc) = "" End If FileArray = fc Else FileArray = 1 End If End Function
関連するQ&A
- VB2005 FTPでファイルアップロード
はじめまして。VB初心者なのですが質問があります。 VB2005でFTPでtxtファイルをアップロードをしたいです。 具体的にはCドライブに入れてある C\test1.txtをレンタルホームページのFTPサーバーにアップロードしたいです。 .NETでのアップロードの仕方はインターネットに情報が割とあるのですが、VB2005だとなかなか出てきません。 どのようなコードを書けばいいのでしょうか?よろしくお願いします。
- 締切済み
- Visual Basic
- DOSコマンドのattribで属性が変わらない
ウイルスに感染したファイルをDOSコマンドのattribで属性変更して削除するbatファイルを作りたいのですが、attribで-hで隠し属性を外そうとすると「システムファイルは再設定できません」とでて-sでシステム属性を外そうとすると「隠しファイルは再設定できません」と表示され変更できません。 どうすればうまく属性変更できるでしょうか。ちなみにdelで削除はできませんでした。 すいません、初心者ですのでお教えいただけないでしょうか。
- ベストアンサー
- その他(インターネット・Webサービス)
- ファイルの検索方法
ACCESS初心者で困っています↓ Cドライブの直下、またはDドライブの直下にXXXX.mdbというファイルがある場合に限り処理をするプログラムを作っていたんですが、ユーザーによっては保存先が違う場合があるので、すべてのドライブから対象のXXXX.mdbというファイルがあるか検索したいのですが、検索方法がわかりません。Dir("フルパス")で探していたのですが、フォルダ内だけのようなので検索できませんでした。 申し訳ありませんがご教授願います。
- ベストアンサー
- その他(データベース)
- フォルダのファイル数をvbaで取得したい
vbaなのですが、フォルダにgifファイルがたくさんはいっていますが、 その数を数えるコードを教えてください。 今は、 Sub Macro7() Dim File As String Dim i As Long File = Dir("C:\*.*", vbDirectory) Do While File <> "" File = Dir i = i + 1 Loop MsgBox "ファイル数は" & i & "です" End Sub のように、全てのファイル数をカウントして求めています。
- ベストアンサー
- Visual Basic
- SqlServerにファイルを保存(VB.NET)
お世話になっております。 VB.NETからSqlServerのFILESTREAM 属性を持ったvarbinary(max)の列にファイルを保存したいのですが、やりかたがよく分かりません。 文字列でSQL文を作成して、そのSQL文を実行するのはわかるんですが、ファイルを保存となると何をどうしたらいいのか・・・ 参考になるサイト等あれば教えてください。 ちなみに申し訳ないのですが、C#で書いてあるところはありましたがC#のソースは読めないので、できればVBが良いです。 <環境> Sql Server 2008 R2 Express VB.NET .NET Framework3.5 SP1 クライアント/サーバー型システム
- ベストアンサー
- Visual Basic
- DOSのコマンドで、隠しファイルをcopyまたはrenameする方法
OSは、Windows98SEです。 隠しファイルの属性のついたファイルをいじる前に、それをバックアップしたいとします。 しかし、隠しファイルをDOSプロンプトでcopyをしようとしても、 「ファイルが見つかりません」と文句を言ってきます。 (renameの場合も同様に文句を言ってきます。) dir /A:H で表示はできるし、エクスプローラでは見えるので、無いわけはないのです。 エクスプローラでコピーしたり元に戻したりできれば全くかまわないのですが、 もしそういうファイルを下手にいじってしまって起動できなくなってしまって 起動フロッピーで起動するときには、 DOSのコマンドでバックアップから元に戻したりすることになると思います。 DOSのコマンドで、隠しファイルをcopyしたりrenameするにはどうすればよいのでしょうか。 それとも、そういう場合は、あらかじめ、隠しファイル属性をはずしておくべきなのでしょうか。 私は DOSのコマンドは、cd, dir, copy, rename くらいしか知りません。(それらも、自信なし。) よろしくお願いいたします。 (この質問は、約1週間のあいだ 回答がないと、締め切ります。)
- ベストアンサー
- Windows 95・98
- VBS(WSH)でディレクトリの場所を取得する方法
DOSコマンドで下記のようにすると、"temp"というフォルダがCドライブ内のどこに存在するか確認できますが、VBSで同様の結果を取得する方法がわかりません。 C:\> dir temp /s 申し訳ありませんが、分かるかたがいましたらお願いします。
- 締切済み
- その他(プログラミング・開発)
- CとVBとdosの違いについて
知り合いに「CとVBとdosの違いは何?」と聞かれて納得できる説明が出来なくて困っています。 分かりやすく説明する方法を教えてください。
- ベストアンサー
- C・C++・C#
- FTPで一覧リストを作成し取得(Get)したい
VBで、FTPサーバに接続し、指定のディレクトリーからいくつかのファイルをダウンロードしています。ダウンロードするファイル数が沢山あり、出来る事なら、そのディレクトリー内のファイル名の一覧リストがほしいのです。DOSコマンドから見るときは、'ls'や'dir'は使えるのですが、一覧の作成ができません。DOSプロンプトからFTPサーバをOPENし、dir > aaa.txt と入力すると自端末のC:\document and Settings\自分のフォルダー配下に、そのaaa.txt は作られるのですが、中身が入ってきません。ファイルの一覧がほしいとき、VBではどのようにコーディングすればいいのでしょうか。教えていただければ本当に助かります。よろしくお願いいたします。
- ベストアンサー
- オープンソース
お礼
素早い回答、本当にありがとうございました。 困っていたので感激したのですが・・・。ごめんなさい。初心者の私には理解できませんでした。コピーして最低限の部分だけ修正したのですが、うまく動きませんでした。。。(T-T)考えに考えた末、なんとか自分で作成することができました(新たな問題が出てきて、結局完成してないんですが。(T-T)(T-T)(T-T))。 せっかく回答していただいたのに、申し訳ないです。。。もっと勉強しますね。