Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: hulp bij foutmelding vba  (gelezen 11592 keer)

0 leden en 1 gast bekijken dit topic.

Offline marijdp84

  • Nieuw lid
  • Berichten: 8
  • Hey, ik ben nieuw hier !
hulp bij foutmelding vba
« Gepost op: 11 januari 2021, 15:53:12 »
Hoi

zal proberen het probleem kort te omschrijven:

ik heb een macro om verschillende excell files in te lezen in 1 keer.
Ik moet dan op een knop klikken, dan leest de macro 6 verschillende excellfiles en voegt deze samen tot 1 excell file
hieruit kan ik dan een soort van jaarverslag maken
Gebruik dit al enkele jaren, maar nu plots leest die foute dingen in.
Ik zet de macro in de map met de files van 2020 , maar om 1 of andere reden haalt die excell files van 2013 op die in een totaal andere map staan.

Ik zie het probleem echt niet, kan iemand me helpen?

alvast bedankt

hieronder de macro:

Sub inlezen()
    sq = Array("Ongevallen 2020", _
               "boetes PV 2020", _
               "agressie 2020", _
               "Klachten 2020 Cars", _
               "Klachten 2020 Bus", _
               "Interne Verslagen 2020")


    Application.AskToUpdateLinks = False
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Lrow1 = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
    ThisWorkbook.Sheets(1).Range("A2").Resize(Lrow1, 15).ClearContents
   
    For i = 0 To UBound(sq)
        With Workbooks.Open(ThisWorkbook.Path & "\" & sq(i) & ".xlsx")
            lrow = .Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
            Lrow1 = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
            ThisWorkbook.Sheets(1).Range("A" & Lrow1 + 1).Resize(lrow - 1, 15).Value = _
            .Sheets(1).Range("A2").Resize(lrow - 1, 15).Value
            .Close False
        End With
    Next

    Columns.AutoFit

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.AskToUpdateLinks = True

End Sub





Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: hulp bij foutmelding vba
« Reactie #1 Gepost op: 11 januari 2021, 15:58:28 »
Hallo marijdp84,

Welkom op Oplossing.be  :)

We helpen je graag, maar ben je akkoord met de gebruikersvoorwaarden op dit forum?

Een van de belangrijkste zie onder mijn bericht staan.

Als je dezelfde vraag op een ander forum hebt geplaatst, meldt het dan, met een link naar dat forum.

Groeten,

:) SoftAid :)             



Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline marijdp84

  • Nieuw lid
  • Berichten: 8
  • Hey, ik ben nieuw hier !
Re: hulp bij foutmelding vba
« Reactie #2 Gepost op: 11 januari 2021, 16:18:14 »
Ik heb mijn vraag nergens anders gepost :)

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: hulp bij foutmelding vba
« Reactie #3 Gepost op: 11 januari 2021, 16:22:01 »
Hallo marijdp84,

 :thumbsup: fijn zo, dan gaan de helpers je zo snel mogelijk helpen  :).

Groeten,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: hulp bij foutmelding vba
« Reactie #4 Gepost op: 11 januari 2021, 16:45:30 »
Hallo marijdp84,

zelf ben ik geen expert, maar mogelijk kan je hier al eens naar kijken:

ThisWorkbook.Sheets(1).Range("A" & Lrow1 + 1).Resize(lrow - 1, 15).Value = _
            .Sheets(1).Range("A2").Resize(lrow - 1, 15).Value

Deze code geeft je een foutmelding 1004 "Door de toepassing of door object gedefinieerde fout"

hij opent (bij mij) wel het werkboek "Ongevallen 2020.xlsx" maar daar stopt het dan ook.
hij opent bij mij geen ander werkboek (van 2013) zoals bij jou!

Wie is hier in dit stukje code "ThisWorkbook" ? Je hebt het eerste werkboek uit je array sq geopend, en er een With voorgezet. Dus, volgens mij, is "ThisWorkbook" nu het werkboek "Ongevallen 2020.xlsx", en =
(With).Sheets(1).Range.....
daarin zeg je dan dat de waarde naar zijn eigen zelfde werkblad moet geschreven worden.

Nogmaals, ik ben echt geen expert, maar ik heb zo een "natte vinger" gevoel dat daar iets niet klopt.

Heb je hier voorlopig al iets aan?

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: hulp bij foutmelding vba
« Reactie #5 Gepost op: 11 januari 2021, 17:14:12 »
Hmms... nu ben ik in mijn eigen aan het praten, maar toch...

Je "lrow - 1" kan je in de problemen brengen als "lrow" rij 1 is of wordt. Dan resize je naar -1, wat niet kan....

Kan dat de oorzaak zijn?

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: hulp bij foutmelding vba
« Reactie #6 Gepost op: 11 januari 2021, 17:15:26 »
Hallo,

@ SoftAid,

Zou het kunnen dat er in het testbestand 'Ongevallen' dat je ongetwijfeld in de gauwte hebt neergezet weinig gegevens staan?
Die foutmelding is waarschijnlijk het gevolg van "lrow=1" wat resulteert in "Resize(0,15)" en dat gaat natuurlijk niet.
Je hebt minimum B2 nodig om die fout te vermijden.

@ marijdp84,

Dat maakt ook dat er meer aan de hand moet zijn wat we allicht van hier uit niet kunnen zien. Als er geen privacygevoelige gegevens in je bestanden staan (of je het ziet zitten deze te verwijderen) kan je die hier altijd posten, en dan kijken we met plezier verder. Het bestand met de macro en één inleesbestand volstaat.

Groeten,
pitufo

[Edit] : héhé, weer tegelijk hetzelfde gezien  :)
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: hulp bij foutmelding vba
« Reactie #7 Gepost op: 11 januari 2021, 17:21:52 »
@ SoftAid,
Zou het kunnen dat er in het testbestand 'Ongevallen' dat je ongetwijfeld in de gauwte hebt neergezet weinig gegevens staan?
Die foutmelding is waarschijnlijk het gevolg van "lrow=1" wat resulteert in "Resize(0,15)" en dat gaat natuurlijk niet.
Je hebt minimum B2 nodig om die fout te vermijden.
Klopt "als een zwerende vinger", in kolom B stond geen data. Maar zoals de code nu geschreven is houdt deze er ook geen rekening mee dat een kolom B wel eens leeg kan zijn. Of het test-bestand heeft ALTIJD hoofdings...
En "mea Culpa", irow - 1 is inderdaad row 0, niet row -1 ....

Groeten,

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: hulp bij foutmelding vba
« Reactie #8 Gepost op: 11 januari 2021, 21:47:03 »
marijdp84, leer debuggen met F5. Daarmee loop je regel voor regel door je code en kan je van elke variabele zien welke waarde die aanneemt. Dit werkt meestal heel verhelderend.
______________________________

Groet, Leo

Offline Haije

  • Excel-Expert
  • Volledig lid
  • *****
  • Berichten: 197
  • Geslacht: Man
  • Oplossing.be
Re: hulp bij foutmelding vba
« Reactie #9 Gepost op: 12 januari 2021, 09:15:30 »
@Redhead, moet dat niet zijn F8?
|-|aije

ik gebruik Office 2016 Professional Plus

Offline cow18

  • Ervaren lid
  • ***
  • Berichten: 340
  • Geslacht: Man
  • Oplossing.be
Re: hulp bij foutmelding vba
« Reactie #10 Gepost op: 12 januari 2021, 09:42:19 »
volgens mij zitten jullie al te ver en ligt het probleem tijdens het openen, afgaande op wat TS beschrijft
Citaat
Ik zet de macro in de map met de files van 2020 , maar om 1 of andere reden haalt die excell files van 2013 op die in een totaal andere map staan.
in de map met de files van 2020 zou moeten blijken uit Thisworkbook.path en dus heb ik daar die rode msgbox een keer ter controle tussen gezet. Krijg je daar nu zoiets als "c:\...\2020\Ongevallen 2020.xlsx", waarbij dat rode path bij jou wel anders zal zijn.
Citaat
  For i = 0 To UBound(sq)
      MsgBox ThisWorkbook.Path & "\" & sq(i) & ".xlsx"
   
   With Workbooks.Open(ThisWorkbook.Path & "\" & sq(i) & ".xlsx")
Dat zou willen zeggen dat je file met macro niet in de goeie "2020"-directory staat/stond toen je die opende.

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: hulp bij foutmelding vba
« Reactie #11 Gepost op: 12 januari 2021, 09:58:48 »
@ cow18,

Dat is inderdaad het allereerste waar een mens dan zou aan denken (deed ik trouwens meteen), alleen staat er in #1 letterlijk
Citaat
Ik zet de macro in de map met de files van 2020
dus grote kans dat ik weer te goedgelovig was...
M.a.w... het zal me geenszins verbazen als we van TS ofwel niets meer horen ofwel een bevestiging van dit vermoeden  ;D
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: hulp bij foutmelding vba
« Reactie #12 Gepost op: 12 januari 2021, 11:10:04 »
Hallo cow18,

Dat was inderdaad het eerste waar ik ook aan dacht, zeker als je dan zelf een map aanmaakt met daarin een bestand met de macro, en 6 bestanden die genoemd worden in de macro.

Dan valt de macro zeker niet over het ophalen uit een verkeerde map.
In mijn #4 zie je dat de macro wel niet te gebruiken is als er niets in kolom B staat.
als dat kan opgevangen worden, misschien gewoon met bijvoorbeeld een waarschuwing:
If lrow = 0 Then
 msgbox ("Er staat niets in kolom B van Werkblad "Blad1" van " & Lrow1)
End If
dan zal TS nog enkel het bestand met de macro in de goede hoofdmap moeten zetten.

Groeten,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline marijdp84

  • Nieuw lid
  • Berichten: 8
  • Hey, ik ben nieuw hier !
Re: hulp bij foutmelding vba
« Reactie #13 Gepost op: 12 januari 2021, 11:46:42 »
Hoi iedereen

wauw dankjewel voor de vele reacties :)

Ik kan jammer genoeg geen files online zetten wegens inderdaad teveel privacy details :/

F8 heb ik inderdaad al geprobeerd , maar ik krijg geen foutmeldingen meer.
Heb al geprobeerd om de map met de files op een andere locatie op te slaan hier, maar hetzelfde blijft zich voordoen. 1 file leest die fout in. (enkel de ongevallen van 2013 komen naar voor ipv die van 2020. de rest is wel juist)

ik zal alle mogelijkheden die hier worden opgegeven al eens uitproberen.

ik kan wel laten zien hoe mijn mapje eruit ziet. als dat een hulp is?


groetjes

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: hulp bij foutmelding vba
« Reactie #14 Gepost op: 12 januari 2021, 13:01:03 »
Citaat
enkel de ongevallen van 2013 komen naar voor ipv die van 2020. de rest is wel juist

Oesje, dat is nóg vreemderderderder  :D :D :D

Dan gissen we nog even verder: ben je zeker dat er niet per ongeluk gegevens van 2013 zijn terechtgekomen in een bestand dat 2020 heet?

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

 


www.combell.com