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

activeren variabel werkboek

Status
Niet open voor verdere reacties.

wim1985

Gebruiker
Lid geworden
1 aug 2008
Berichten
94
Ik heb een macro waarin een bestand open met een variabele naam. Dit gaat goed. Dan moet ik een cel copieren naar een cel in het boek met de variabele naam.
In de code zou dan op de plaats van de ?????? de "sbestandsnaam" moeten staan.
Hoe moet dat?

gr Wim

Code:
Sub uren_invoeren_hand()

' Macro1 Macro
' De macro is opgenomen op 10-1-2009 door A.Otten

Application.ScreenUpdating = False
Application.DisplayAlerts = False
    
    With ActiveSheet
        sBestandsnaam = .Range("H12").Value
    End With
    
    With Workbooks
        .Open Filename:="\\DIRKJAN\SharedDocs\Urenregistratiesysteem\nacalculaties\" & sBestandsnaam & ".xls"
    End With
    
    Windows("urenregistratie.xls").Activate
    Sheets("invoerenuren").Select
    Range("H11").Select
    Selection.Copy
    Windows("??????").Activate
    Sheets("Materiaal").Select
    Range("Q2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    
Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
 
Wigi,

Bedankt voor je snelle reactie. Het is voor jou natuurlijk gesneden koek, maar ik kom daar gewoon niet uit. Ik dacht met mijn oplossing in de goede richting te zitten, maar blijkbaar dus niet. Misschien als de code werkend is dat ik wel zie hoe het werkt maar het is me net te moeilijk. Zou je alstublieft het stukje code voor me kunnen maken? Je zou me er erg mee helpen, en kan dan weer volop verder.

Gr Wim
 
In de code zou dan op de plaats van de ?????? de "sbestandsnaam" moeten staan.

Code:
    With ActiveSheet
        sBestandsnaam = .Range("H12").Value
    End With

    Windows("??????").Activate

En:

Code:
Windows(sBestandsnaam).Activate

is waarschijnlijk te simpel gedacht?
 
Code:
Sub uren_invoeren_hand()
  Windows("urenregistratie.xls").Sheets("invoerenuren").Range("H11").Copy
  Workbooks.Open "\\DIRKJAN\SharedDocs\Urenregistratiesysteem\nacalculaties\" & ActiveSheet.Range("H12").Value & ".xls"
  Activeworkbook.Sheets("Materiaal").Range("Q2").PasteSpecial xlPasteValues
End Sub

Vermijd activate en select in VBA, want overbodig.
 
Laatst bewerkt:
Vermijd activate en select in VBA, want overbodig.

Klopt.

Ik heb die suggestie gedaan om de TS zo weinig mogelijk te laten veranderen aan de bestaande code. Veel betere code staat in de link in post # 2.

Wigi
 
@ Wigi

sBestandsnaam had ik al geprobeerd en werkt niet.

@ SBN

De macro geeft fouten aan.


Ik heb op forums gelezen dat er een manier moet zijn dat exel geopende bestanden bijlangszoekt naar een sheet met de juiste naam en deze activeerd. Dat is eigenlijk wat er moet gebeuren.
Weet iemand hoe je dit dan in vba schrijft?
 
@ SBN

De macro geeft fouten aan.

Zeer nuttige feedback :eek:

Op welke regel? Welke foutmelding? ...

Ik heb op forums gelezen dat er een manier moet zijn dat exel geopende bestanden bijlangszoekt naar een sheet met de juiste naam en deze activeerd. Dat is eigenlijk wat er moet gebeuren.
Weet iemand hoe je dit dan in vba schrijft?

Ja, via een Workbook variabele, maar dat heb ik precies al eens proberen uitleggen...
 
Wigi

Direct al op de eerste regel

Windows("urenregistratie.xls").Sheets("invoerenuren").Range("H11").Copy

Geeft niet aan wat maar is geel

Gr Wim
 
Daar kan ik niet mee helpen, ik werk nooit met de Windows collectie binnen een Excel macro (in deze context dan toch).
 
Zou hier nog eens naar gekeken kunnen worden, want ik kom geen stap verder en heb al heel veel mogelijkheden die ik vindt op internet getest.

Gr Wim
 
En:

Code:
Windows(sBestandsnaam).Activate

is waarschijnlijk te simpel gedacht?


Bijna goed. Ik heb nog wat gestoeid ermee, en kwam erachter dat .xls er ook bij moest. Dan werkt het wel.

Code:
Windows(sBestandsnaam & ".xls").Activate

Bedankt!

Gr Wim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan