VBA code werkt enkel als 2e bestand nog niet open is

Status
Niet open voor verdere reacties.

marman

Gebruiker
Lid geworden
4 jul 2011
Berichten
17
Beste forum-leden,

ik heb zopas de stap naar VBA gewaagd.
Dat ik nog "a long way to go" heb is al duidelijk :-/
Mijn vraagje bij een zeer eenvoudige actie om de inhoud van één cel te kopiëren naar een cel in een ander bestand.

Ik heb twee excel-bestanden:
april2018.xlsm en week15.xlsx

In het eerste bestand heb ik volgende code geplaatst:

Sub ophalengegevens_Klikken()
Dim WBHoofd As Workbook
Dim WB1 As Workbook
Dim T As String

Set WBHoofd = Workbooks.Open("april2018.xlsm")
Set WB1 = Workbooks.Open("week15.xlsx")

WB1.Activate

T = WB1.Sheets("Blad1").Range("B3").Value

WBHoofd.Activate

WBHoofd.Sheets("Blad1").Range("C4").Value = T
End Sub

Deze code werkt als het bestand "week15.xlsx" nog niet open is bij het uitvoeren van de code.
Is het bestand wel geopend dan loopt het fout, tenminste dan wordt er geen waarde gekopieerd.
Weet iemand van jullie hoe dit komt?
Alvast bedankt!

vriendelijke groet,

Marc
 
Dan is het gebruik van 'Getobject' beter.

Je schrijft dat je de code hebt geplaatst in het eerste bestand, die staat dus open en heet dan in Vba gebruik 'Thisworkbook'.
Waarom zou je die ook nog een keer openen?

De code zou dan zo voor je moeten werken.
Code:
Sub[COLOR=#3E3E3E] ophalengegevens_Klikken()[/COLOR]
 with getobject(c:\users\blabla\map1\[COLOR=#3E3E3E]"week15.xlsx[/COLOR]")
   thisworkbook.[COLOR=#3E3E3E]Sheets("Blad1").Range("C4").Value = [/COLOR].[COLOR=#3E3E3E]Sheets("Blad1").Range("B3").Value[/COLOR]
 end with
End Sub

Ps. Gebruik a.u.b. codetags bij het plaatsen van codes.
 
Dankjewel Harry!

Zou na de "With" fuctie het bestand "week15.xlsx" ook op de achtergrond moeten sluiten?
Want dat blijft nu blijkbaar open staan.

Ik heb dit nu even zo opgelost, maar weet niet of dat the way to go is?
Code:
With GetObject("C:\Users\mama\Documents\papa\ADJ\week15.xlsx")
    
        ThisWorkbook.Sheets("Blad1").Range("C4").Value = .Sheets("Blad1").Range("B3").Value
        
 End With
 Workbooks("week15.xlsx").Close


Marc
 
Dat gaat zo Marc,
Code:
With GetObject("C:\Users\mama\Documents\papa\ADJ\week15.xlsx")
    
        ThisWorkbook.Sheets("Blad1").Range("C4").Value = .Sheets("Blad1").Range("B3").Value
     .Close  
 End With
 
Zo simpel kan het zijn ;-)
Veel dank Harry voor je snelle en degelijke hulp!

Marc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan