na Workbooks.Openen wordt het volgende statement niet uitgevoerd

Status
Niet open voor verdere reacties.

CvV

Gebruiker
Lid geworden
19 mei 2016
Berichten
24
Ik heb onderstaande module.

Sub setResults()
Dim cDirectory As String
Dim cFileName As String
Dim cCurrentWorkbook As String

cCurrentWorkbook = ActiveWorkbook.Name
cDirectory = ThisWorkbook.Path
cFileName = "MyFile"
Workbooks.Open Filename:=cDirectory + "" + cFileName
x = Workbooks(cFileName).Sheets(1).UsedRange
Workbooks(cCurrentWorkbook).Activate
nLastLine = UBound(x)
For nRow = 2 To nLastLine

putSaldo (nRow)

Next

End Sub

De module wordt aangeroepen als macro.
Als MyFile niet open is wordt het statement na Workbooks.Openfile niet meer uitgevoerd.
Dit heb ik gecontroleerd door een breakpoint op de volgende instructie te zetten.
Als MyFile wel open is werkt de applicatie correct.

Weet iemand hoe dit komt en wat ik er aan kan doen?
 
Workbooks.Openen bestaat niet.
Workbooks.Openfile bestaat niet.
Wat bedoel je met "aangeroepen als macro"
Op welk moment moet wat waar vandaan worden aangeroepen.
 
In de eerste plaats stond er een fout in de module. Sorry. MyFile moest zijn MyFile.xls
Ik vermoed dat Workbook.Open niet werkte omdat er geen extentie achter de filename stond. Waarvoor nogmaals mijn excuses.
Met als macro uitvoeren bedoel ik dat als ik in het spreadsheet ben en dan Ctrl-SHIFT-R uitvoer het fout gaat.
Ik heb een voorbeeld bij gevoegd. Test.xlsm is het programma. MyFile.xls zijn de test gegevens.

Ik heb de volgende situaties uitgevoerd.

MyFile is niet geopend en ik doe Ctrl-SHIFT-R dan word MyFile geopend en wordt active. Verder gebeurt er niets.
MyFile is wel geopend en ik doe Ctrl-SHIFT-R dan werkt alles correct. Het woord Uitgevoerd wordt gekopieerd en Test blijft active.

MyFile is niet geopend en in VBA voer ik setResut uit dan werkt alles correct.
MyFile is wel geopend en in VBA voer ik setResult uit dan werkt alles correct.

Om uit te zoeken wat er fout gaat heb ik een breakpoint op de instructie na Workbooks.Open gezet.
In de foute situatie krijg ik geen breakpoint.
 

Bijlagen

  • Test.xlsm
    16,2 KB · Weergaven: 36
  • MyFile.xls
    8,4 KB · Weergaven: 32
Is dit niet voldoende?

Code:
Sub VenA()
  ar = Workbooks.Open(ThisWorkbook.Path & "\MyFile.xls").Sheets(1).UsedRange
  ThisWorkbook.Sheets(1).Range("C5") = ar(UBound(ar), 1)
End Sub
 
Dank je el voor de vlotte reactie.
Ik heb geprobeerd het uitvoeren, maar ook dan als het run met ctrl-SHIFT-R werkt het niet.
Als je het draait in VBA, dan wel. Dat is bij mij ook zo.
Maar een gebruiker opent VBA niet. Die kan alleen met ctrl-SHIFT-R werken.
Heb je nog een ander idee?
 
Dan ken je de sneltoets toch toe aan de macro?
 
Ja, dat klopt.
En als je die gebruikt zonder dat MyFile geopend is werkt het niet.
 
Bedankt voor je reactie.
Bij mij werkt het wel als MyFile al geopend is, maar niet als MyFile nog niet geopend is.
Ik gebruik Office 2016.
Dan weet ik op dit moment ook niet wat er aan de hand is.
Ik werk er nu omheen een geef een waarschuwing als de MyFile nog niet geopend is en laat de gebruiker die file handmatig openen.
Dan werkt het correct. Maar het is niet fraai.
Als je nog wat anders weet dan hoor ik het graag en anders sluit de vraag maar.
In ieder geval bedankt voor je medewerking.
 
Je hebt vast die andere code van jezelf er nog instaan die ook gekoppeld is aan Ctrl+Shift+R.
Dan werkt het inderdaad niet.

Alternatief.
Code:
Sub hsv()
 ThisWorkbook.Sheets(1).Range("C5") = Workbooks.Open(ThisWorkbook.Path & "\MyFile.xls").Sheets(1).Cells(Rows.Count, 1).End(xlUp)
End Sub
 
Laatst bewerkt:
Het spijt me, maar ook met jouw code werkt het niet.
Ik begrijp niet waarom niet. Het enige wat er gebeurt is dat MyFile inderdaad geopend wordt en deze wordt dan active. Die heeft dan ook de focus.
Niet meer het origineel sheet.
Als je dan nog een keer de sneltoets gebruikt, gaat het wel.
En dat is precies hetzelfde gedrag als met mijn code.
 
Maak van de sneltoets combinatie eens ctrl+shift+n van.
Daarna verander je het maar weer in R.
 
Bedankt voor je reactie.

Ook wijzigen in ctrl-shift-n werkt niet. Dat is dus N.
Wijzig ik het in ctrl-n, dus een kleine letter, dan werkt het wel.
Wijzig ik het in ctrl-r dan werkt het ook.
Enig idee hoe dat komt?

Ik heb nu in ieder geval een oplossing. Daarvoor dank.
Ik wacht nog even af of iemand een idee heeft hoe dit komt, maar anders zal ik de vraag sluiten.
 
Ik denk dat de oude in het geheugen blijft hangen.

Ctrl+Shift+R is voor Reloading (pagina verversen).

Verwijder de module en je eigen code.
Gebruik even Ctrl+Shift+N en laat de code lopen.
Zet het daarna terug naar Ctrl+Shift+R.
Die zou nu wel moeten werken wanneer je de code opnieuw uitvoert.

Tenminste hier wel.
 
Of:

Code:
Sub M_snb()
 ThisWorkbook.Sheets(1).Range("C5") = Getobject(ThisWorkbook.Path & "\MyFile.xls").Sheets(1).Cells(Rows.Count, 1).End(xlUp)
End Sub

Als deze macro in de macromodule van sheet1 staat:

Code:
Sub M_snb_000()
     Application.OnKey "^+R", "sheet1.M_snb"
End Sub

Als de macro in de macromoduele van 'ThisWorkbook' staat:

Code:
Sub M_snb_000()
     Application.OnKey "^+R", "Thisworkbook.M_snb"
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan