VBA: directorie en printer checken op bestaanbaarheid

Pagina: 1
Acties:

  • ErikRo
  • Registratie: Juni 2001
  • Laatst online: 04-08 15:18
Ik heb met de DIR functie uitgevogeld hoe je een directorie kunt controleren op het bestaan ervan.
Vind het niet echt lekker leesbaar, is er niet zoiets mogelijk als:

IF functieX ("c:\windows") = True then
MSGBOX "directorie bestaat nog."

Iets soortgelijks (mag minder mooie oplossing zijn) zoek ik nog op een printer op het netwerk te checken op bestaanbaarheid. Maar hier heb ik nog geen functie voor gevonden :(

IF functieY ("//server1-001\prn1000") = True
MSGBOX "printer bestaat nog"

Iemand een idee?

[ Voor 15% gewijzigd door ErikRo op 02-06-2003 18:48 ]

"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-08 21:31
functieX ( Het checken of een dir bestaat ) kan met de dir functie zoals je zelf al zei. Die functie zul je dus zef ff moeten maken, maar dat lijk me niet al te moeilijk

functieY ( Een netwerk printer controleren ) kan misschien wel met de OpenPrinter API. Check je MSDN.

[ Voor 3% gewijzigd door farlane op 02-06-2003 19:49 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Onder het object 'Application' hangt volgens mij een collectie die 'Printer(s)' heet. Ik zou die ff checken, is beter dan een API gebruiken (ivm dll/ocx afhankelijkheden...)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-08 21:31
Maar staan je netwerkprinters daar ook in als ze nog niet zijn toegevoegd in je printers collectie ?

( Overigens hangt dat ding niet onder het application object, het is een global collectie )

[edit]
Als ik deze code uitvoer
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{

    HANDLE hPrinter = 0;

    if( OpenPrinter( "\\\\BRN_335C32\\BINARY_P1", &hPrinter, NULL ) )
    {
        ClosePrinter( hPrinter );
    }


    return 0;
}


Dan vindt hij een ongeinstalleerde netwerkprinter.

Deze code:
Visual Basic:
1
2
3
4
  Dim X As Printer
  For Each X In Printers
    Debug.Print X.DeviceName
  Next X


Vind 'em niet.

[ Voor 52% gewijzigd door farlane op 02-06-2003 20:10 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • YoupY
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
Op de volgende manier kun je ook checken of een dir al bestaat

Visual Basic:
1
2
3
4
5
6
7
8
public Function checkDir (directory) as boolean
    On Error Resume Next
    FileSystem.ChDir (directory)
    If Err <> 0 Then
        checkDir = False
    End If
    checkDir = True
end Function 


edit:
code even omgeschreven naar een handige functie

[ Voor 39% gewijzigd door YoupY op 02-06-2003 23:39 ]