• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bestand weg - einde makro

Status
Niet open voor verdere reacties.

Albatros

Gebruiker
Lid geworden
4 nov 2001
Berichten
388
Hoi,

Ik heb een makro, die gegevens ophaalt uit een ander bestand.
Dit werkt.
Maar als het pad naar het bewuste bestand niet bereikbaar is, of is verdwenen, wil ik graag een MSG box laten verschijnen met de tekst "deze makro is niet uit te voeren" En na een klik op de "ok" button dient de makro dan beeindigd te worden
Code:
Sub Macro1()
'
' Macro1 Macro
'
    Workbooks.Open Filename:= _
        "C:\Documents and Settings\Mijn documenten\Excel\oefen.xls"
    Application.Goto Reference:="R13C1"
    Selection.Copy
    ActiveWindow.Close
    ActiveSheet.Paste
End Sub

Iem. een idee?

Albatros
 
Code:
Sub Macro1()

    If Len(Dir("C:\Documents and Settings\Mijn documenten\Excel\oefen.xls")) = 0 Then
    
        MsgBox "Bestand bestaat niet", vbCritical
        
    Else
        
        Workbooks.Open Filename:="C:\Documents and Settings\Mijn documenten\Excel\oefen.xls"
        Application.Goto Reference:="R13C1"
        Selection.Copy
        ActiveWindow.Close
        ActiveSheet.Paste
    
    End If
    
End Sub

Wigi
 
Wigi, ff voor mijn interesse... Waarom gebruik je de Len-functie in je test? Het is toch voldoende om Dir("...")= "" te gebruiken?

Groet, Leo
 
Hoi Leo

Alternatief zou zijn:

Code:
If Dir("C:\Documents and Settings\Mijn documenten\Excel\oefen.xls") = "" Then
'code

Hier vraag je of Dir niets teruggeeft als je vraagt om het bestand. Als het bestand niet bestaat, krijg je idd niets terug.

Waarom ik dan test of de lengte daarvan 0 is? Only God knows ;)

Nee serieus, beide zijn gelijkwaardig. Wel is het zo dat VBA vergelijkingen met tekst iets trager doet dan vergelijkingen met getallen. Al is het verschil redelijk klein :D

Wigi
 
WIGI,

Bedankt voor je reactie.
De oplossing is (weer) perfect! :thumb:
Bedankt !

Albatros
 
Wigi, ff voor mijn interesse... Waarom gebruik je de Len-functie in je test? Het is toch voldoende om Dir("...")= "" te gebruiken?

Groet, Leo

Zoals Wim al aangaf is het idd sneller om te testen via len=0. Wil je die len functie toch niet gebruiken is het ook beter te testen op dir("...")=vbnullstring ipv ="", ook dat is sneller.
 
Zoals Wim al aangaf is het idd sneller om te testen via len=0. Wil je die len functie toch niet gebruiken is het ook beter te testen op dir("...")=vbnullstring ipv ="", ook dat is sneller.
De in Excel aanwezige methode om naar het bestaan van bestanden te zoeken is via Filesearch, dat werkt prima.
Maar iedereen is natuurlijk vrij om de methode te kiezen die hij of zij verkiest.
 
De in Excel aanwezige methode om naar het bestaan van bestanden te zoeken is via Filesearch, dat werkt prima.
Maar iedereen is natuurlijk vrij om de methode te kiezen die hij of zij verkiest.

Het ging me niet over het gebruik van de dir functie, maar over de test op ="". Deze werkt wel maar betere alternatieven zijn, zoals reeds gezegd in deze thread, testen op lengte 0, of =vbnullstring.

Trouwens binnen Excel 2007 VBA bestaat er geen (standaard) filesearch meer, deze is door MS verwijderd, daarom ga je zien dat men terug meer en meer dir gaat gebruiken om compabiliteit te garanderen.
 
Finch zei:
Trouwens binnen Excel 2007 VBA bestaat er geen (standaard) filesearch meer, deze is door MS verwijderd, daarom ga je zien dat men terug meer en meer dir gaat gebruiken om compabiliteit te garanderen.
Om compatibiliteit te garanderen??
In elk geval niet met voorgaande versies van Excel, daar wordt genoeg over geklaagd.
En die non-compatibiliteit is natuurlijk geen toeval, daarbij spelen vooral commerciële belangen van MS een rol.
 
Laatst bewerkt:
Om compatibiliteit te garanderen??
In elk geval niet met voorgaande versies van Excel, daar wordt genoeg over geklaagd.
En die non-compatibiliteit is natuurlijk geen toeval, daarbij spelen vooral commerciële belangen van MS een rol.

Welk is nu de boodschap van je post?
 
Welk is nu de boodschap van je post?
Dat lijkt mij nogal duidelijk:
Wat jij schrijft komt erop neer dat door Microsoft in Excel 2007 de opdracht FileSearch is verwijderd om compatibiliteit te garanderen.
Mijn antwoord daarop is dat Microsoft, door die optie - en vele andere (vele andere in vergelijking met voorgaande opties van Excel) - te verwijderen, de compatibiliteit met voorgaande versies van Excel juist heeft opgeheven. Dat staat dus haaks op jouw mening.
En dat het verdwijnen van de compatibiliteit in Excel 2007 (of meer uitgebreid: in Office 2007) met opzet is gebeurd om zoveel mogelijk gebruikers tot aanschaf van de 2007-software te bewegen, die veronderstelling is nogal voor de handliggend. Welke andere reden zou er immers kunnen zijn?
 
Dat lijkt mij nogal duidelijk:
Wat jij schrijft komt erop neer dat door Microsoft in Excel 2007 de opdracht FileSearch is verwijderd om compatibiliteit te garanderen.

als je mijn post nog eens goed leest zal je opvallen dat dat NIET hetgeen is waar ik op doel.
Ik stelde vast dat het good old dir commando terug meer en meer gebruikt gaat worden, juist omdat filesearch niet meer in Office 2007 zit en men door dir te gebruiken zowel compatibel is met Excel 2007 EN de vorige versies.
 
Idd zapatr, je hebt de post van Finch waarschijnlijk verkeerd begrepen / gelezen.
 
Idd zapatr, je hebt de post van Finch waarschijnlijk verkeerd begrepen / gelezen.
Laten we zeggen dat Finch de compatibiliteit op het oog had die gebruikers nastreven,
terwijl ik gefocust was op de incompatibiliteit die Microsoft met Office 2007 veroorzaakt.
 
Wigi, Finch, Zapatr, Deze topic heeft ietwat een 'off-topic status' gekregen door mijn 'interesse-vraag' (oeps...:o). Toch allen bedankt voor de uitleg over de dir-functie (weer wat bijgeleerd:thumb:).

Groet, Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan