• 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 raakt focus kwijt na opnen ander bestand

laforge2

Gebruiker
Lid geworden
11 jan 2007
Berichten
95
Hallo,

Ik probeer vanuit VBA een bestand te open.
Dat gaat goed.
Echter het geopende bestand wordt het actieve bestand en de script loopt daarna niet verder.
Ik gebruik al ThisWorkbook.Activate, maar dat helpt niet.
Het padnaam, en bestand heb ik even fictief gemaakt.
FileLocked controleert of het bestand al geopend is
Hoe kan ik ervoor zorgen dat het script wel doorloopt?

Een stukje script:
padnaam = "c:\temp\"
bestand = "bestand.xlsx"
padbestand = padnaam + bestand
If Dir(padbestand) <> "" Then
If IsFileLocked(padbestand) Then
MsgBox "Bestand is al geopend: " & bestand
Else
Workbooks.Open padbestand
ThisWorkbook.Activate
Workbooks(bestand).Close SaveChanges:=False
End If
Else
MsgBox "Bestand bestaat niet: " & bestand & ". Import gaat wel verder."
End If



Alvast bedankt voor het meedenken.
 
Zolang het bestand waarin een macro staat geopend is, loopt de macro door tot het einde van de macro.
 
Zet dus Exit Sub onder MsgBox "Bestand bestaat niet: " & bestand & ". Import gaat wel verder."
 
Laatst bewerkt:
Dank voor het meedenken.
@edmoor Dat is niet het issue.
@snb dat loopt het dus niet.
Als ik VB geopend hou wel, maar vooer ik hem uit met een sneltoets dan stopt het dus omdat het andere bestand de aktieve bestand wordt en de focus niet meer op het originele bestand.
 
Je opent het bestand C:\temp\bestand.xlsx en sluit het direct weer zonder er iets mee te hebben gedaan. Het nut daarvan ontgaat mij. Leg eens uit?
 
Het zal slechts een stukje uit een groter script zijn.
 
Op het moment dat je het bestand opent worden de waarden in de originele bestand automatisch bijgewerkt.
Ik kan het niet doen middels een koppeling omdat de bestanden op sharepoint staat en ik dan de enige ben die het kan aanpassen.
 
Ik heb hier 2 bestanden, importbestand.xlsx en origineel.xlsm
De VB script iets aangepast om het eenvoudig te houden.
Als je op CTRL+SHIFT+I drukt dan start de import en zou er een bericht moeten verschijnen dat de import gereed is.
Omdat de focus op importbestand.xls blijft staan, wordt de VB script niet afgemaakt.
Door te klikken op origineel.xlsm en importbestand.xlsx NIET te sluiten en weer op CTRL+SIFT+I te drukken, wordt de VB script wel afgemaakt en krijg ik de melding dat de import gereed is.
Bestanden staan voor het voorbeeld even op c:\temp
 

Bijlagen

Ik denk dat het een timing probleem is.
Doe het eens zo:
Code:
Sub import()
    padnaam = "c:\temp\"
    bestand = "importbestand.xlsx"
    padbestand = padnaam & bestand
    DoEvents
    Workbooks.Open padbestand
    ActiveWorkbook.Close SaveChanges:=False
    MsgBox "import is gereed"
End Sub
 
Als je de macro start via Alt-F8, Enter, dan doet hij het wel.
 
Zet in het xlsm-bestaqnd bij data/edit links/ Startup prompt, dat de gebruiker geen hulpscherm voor wel/niet updaten moet worden getoond.
Als je daarna het bestand sluit en opnieuw opent worden alle gegevens zonder enige macro geaktualiseerd. De macro is dus overbodig.
 
Maar waarom de macro het wel doet als hij via Alt-F8 gestart wordt en niet als hij via CTRL+SHIFT+I gestart wordt is mij een raadsel. Kan iemand dat verklaren?
 
@snb Hoe bedoel je?

En je ziet hem bij de macro's, maar het is geen (opgenomen) macro.
De uiteindelijke inhoud is wel groter dan het voorbeeld bestandje.
 
@AHulpje & @laforge2,
Interessante vraag! Ik had (en vond) er geen antwoord op. Een paar dingetjes geprobeerd maar zonder verbetering. Het is zelden mijn methode maar hier toch maar eens AI voor geraadpleegd. Eerst minstens 20 antwoorden naast de kwestie gekregen, maar via hardnekkig blijven peuteren dit gekregen:
Een sneltoets-macro in Excel is geen “gewone” macrocall, maar een UI-trigger die zijn execution context kan verliezen bij window-switches.
 
@Enigmasmurf Dat verklaar in ieder geval al iets.
Dan zou het dus een optie zijn om het niet meer via een sneltoets te doen.
Wel jammer, want dan moet je eerst de macro's openen en dan uitvoeren.
 
Heb je #12 al gedaan?
Dat lost hier je probleem op.
 
Terug
Bovenaan Onderaan