プロが教えるわが家の防犯対策術!

CDROMドライブのパス名を速く発見する。
プログラムを教えてください。
宜しくお願いします。

ドライブ名がQ,F,D・・・・とどこにあるかと言う事です。

A 回答 (6件)

すいません。

レスがおくれました。

>VBAの方でこの方法では使用できないため
使えますよ。
Sub Main
より上の部分はプログラムの先頭に記述する必要があります。
その部分で引っかかったのではないでしょうか?
もしだめなら、エクセルかアクセスかわかりませんが、そのバージョンをおしえてください。

>※CD-ROMとCD-R/Wのドライブの区別はつかないのでしょうか?
この質問は、別スレッドにて行いましょう。
ぼく自身それは未経験ですので、その方が多くの答えが期待できると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/01/07 19:52

話がそれてきましたね。

(^。^)

正確なバージョンは忘れましたが、IE4ぐらいからFSOが使えるようになったと思います。
WIN95はそれ以前なので無理なのです。

以前に業務でソフトにFSOを組み込んだのですが、エライ目にあったことがあり、それからはできるだけ使用しないようにしてるのです。

もし納品先が決まらないパッケージ物なら不向きですが、そうじゃないなら問題なしです。

でわでわ
    • good
    • 0

TAGOSAKU7さん。

純粋にありがとうございます。m(_ _)m

私も、何に付随しているものかは知らなかったもので感謝いたします。
で、横に少し反れてしまうかもしれませんが、
>IEのバージョンに影響される
と言う事は、具体的にはどのような事でしょうか?

単にIEが入っていなければ使えないのか・・・これは当然だと思いますが・・・(^ ^;

他にIEのバージョンによって動作に影響が出てしまうのでしょうか?
補足をよろしく御願いいたします。m(_ _)m
    • good
    • 0

Watapo3さんの回答だけでなく FileSystemObject を使用した回答全てへの補足です。

(攻撃しているわけではありませんので、勘弁してください。。。)

ファイルシステムオブジェクトは、IEの入っているバージョンに影響されます。もし純粋なWIN95を使用していたら、使用不可です。
(今の時代では少ないでしょうが。。。)
    • good
    • 0

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
    • good
    • 0
この回答へのお礼

大変わかりやすい回答ありがとうございます。

※CD-ROMとCD-R/Wのドライブの区別はつかないの
でしょうか?

お礼日時:2001/12/13 19:11

普段使用しているコードがあるので載せておきますね。


複数の同タイプのドライブが存在していても、取得可能です。

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
    • good
    • 0
この回答へのお礼

良回答ありがとうございます。
追加お願いしたいのですが、
VBAの方でこの方法では使用できないため
そちらの方も教えていただきたいのですが。

※CD-ROMとCD-R/Wのドライブの区別はつかないの
でしょうか?

お礼日時:2001/12/13 17:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!