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

Macro foutmelding

Status
Niet open voor verdere reacties.

vlotter33

Gebruiker
Lid geworden
9 jan 2014
Berichten
98
Beste,

op de macro (waarvan ik het 1e deel in bijlage heb gezet) krijg ik een foutmelding

"Microsoft Visual Basic
Fout 1004 tijdens uitvoeringBekijk bijlage Macro fout 1004.pdfBekijk bijlage Macro fout 1004.pdfBekijk bijlage Macro fout 1004.pdfBekijk bijlage 302317Bekijk bijlage 302319
Methode Open van Object Workbooks is mislukt"

Ik heb gecheckt dat het document op die locatie staat en dat klopt. Wat kan de andere oorzaak zijn van die foutmelding?
Het eerste document opent wel automatisch en dat staat ook op die R drive

alvast hartelijk dank voor uw hulp
 
Staat er toevallig ook iets in de Workbook_Open sectie van dat te openen document?
 
volledige macro

Bekijk bijlage Macro fout 1004 macro.pdf
In bijlage stuur ik u de volledige macro.
Deze macro heeft al een half jaar gewerkt. Het enige dat ik heb gewijzigd is CY vervangen door CZ in volgende (voor elk doc)
Range("A18:CZ1017").Select
Range("CZ1017").Activate
 
De aanpassing waar je het over had heeft geen invloed op alle Workbooks.Open aanroepen.

M.b.t. je probleem kan ik me er een aantal dingen bij voorstellen:
Bestaan de volgede mappen wel:
R:\Property Consultants\PIPELINE\ADM\
R:\Property Consultants\PIPELINE\Test\
R:\Property Consultants\PIPELINE\AS\
R:\Property Consultants\PIPELINE\DB\
R:\Property Consultants\PIPELINE\DV\
R:\Property Consultants\PIPELINE\FRT\
R:\Property Consultants\PIPELINE\PL\
R:\Property Consultants\PIPELINE\PM\
R:\Property Consultants\PIPELINE\TG\
R:\Property Consultants\PIPELINE\THL\
R:\Property Consultants\PIPELINE\VP\
R:\Property Consultants\PIPELINE\YB\
en kun je daar bij met lees- en schrijfrechten en staan ook de .xlsm bestanden die je in je macro gebruikt daar wel én zijn (een of meerdere van) die .xlsm bestanden momenteel niet in gebruik door anderen (kan ook jijzelf zijn, in een andere Excel venster...)

Heb je inderdaad lees- en schrijfrechten op die mappen maar ben je niet zeker of anderen (of jijzelf) mogelijk (een of meerdere) bestand(en) open hebben, vraag het na bij de systeembeheerder.
Sowieso lijkt me je vraag meer Windows/systeembeheer gerelateerd dan VBA gerelateerd (zie boven).

Dit is mijn 5 eurocent bijdrage. Hopelijk helpt het wat, en anders zou het mooi zijn dat anderen nog met tips komen.

Tijs.
 
Laatst bewerkt:
Ik vind de macro te knullig om serieus te nemen.
Er blijkt uit dat iedere moeite om er iets zinvols van te maken blijkbaar teveel gevraagd is.
En dan zou een gratis forum dat moeten oplossen ?
Zelfs het plaatsen van een excelbestand is blijkbaar overvraagd.
 
Bedankt voor je snelle feedback:
volgende heb ik net gecheckt:
*naam van document is correct
*path ook

Het document waarop de foutmelding is (dus dat die niet kan worden geopend) stond nergens open.

Het document waarvoor wordt gemeld dat die niet kan worden geopend is
*het document waaruit info wordt gekopieerd (dus geen schrijfrechten nodig)
*stond nergens open
*is het 3e document waaruit info wordt gekopieerd. De eerste 2 lukken wel
 
is het 3e document waaruit info wordt gekopieerd.
dus R:\Property Consultants\PIPELINE\AS\AS-new.xlsm

Kun je daar niet zinvol een backup van terug laten zetten (of evt. een "Vorige versie")? Informeer voor beide opties bij je systeembeheerder.

Tijs.
 
Mij lijkt dit wel voldoende. Wel even de naam van 'ADMIN-new.xlsm' aanpassen in 'ADM-new.xlsm'

Code:
Sub VenA()
  c00 = "ADM AS DB DV FRT PL PM Test TG THL VP YB"
  c01 = "R:\Property Consultants\PIPELINE\"
  For j = 0 To UBound(Split(c00))
    With GetObject(c01 & Split(c00)(j) & "\" & Split(c00)(j) & "-new.xlsm")
      Cells(j * 1000 + 10, 3).Resize(1000, 104).Value = .Sheets(1).Cells(18, 1).Resize(1000, 104).Value
      .Close 0
    End With
  Next j
End Sub
 
ik heb zonet het deel van AS eruit gehaald, maar dan krijg ik de foutmelding op het eerstvolgende document... Dus aan het document zelf AS kan het niet liggen.
Bij de eerste 2 document zijn er geen problemen.
Bedankt bij voorbaat voor jullie hulp.
Ik snap niet waarom die macro een half jaar wel heeft gewerkt en nu niet meer :-(

@VenA: wat doet die code?
De bedoeling van mijn macro is om de inhoud van al die docs te kopiëren naar 1 document.
 
In de macro heb ik de eerste 3 opdrachten eruit gehaald (dus kopiëren van data in 3 docs incl AS). Ik heb de macro opnieuw laten lopen, maar opnieuw kan 3e document niet worden geopend. Hoe komt het dat 3e doc niet kan worden geopend (lijkt dus onafhankelijk van het document)? Kan dit worden opgelost. Nogmaals hartelijk dank voor uw hulp
 
@Vena:
dus volgende wordt dan de macro?

Sub Collect()
'
' Collect Macro
'

'
Sub VenA()
c00 = "ADM AS DB DV FRT PL PM Test TG THL VP YB"
c01 = "R:\Property Consultants\PIPELINE"
For j = 0 To UBound(Split(c00))
With GetObject(c01 & Split(c00)(j) & "" & Split(c00)(j) & "-new.xlsm")
Cells(j * 1000 + 10, 3).Resize(1000, 104).Value = .Sheets(1).Cells(18, 1).Resize(1000, 104).Value
.Close 0
End With
Next j
End Sub

Windows("MANAGEMENT.xlsm").Activate
Range("C10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Windows("ADMIN-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("Anker18-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("AS-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("DB-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("DV-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("FRT-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("PL-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("PM-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("TG-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("THL-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("VP-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False

Windows("YB-new.xlsm").Activate
ActiveWindow.Close SaveChanges:=False
End Sub
 
Je zou even naar posting #2 van OctaFish kunnen kijken, oftewel dat het een timing probleem is (oftewel dat je pc 'te snel' is en dat dan (telkens) bij het derde bestand VBA 'in de stress schiet').

Als je je code (zoals aldaar gesuggereerd) doorloopt met F8 en je krijgt dan géén problemen, dan zou ik die vertraging gaan inbouwen in elk blok per bestand van je originele code.

Alternatief kan het zijn dat je (geheugen-)problemen krijgt met meer dan 2 bestanden open. Je zou je code kunnen uitbreiden met een Workbooks.close voor elk bestand, dus direct afsluiten zodra niet meer nodig en dán pas de volgende openen:
Voorbeeld (voor het eerste bestand uit je originele macro):
Code:
Workbooks("R:\Property Consultants\PIPELINE\ADM\ADMIN-new.xlsm").Close SaveChanges:=False

Tijs.
 
Laatst bewerkt:
Bedankt aan allen, die me hebben geholpen.

@VenA: ik ben een macro beginner. Dus dat ging boven mijn petje :) maar nu weet ik ook zeker dat er nog veel boeiends is om bij te leren. Dus bedankt
@dnties: het lijkt er inderdaad op dat het niet lukte om 3 docs open te laten, aangezien het telkens bij de 3e foutliep. Ik heb bovenstaande geupdate en nu werkt het.

fijne dag verder allemaal
en nogmaals hartelijk dank
 
Tot je dienst, fijn dat het geholpen heeft.

Graag nog wel je vraag de status opgelost geven, ajb.

Tijs.
 
ik ben een macro beginner. Dus dat ging boven mijn petje
da's wel duidelijk:p:d

Zet de code uit #8 in een nieuw leeg bestandje en probeer het eens zou ik denken.

Even een uitleg van de code:

Je hebt een aantal submappen deze heb ik in de variabele c00 gezet en een hoofdmap deze heb ik de variabele c01 gezet. Bijna alle bestandsnamen hebben de opbouw: 'naam submap' gevolgd door '-new.xlsm'
Door gebruik te maken van Split(c00) wordt er van c00 een array gemaakt. Deze array kan je dan met een lusje doorlopen. Zie dit linkje voor uitleg over array's http://www.snb-vba.eu/VBA_Arrays.html

Met deze regel wordt dus het bestand geopend:
Code:
With GetObject(c01 & Split(c00)(j) & "\" & Split(c00)(j) & "-new.xlsm")
Bij j = 1 wordt dus dit bestand geopend: 'R:\Property Consultants\PIPELINE\AS\AS-new.xlsm'. Je wilt steeds blokken van 1000 rijen en 104 kolommen kopiëren (Range("A18:CZ1017")) naar een vastgesteld gebied beginnend in C10 en elk volgend bestand 1000 rijen lager.

Dus bij j = 1 kom je uit op C1010 waar de gegevens moeten komen. Ipv copy is het direct toekennen van een bereik aan een ander bereik sneller alleen moeten beide bereiken dezelfde grootte hebben vandaar
Code:
Cells(j * 1000 + 10, 3).Resize(1000, 104).Value = .Sheets(1).Cells(18, 1).Resize(1000, 104).Value

Met .Close 0 wordt het bestand afgesloten zonder het op te slaan

Als het werkt, wat ik natuurlijk niet heb kunnen testen, werkt het vele malen vlotter dan al jouw macro-opnames.
 
@VenA
bedankt dat je al deze uitleg hebt uitgeschreven.
Zo wordt de 'macro-taal' me al een beetje duidelijker :)
 
Maar in plaats van tig keer 'split' uivoeren (wat vertragend werkt)

Code:
Sub VenA_snb()
  sn = split("ADM AS DB DV FRT PL PM Test TG THL VP YB")

  For j = 0 To UBound(sn))
    With GetObject("R:\Property Consultants\PIPELINE\" & sn(j) & "\" & sn(j) & "-new.xlsm")
      Cells(j * 1000 + 10, 3).Resize(1000, 104).Value = .Sheets(1).Cells(18, 1).Resize(1000, 104).Value
      .Close 0
    End With
  Next
End Sub

en alternatief
Code:
Sub VenA_snb()
  sn = split("ADM AS DB DV FRT PL PM Test TG THL VP YB")

  For each it in sn
    With GetObject("R:\Property Consultants\PIPELINE\" & it & "\" & it & "-new.xlsm")
      Cells(j * 1000 + 10, 3).Resize(1000, 104).Value = .Sheets(1).Cells(18, 1).Resize(1000, 104).Value
      .Close 0
    End With
  Next
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan