• 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.

Workbooks.Open Filename:= werkt niet naar wens

Status
Niet open voor verdere reacties.
Ik heb de code op mijn stikkie gezet en de code aangepast.

Code:
Sub Ophalen_Uren(c0)
    On Error GoTo Ophalen_Uren_err
    Dim BestVan As String
    Dim BestNaar As String
    
    BestVan = "L:\Urenstaten Ordina\" & c0 & ".xls"
    BestNaar = "L:\PIT Ordina factuurbijlage.xls"
    
    MsgBox BestVan
    
    Workbooks.Open BestVan
    
    MsgBox ActiveWorkbook.Name
    
    Workbooks(BestVan).Worksheets("Blad1").Range("B10:K27").Copy Workbooks(BestNaar).Worksheets("Weekdatatest").Range("A1")

    Workbooks(BestVan).Close


Ophalen_Uren_Exit:
    Exit Sub

Ophalen_Uren_err:
    MsgBox Err.Description
    GoTo Ophalen_Uren_Exit


End Sub

De eerste Msgbox laat netjes de naar zien zoals dat hoort.
Dus L:\Urenstaten Ordina\DI01ZH20080936.xls

Ik verwacht dat na de Workbooks.Open BestVan dit bestand dan ook het active workbook wordt.
Vandaar de twee msgbox. Deze laat echter altijd PIT Ordina factuurbijlage.xls zien.
Dat vind ik vreemd, maar misschien klopt het wel.

Graag weer een verdere aanwijzing.

Wim
 
Volgens mij moeten

BestVan

en

BestNaar

in

Code:
 Workbooks(BestVan).Worksheets("Blad1").Range("B10:K27").Copy Workbooks(BestNaar).Worksheets("Weekdatatest").Range("A1")

enkel de naam van de file hebben, en niet het complete pad. Al heb ik dit niet zelf gecheckt, maar ik denk het wel.

Wigi
 
Omdat ik er ook niet meer uitkom heb ik weer teruggegrepen op mijn eerste post.
Daarin heb ik aangegeven dat het(deels) wel werkt als ik via Macro/uitvoeren Macro1 direct uitvoer.
Ik krijg dan in iedergeval het gewenste bestand geopend en de MsgBoxen geven ook de juiste files weer.
Het is trouwens wel noodzakelijk om het volledige pad in BestVan op te nemen, anders wordt het bestand niet gevonden. ChrDir doet daar ook geen goed aan.

Voor de volledigheid nog even de Macro1
Code:
Sub Macro1()
'
' Macro1 Macro
' De macro is opgenomen op 15-9-2008 door Z539031.
'
c0 = "EM67ZI20080936"
'
    On Error GoTo Ophalen_Uren_err
    Dim BestVan As String
    Dim BestNaar As String
    
'    ChDir "L:\urenstaten Ordina\"
    
    BestVan = "L:\urenstaten Ordina\" & c0 & ".xls"
    BestNaar = "PIT Ordina factuurbijlage.xls"
    
    MsgBox BestVan
    
    Workbooks.Open BestVan
    
    MsgBox ActiveWorkbook.Name
    
    Workbooks(BestVan).Worksheets("Blad1").Range("B10:K27").Copy Workbooks(BestNaar).Worksheets("Weekdatatest").Range("A1")

    Workbooks(BestVan).Close


Ophalen_Uren_Exit:
    Exit Sub

Ophalen_Uren_err:
    MsgBox Err.Description
    
    GoTo Ophalen_Uren_Exit


End Sub

Dus de Msgboxen geven het juiste bestand weer, maar ik krijg nogsteeds de zelfde boodschap 'Subscript valt buiten bereik'.

Ik zit dus echt met mijn handen in mijn haar over deze rare verschijning.
Alles is het zelfde maar bij de een doet ie het deels wel en bij de andere in het geheel niet.

Help

Wim
 
Code:
Sub Macro1()

    Const c0 As String = "EM67ZI20080936"
    
    On Error GoTo Ophalen_Uren_err
    
    Dim BestVan As String
    Dim BestNaar As String
    
    Dim wbVan As Workbook
    Dim wbNaar As Workbook
    
    BestVan = "L:\urenstaten Ordina\" & c0 & ".xls"
    BestNaar = "PIT Ordina factuurbijlage.xls"
    
    Set wbVan = Workbooks.Open(BestVan)
    Set wbVan = Workbooks(BestNaar)
    
    wbVan.Worksheets("Blad1").Range("B10:K27").Copy wbNaar.Worksheets("Weekdatatest").Range("A1")
    wbVan.Close True

Ophalen_Uren_Exit:

    Set wbVan = Nothing
    Set wbNaar = Nothing
    
    Exit Sub

Ophalen_Uren_err:
    MsgBox Err.Description
    
    GoTo Ophalen_Uren_Exit

End Sub

Wigi
 
Wigi,

Jouw voorstel zowel in de routine als in Macro1 opgenomen, maar dan krijg ik de boodschap 'Objectvariable With niet ingesteld'.
Ik zou niet weten waar dat nu weer aan ligt.

Buiten dat: in Marco1 wordt het BestVan geopend, maar in de routine versie niet!!!

Er is dus schijnbaar nog steeds een verschil tussen deze beide. Kan het misschien aan de Dir opdracht liggen?

Wim
 
Code:
Sub Macro1()

    Const c0 As String = "EM67ZI20080936"
    
    On Error GoTo Ophalen_Uren_err
    
    Dim BestVan As String
    
    Dim wbVan As Workbook
    Dim wbNaar As Workbook
    
    BestVan = "L:\urenstaten Ordina\" & c0 & ".xls"
    
    Set wbVan = Workbooks.Open(BestVan)
    Set wbNaar = ThisWorkbook
    
    wbVan.Worksheets("Blad1").Range("B10:K27").Copy wbNaar.Worksheets("Weekdatatest").Range("A1")
    wbVan.Close True

Ophalen_Uren_Exit:

    Set wbVan = Nothing
    Set wbNaar = Nothing
    
    Exit Sub

Ophalen_Uren_err:
    MsgBox Err.Description
    
    GoTo Ophalen_Uren_Exit

End Sub
 
In post # 24 staat trouwens een foutje van mij. Er staat 2 keer onder elkaar

Code:
Set wbVan = ...

Waarschijnlijk heeft dat ook voor een deel van de problemen gezorgd.
 
E.e.a. resulteert nog steeds in de zelfde boodschap als in post #25.

ik ga het erg veemd vinden wat hier allemaal gebeurt.
 
Laatst bewerkt:
Zet de regel

Code:
    On Error GoTo Ophalen_Uren_err

in commentaar.

Ga met F8 stap voor stap door de code.

Op welke regel komt er een foutmelding?
 
Zet de regel

Code:
    On Error GoTo Ophalen_Uren_err

in commentaar.

Ga met F8 stap voor stap door de code.

Op welke regel komt er een foutmelding?

Uiteraard krijg ik geen foutboodscahp meer maar de Sub stop executing in
Code:
    wbVan.Worksheets("Blad1").Range("B10:K27").Copy wbNaar.Worksheets("Weekdatatest").Range("A1")
Er gebeurt dan helemaal niets meer (zelf F8 werkt niet meer).
 
Hoe kan dat nu dat je geen foutboodschap krijgt als je met F8 door de macro stapt?

Het stappen met F8 gaat normaal totdat ik op de bewuste regel kom. Daarna stopt alles alsof ik niet aan het stappen ben.Snap ik ook nix van.
 
En heb je al eens geprobeerd om één of andere simpele msgbox erin te zetten en die regel met Copy eruit te halen?

Bvb

Code:
MsgBox wbVan.Worksheets("Blad1").Range("B10:K27").Cells.Count

Wat geeft dat? Zowel met F8 als het volledig laten lopen met F5.
 
Code:
Sub Macro1()

    Const c0 As String = "EM67ZI20080936"
    
    On Error GoTo Ophalen_Uren_err
    
    Dim BestVan As String
    
    Dim wbVan As Workbook
    Dim wbNaar As Workbook
    
    BestVan = "L:\urenstaten Ordina\" & c0 & ".xls"
    
    Set wbVan = Workbooks.Open(BestVan)
    Set wbNaar = ThisWorkbook
    
    wbVan.Worksheets("Blad1").Range("B10:K27").Copy wbNaar.Worksheets("Weekdatatest").Range("A1")
    wbVan.Close True

Ophalen_Uren_Exit:

    Set wbVan = Nothing
    Set wbNaar = Nothing
    
    Exit Sub

Ophalen_Uren_err:
    MsgBox Err.Description
    
    GoTo Ophalen_Uren_Exit

End Sub

Als ik deze code toepas krijg ik nu een foutboodschap dat 'Onjectvariabele of blokvariabele With is niet ingestelt'.

ook de laatste tip van Wigi geeft dus geen resultaat door deze foutboodschap.
 
Wat krijg je als je dit uitvoert:

Code:
Sub Macro1()

    Dim wbVan As Workbook
    
    Set wbVan = Workbooks.Open("L:\urenstaten Ordina\EM67ZI20080936.xls")
    
    MsgBox wbVan.Worksheets("Blad1").Range("B10:K27").Address

End Sub

Simpeler kan ik het echt niet meer maken.

Wigi
 
Wat krijg je als je dit uitvoert:

Code:
Sub Macro1()

    Dim wbVan As Workbook
    
    Set wbVan = Workbooks.Open("L:\urenstaten Ordina\EM67ZI20080936.xls")
    
    MsgBox wbVan.Worksheets("Blad1").Range("B10:K27").Address

End Sub

Simpeler kan ik het echt niet meer maken.

Wigi

Wigi,

Inderdaad simpeler kan het niet en het werkt deels ook.
Als ik Macro1 uitvoer dan krijg ik keurig een boodschap nadat het bestand is geopend.
Als ik echter de zelfde opdrachten uitvoer via de Functie dan krijg ik geen enkele boodschap terwijl het lijkt alsof de opdrachten gewoon worden uitgevoerd (geen foutboodshappen).
Omdat het allemaal een beetje ondoorzichtig wordt heb ik een extract gemaakt van mij bestand en ook twee bestandjes met de op te halen data.
Als je e.e.a. wilt uitproberen moeten de twee te lezen bestanden wel ergens staan waar de macro naar verwijst. Nu staan ze in de macro op "D:\urenstaten Ordina\..." maar ik weet niet waar ze bij jou komen te staan.

Als je nu via Macro/Uitvoeren Macro1 opstart dan krijg je keurig een melding $B$10;$K$27.
Als je echter Ophalen_Uren (c0) aanroept (vernieuwen of zoiets) vanuit Werkblad Controlestaat en je gaat door de functie en sub stappen (F8) dan zie je wel dat de opdrachten worden geraakt (ze worden geel) maar er gebeurt helemaal niets.

Hopelijk geeft mijn bijlage een beter zicht op het probleem dat hier bestaat.

Wim
 

Bijlagen

Als je echter Ophalen_Uren (c0) aanroept (vernieuwen of zoiets) vanuit Werkblad Controlestaat en je gaat door de functie en sub stappen (F8) dan zie je wel dat de opdrachten worden geraakt (ze worden geel) maar er gebeurt helemaal niets.

Hoe doe je dat precies?

Want je moet weten dat een functie niet alles kan wat een Sub wel kan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan