Avatar billede Claus Mester
24. april 2005 - 15:19 Der er 6 kommentarer og
2 løsninger

VBA word: Alle CD drev ind i combo

Hej eksperter

Nogen der har en fiks kode til at klare ovennævnte udfordring?

Altså, kun CD drev, ikke HDD, diskdrev etc.

nicolaus
Avatar billede Claus Mester
24. april 2005 - 19:04 #1
Altså jeg skal have læst alle tilgængelige CD/DVD drev ind i Combo ved opstart af formen.

Anyone???
Avatar billede sjh Nybegynder
24. april 2005 - 23:35 #2
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Sub Form_Load()
    Select Case GetDriveType("C:\")
        Case 2
            Me.Print "Removable"
        Case 3
            Me.Print "Drive Fixed"
        Case Is = 4
            Me.Print "Remote"
        Case Is = 5
            Me.Print "Cd-Rom"
        Case Is = 6
            Me.Print "Ram disk"
        Case Else
            Me.Print "Unrecognized"
    End Select
End Sub

så skal du bate løbe fra A til Z

for i = 65 to 90
  if GetDriveType(Chr(i)) = 5 then
    ' tilføj cdrom
  end if
next
Avatar billede Claus Mester
25. april 2005 - 09:18 #3
Hvilken variabel indlæser jeg i combo?
Avatar billede sjh Nybegynder
25. april 2005 - 14:53 #4
ar.. kan se jeg fik lavet en lille fejl..


Dim i As Integer
Dim strDrive As String
  For i = 65 To 90
    strDrive = (Chr(i) & ":\") '<- A:\ til Z:\
    If GetDriveType(strDrive) = 5 Then
      Combo1.AddItem strDrive '<- A:\ til Z:\
    End If
  Next
Avatar billede Claus Mester
25. april 2005 - 15:57 #5
Den fejler ved Me.Print. Siger "object dosn't support ...."

Men klarede det vha. følgende kode:

Sub CheckDriveList()
Dim fs, d, dc
CombChoose.Clear
CombChoose.AddItem "Vælg et drev i listen"
On Error Resume Next
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set dc = fs.Drives
      For Each d In dc
        If d.drivetype = 4 Then CombChoose.AddItem d.driveletter & ":/"
      Next
On Error GoTo 0
CombChoose.ListIndex = 0
End Sub
Avatar billede sjh Nybegynder
25. april 2005 - 16:01 #6
Det er også sådan du skal gøre.. Me.Print virker kun i Visual Basic og ikke i VBA


Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Sub CheckDriveList()
Dim i As Integer
Dim strDrive As String
  For i = 65 To 90
    strDrive = (Chr(i) & ":\") '<- A:\ til Z:\
    If GetDriveType(strDrive) = 5 Then
      CombChoose.AddItem strDrive '<- A:\ til Z:\
    End If
  Next
End Sub
Avatar billede Claus Mester
04. maj 2005 - 17:49 #7
Da jeg selv løste en del af svaret, dele jeg pointene.
Så hvis du smider et svar får du din andel :-)
Og så takker jeg for hjælpen.
Avatar billede sjh Nybegynder
05. maj 2005 - 17:32 #8
:P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester