Controleren of file bestaat VBA EXcel

Status
Niet open voor verdere reacties.

forumzoeker

Gebruiker
Lid geworden
5 nov 2011
Berichten
9
Beste mensen,

Onderstaande code krijg ik niet aan de praat. Ik heb een deel van het internet, maar daar moet ik een gehele directory invullen. Dit kan niet omdat via de cloud diverse pc`s verbonden zijn en telkens de directory anders is. Nu heb ik van een andere code de Dim sn, i As Long geprobeerd deze te gebruiken maar dit resulteert in een foutmelding.

Het is in ieder geval de bedoeling dat de VBA checkt of de file bestaat, zoniet dan geeft hij een melding en stopt daarna de VBA. Als de file wel bestaat maakt hij deze open. Uiteindelijk is het de bedoeling dat een reeks van workbooks wordt gecontroleerd en geopend.

Code:
Sub Check_file()
Dim sn, i As Long
If Dir("\BPS.xlsm") <> "" Then
    Workbooks.Open Filename:="BPS.xlsm"
Else

    MsgBox "File doesn't exist"
    
 
   sn = Array("\BPS.xlsm")
    For i = 0 To UBound(sn)
Workbooks.Open ThisWorkbook.Path & "\" & sn(i)
Next i
     
End If
End Sub
 
Laatst bewerkt:
Kun je svp code tags gebruiken ?

Gebruik het volledige pad + bestandsnaam in Dir.
En vergeet de declaraties.
 
Ja sorry, gelijk aangepast.

Kan jij een voorbeeld geven, ben niet echt onderlegd ik klooi een beetje met wat ik kan vinden en de hulp die ik krijg. Alvast bedankt
 
Een sytematische introduktie in VBA, zoals in het boek 'VBA voor dummies' is veel praktischer.
 
Ik zou zo graag een werkende code krijgen zodat ik verder kan, Ik heb dit boek niet en kan nu niets met dit antwoord. Ik leer door het te doen en hier en daar een hulplijntje te vragen.
 
Als TS eerst een boek moet gaan lezen is hij een paar weken verder. Weliswaar een stuk wijzer, maar daar schiet hij nu niks mee op. Dus da's niet echt de beste tip die je kunt geven. In een forum stel je een vraag omdat je een antwoord wilt op een concreet probleem, niet omdat je een bibliothecaris zoekt :).
Dir heeft een map nodig op een schijf, en die moet dan wel worden opgegeven. Je kunt geen relatieve paden gebruiken zoals jij nu doet. Je zult dus eerst moeten weten waar de bestanden staan. Als dat variabel is, dan moet je een procedure gebruiken die vanaf de hoofdmap gaat zoeken in de submappen, wat het zoeken uiteraard niet sneller gaat maken.
 
Beste Octafish Is er zonder gebruik van een dir niets dat deze controle kan uitoefenen. Ik zit namelijk met het probleem dat niet alleen mijn pc wordt gebruikt om de macro te activeren. Dus de dir is altijd anders. Ik kom er nu al een tijd mee weg door codes te gebruiken die een verwijzing maken vanaf een bepaald pad bv \test\test.xlsm.

Zoals deze bv:

Code:
Dim sn, i As Long
sn = Array("\Team X0\Naam. 102030\102030.xlsx")
    For i = 0 To UBound(sn)
Workbooks.Open ThisWorkbook.Path & "\" & sn(i)
Next i
 
@ Octa

Ik denk dat ik aan het einde van deze draad gelijk ga krijgen ;)

Heb jij mijn vraag aan jou over de codetags iconen in de verschillende editschermen al gelezen ?
 
Ik denk dat het hier een beetje dreigt op miscommunicatie, Het excel bestand staat altijd in de zelfde map, maar het kan wel eens voorkomen met syncen in de cloud dat een bestandnaam een (1) achter de naam krijgt. bijvoorbeeld 1.xlsm krijgt opeens de naam 1(1).xlsm Dit betekent dat mijn macro dit bestand niet meer kan vinden en onderbreekt dan de macro met een fout. wat logisch is. Ik ga dan handmatig de bestandnaam weer corrigeren. Maar wat ik wil is dat de macro niet meer onderbreekt doormiddel van een foutmelding (foutopsporing) maar dit aangeeft doormiddel van een messagebox en dan gewoon stopt.

Omdat Cloud in verbinding staat met meerdere pc`s kan de directory nooit beginnen met bijvoorbeeld C:/Users blah blah blah. Nu staat de hoofd werkmap aan het begin van een pad op dat zelfde pad zitten mappen met daarachter weer excel werkmappen. bijvoorbeeld \map1\test.xlsm voor map1 staat dus de het excel werkmap met de Macro.

Ik heb al een grote variatie aan Macro`s gemaakt die automatisch gegevens haalt uit andere bestanden, backups maakt emails verstuurd etc.. en dat allemaal door gewoon te klooien en te beginnen en geen boeken te lezen maar gewoon hulp vragen op internetforums. Het Forum die mijn hulplijntje was is uit de lucht helaas, dus probeer ik het hier. Met voor mij wazige taal als gevolg. Ik weet niet wat er verwacht wordt van Members hier op dit Forum, maar ik ben een dummie die hoopt op hulp voor mij moeilijke maar leuke uitdagingen.
 
Laatst bewerkt:
Ik weet niet wat er verwacht wordt van Members hier op dit Forum, maar ik ben een dummie die hoopt op hulp voor mij moeilijke maar leuke uitdagingen.
We verwachten niet veel van vragenstellers, maar wel dat ze hun problemen/vragen duidelijk stellen. Als jij dit stelt:

Dit kan niet omdat via de cloud diverse pc`s verbonden zijn en telkens de directory anders is.
moet je niet gek opkijken als de antwoorden ook hierop gebaseerd zijn. Nu zeg je:

Ik denk dat het hier een beetje dreigt op miscommunicatie, Het excel bestand staat altijd in de zelfde map ... dat een bestandnaam een (1) achter de naam krijgt.
Dat is echt een heel ander probleem! Dat je ook met DIR nog wel kunt tackelen, omdat je met het sterretje achter de bestandsnaam ook de verlenging van de naam wel kunt vinden. En eventueel zelfs automatisch hernoemen, mits het oorspronkelijke bestand niet geopend is door iemand anders. Of je dat zou moeten willen is dus nog een geheel andere vraag.

Ik heb al een grote variatie aan Macro`s gemaakt die automatisch gegevens haalt uit andere bestanden, backups maakt emails verstuurd etc..
Als dat zo is, dan heb je, ik neem aan dat je daar tegen dezelfde problemen aanloopt, de oplossing toch al?
 
Ik heb inderdaad door hulp bovenstaande problemen op kunnen lossen. Als het gaat om het probleem als een bestand open staat, dit is in de cloud niet op te lossen omdat de sync altijd later is dan dat iemand met een bestand aan het werk is. bijvoorbeeld. iemand heeft op zijn iPad een bestand open, dit kan ik helaas niet zien. Hierdoor heb ik gezette tijden ( in de nacht dat ik zaken samenvoeg.

Ik zou echt niet weten hoe ik het probleem met directory moet aanpakken, ik klooi nu al een paar uur en ben er nog niet uit. Ik loop telkens tegen dit probleem aan en telkens is er weer een vba genie die mij uit de brand helpt, wellicht dat ik de vraagstellingen uitgebreider moet gaan verwoorden. Dit is dan een leermoment.

Maar jij stelt dat het volstaat om een sterretje te plaatsen achter de bestandnaam? en ik heb zeker interesse in het automatisch hernoemen. Ik heb deze Macro:

Code:
Dim sn, i As Long
'Naam. 102030
  sn = Array("\Team X0\Naam. 102030\102030 Contactactie.xlsx")
    For i = 0 To UBound(sn)
Workbooks.Open ThisWorkbook.Path & "\" & sn(i)
Next i
Windows("Contactactie.xlsm").Activate
Sheets("Blad1").Select
'10 kolommen invoegen
Rows("2:11").Select
    Selection.Insert Shift:=xlDown
    ' 10 kolommen kopieeren
   Windows("102030 Contactactie.xlsx").Activate
   ActiveSheet.Unprotect Password:=""
    Rows("2:11").Select
    Selection.Copy
    '10 kolommen plakken
    Windows("Contactactie.xlsm").Activate
    Rows("2:2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    '10 kolommen verwijderen
    Windows("102030 Contactactie.xlsx").Activate
   Application.CutCopyMode = False
    Rows("2:11").Select
    Selection.Delete Shift:=xlUp
    '10 kolommen kopieeren
    Rows("15:24").Select
    Range("B24").Activate
    Selection.Copy
    '10 kolommen plakken
    Rows("25:25").Select
    Range("B25").Activate
    ActiveSheet.Paste
    Application.CutCopyMode = False
    'cel B2 selecteren
    Range("B2").Select
   ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True
     Workbooks("102030 Contactactie.xlsx").Close SaveChanges:=True

Dit is een terugkerende loop in 1 macro opdracht van verschillende personen ongeveer 20

Ik zou eigenlijk willen dat aan het begin van de Macro eerst de werkboeken worden gecontroleerd en in het mooiste geval wordt hernoemd als er een fout is ontdekt.

Ik hoop dat jij mij nu wel kan helpen.
 
Laatst bewerkt:
IK ben even benieuwd wat de reden is dat er niet op mijn vraag wordt gereageerd. Komt het omdat ik een vba gebruiker bent die een beetje aan loopt te klooien en de taal eigenlijk niet spreekt. Is dit een Forum waarbij er een bepaalde basiskennis wordt vereist?

Mijn vraag die ik heb gesteld is niet raar of zo en volgens mij kan daar best antwoord op gegeven worden, ik zie in andere vraagstellingen ook vragen die gesteld worden door leken maar op een of andere manier heb ik voor mijn gevoel met 1 vraag mijn kansen op dit forum verbruikt.

Ik snap niet wat de reden is, Als ik mijn vraag terug lees dan zie ik niets verkeerds in mijn tekst. Maar antwoord?

Ik hoor het wel wees open en eerlijk dan weet ik waar ik aan toe ben en kan ik mijn account hier sluiten of kan ik andere vragen stellen, ik durf eigenlijk geen vraag meer te stellen op het moment omdat ik niet snap wat ik fout doe hier op het forum.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan