- ベストアンサー
CDドライブ
CDROMドライブのパス名を速く発見する。 プログラムを教えてください。 宜しくお願いします。 ドライブ名がQ,F,D・・・・とどこにあるかと言う事です。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
すいません。レスがおくれました。 >VBAの方でこの方法では使用できないため 使えますよ。 Sub Main より上の部分はプログラムの先頭に記述する必要があります。 その部分で引っかかったのではないでしょうか? もしだめなら、エクセルかアクセスかわかりませんが、そのバージョンをおしえてください。 >※CD-ROMとCD-R/Wのドライブの区別はつかないのでしょうか? この質問は、別スレッドにて行いましょう。 ぼく自身それは未経験ですので、その方が多くの答えが期待できると思います。
その他の回答 (5)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
話がそれてきましたね。(^。^) 正確なバージョンは忘れましたが、IE4ぐらいからFSOが使えるようになったと思います。 WIN95はそれ以前なので無理なのです。 以前に業務でソフトにFSOを組み込んだのですが、エライ目にあったことがあり、それからはできるだけ使用しないようにしてるのです。 もし納品先が決まらないパッケージ物なら不向きですが、そうじゃないなら問題なしです。 でわでわ
- Watapo3
- ベストアンサー率76% (33/43)
TAGOSAKU7さん。純粋にありがとうございます。m(_ _)m 私も、何に付随しているものかは知らなかったもので感謝いたします。 で、横に少し反れてしまうかもしれませんが、 >IEのバージョンに影響される と言う事は、具体的にはどのような事でしょうか? 単にIEが入っていなければ使えないのか・・・これは当然だと思いますが・・・(^ ^; 他にIEのバージョンによって動作に影響が出てしまうのでしょうか? 補足をよろしく御願いいたします。m(_ _)m
- TAGOSAKU7
- ベストアンサー率65% (276/422)
Watapo3さんの回答だけでなく FileSystemObject を使用した回答全てへの補足です。(攻撃しているわけではありませんので、勘弁してください。。。) ファイルシステムオブジェクトは、IEの入っているバージョンに影響されます。もし純粋なWIN95を使用していたら、使用不可です。 (今の時代では少ないでしょうが。。。)
- Watapo3
- ベストアンサー率76% (33/43)
APIを使わない方法で一つ・・・(^ ^) Sub SerchCDRomDrive() Dim fs, d, dc Set fs = CreateObject("Scripting.FileSystemObject") Set dc = fs.Drives For Each d In dc If d.DriveType = 4 Then Debug.Print d End If Next d End Sub ちなみにDriveTypeは 0:不明 1:リムーバブル ディスク 2:ハード ディスク 3:ネットワーク ドライブ 4:CD-ROM 5:RAM ディスク と、なりますm(_ _)m
お礼
大変わかりやすい回答ありがとうございます。 ※CD-ROMとCD-R/Wのドライブの区別はつかないの でしょうか?
- TAGOSAKU7
- ベストアンサー率65% (276/422)
普段使用しているコードがあるので載せておきますね。 複数の同タイプのドライブが存在していても、取得可能です。 Option Explicit Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long 'ドライブタイプの定数 Public Enum DRV_TYPE DRV_UNKNOWN = &H0 'ドライブの判別が出来ない DRV_NO_ROOT_DIR = &H1 '指定のルートディレクトリが存在しない。 DRV_REMOVABLE = &H2 '交換可能なドライブ (フロッピーディスク等) DRV_FIXED = &H3 '固定ドライブ DRV_REMOTE = &H4 'ネットワークドライブ DRV_CDROM = &H5 'CD-ROM DRV_RAMDISK = &H6 'RAMディスク End Enum Sub Main() Dim cPath As Variant Dim i As Long cPath = DriveGet(DRV_CDROM) If IsEmpty(cPath) Then Debug.Print "ドライブ認識できず" Else For i = LBound(cPath) To UBound(cPath) Debug.Print "CD_Path=["; cPath(i) & "]" Next i End If End Sub Public Function DriveGet(inDriveType As DRV_TYPE) As Variant Dim wkDriveLoop As Integer Dim lngRetValue As Long Dim DrvChar As String Dim wkVal() As Variant Dim wkCnt As Integer wkCnt = 0 For wkDriveLoop = 65 To 90 DrvChar = Chr$(wkDriveLoop) & ":\" lngRetValue = GetDriveType(DrvChar) If (lngRetValue = inDriveType) Then ReDim Preserve wkVal(wkCnt) As Variant wkVal(wkCnt) = DrvChar wkCnt = wkCnt + 1 End If Next wkDriveLoop If wkCnt > 0 Then DriveGet = wkVal End Function
お礼
良回答ありがとうございます。 追加お願いしたいのですが、 VBAの方でこの方法では使用できないため そちらの方も教えていただきたいのですが。 ※CD-ROMとCD-R/Wのドライブの区別はつかないの でしょうか?
お礼
ありがとうございました。 参考になりました。