• ベストアンサー

CDドライブ

CDROMドライブのパス名を速く発見する。 プログラムを教えてください。 宜しくお願いします。 ドライブ名がQ,F,D・・・・とどこにあるかと言う事です。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.6

すいません。レスがおくれました。 >VBAの方でこの方法では使用できないため 使えますよ。 Sub Main より上の部分はプログラムの先頭に記述する必要があります。 その部分で引っかかったのではないでしょうか? もしだめなら、エクセルかアクセスかわかりませんが、そのバージョンをおしえてください。 >※CD-ROMとCD-R/Wのドライブの区別はつかないのでしょうか? この質問は、別スレッドにて行いましょう。 ぼく自身それは未経験ですので、その方が多くの答えが期待できると思います。

kakuunn
質問者

お礼

ありがとうございました。 参考になりました。

その他の回答 (5)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.5

話がそれてきましたね。(^。^) 正確なバージョンは忘れましたが、IE4ぐらいからFSOが使えるようになったと思います。 WIN95はそれ以前なので無理なのです。 以前に業務でソフトにFSOを組み込んだのですが、エライ目にあったことがあり、それからはできるだけ使用しないようにしてるのです。 もし納品先が決まらないパッケージ物なら不向きですが、そうじゃないなら問題なしです。 でわでわ

  • Watapo3
  • ベストアンサー率76% (33/43)
回答No.4

TAGOSAKU7さん。純粋にありがとうございます。m(_ _)m 私も、何に付随しているものかは知らなかったもので感謝いたします。 で、横に少し反れてしまうかもしれませんが、 >IEのバージョンに影響される と言う事は、具体的にはどのような事でしょうか? 単にIEが入っていなければ使えないのか・・・これは当然だと思いますが・・・(^ ^; 他にIEのバージョンによって動作に影響が出てしまうのでしょうか? 補足をよろしく御願いいたします。m(_ _)m

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

Watapo3さんの回答だけでなく FileSystemObject を使用した回答全てへの補足です。(攻撃しているわけではありませんので、勘弁してください。。。) ファイルシステムオブジェクトは、IEの入っているバージョンに影響されます。もし純粋なWIN95を使用していたら、使用不可です。 (今の時代では少ないでしょうが。。。)

  • Watapo3
  • ベストアンサー率76% (33/43)
回答No.2

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

kakuunn
質問者

お礼

大変わかりやすい回答ありがとうございます。 ※CD-ROMとCD-R/Wのドライブの区別はつかないの でしょうか?

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

普段使用しているコードがあるので載せておきますね。 複数の同タイプのドライブが存在していても、取得可能です。 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

kakuunn
質問者

お礼

良回答ありがとうございます。 追加お願いしたいのですが、 VBAの方でこの方法では使用できないため そちらの方も教えていただきたいのですが。 ※CD-ROMとCD-R/Wのドライブの区別はつかないの でしょうか?

関連するQ&A