-PR-
解決済み

CDドライブ

  • すぐに回答を!
  • 質問No.184434
  • 閲覧数45
  • ありがとう数4
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 50% (8/16)

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

ドライブ名がQ,F,D・・・・とどこにあるかと言う事です。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.6
レベル12

ベストアンサー率 65% (276/422)

すいません。レスがおくれました。

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

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

お礼率 50% (8/16)

ありがとうございました。
参考になりました。
投稿日時 - 2002-01-07 19:52:20
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル12

ベストアンサー率 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
お礼コメント
kakuunn

お礼率 50% (8/16)

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

※CD-ROMとCD-R/Wのドライブの区別はつかないの
でしょうか?
投稿日時 - 2001-12-13 17:31:09


  • 回答No.2
レベル9

ベストアンサー率 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
お礼コメント
kakuunn

お礼率 50% (8/16)

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

※CD-ROMとCD-R/Wのドライブの区別はつかないの
でしょうか?
投稿日時 - 2001-12-13 19:11:51
  • 回答No.3
レベル12

ベストアンサー率 65% (276/422)

Watapo3さんの回答だけでなく FileSystemObject を使用した回答全てへの補足です。(攻撃しているわけではありませんので、勘弁してください。。。)

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

ベストアンサー率 76% (33/43)

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

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

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

他にIEのバージョンによって動作に影響が出てしまうのでしょうか?
補足をよろしく御願いいたします。m(_ _)m
  • 回答No.5
レベル12

ベストアンサー率 65% (276/422)

話がそれてきましたね。(^。^)

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

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

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

でわでわ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ