Bestand openen op basis van naam in een cel

Status
Niet open voor verdere reacties.

Ivanhoes

Gebruiker
Lid geworden
6 jun 2015
Berichten
67
Hoi mensen,

Ik wil graag via vba vanuit het bestand HOOFDMENU het bestand INVOER UREN openen en later sluiten
en in de tussentijd een gebied kopiëren vanuit HOOFDMENU naar INVOER UREN.

Geen probleem. Daar heb ik een code voor. Zie hieronder of in het bestandje.

Wat ik echter ook wil is dat het openen van dat bestand gebeurt aan de hand van de waarde in een bepaalde cel(len).
Deze cel bevindt zich op het tabblad Padnamen. In de betreffende code heb ik dus het volledige pad staan, maar ik wil
daarvoor eigenlijk de cel-inhoud hebben vanuit het tabblad Padnamen.
De bedoeling is dat ik later alleen de cel hoef aan te passen en niet verschillende macrocodes.

Heeft iemand hier een oplossing voor? Alvast bedankt!

Code:

Code:
Sub macro1()
'
' Macro1 Macro
'

'

Dim wb As Workbook

Application.ScreenUpdating = False

    On Error Resume Next
    Set wb = Workbooks("INVOER UREN.xlsm")
    On Error GoTo 0
    
    If wb Is Nothing Then
        Set wb = Workbooks.Open("C:\Documents\INVOER UREN.xlsm")
    Else
    End If
    
Workbooks("HOOFDMENU").Sheets("NIEUW").Activate
Workbooks("INVOER UREN").Sheets("INVOER UREN HOOFDMENU").Range("A1:G10") = Workbooks("HOOFDMENU").Sheets("NIEUW").Range("A1:G10").Value
Workbooks("INVOER UREN").Save
Workbooks("INVOER UREN").Close
End Sub
 

Bijlagen

  • HOOFDMENU.xlsm
    14,2 KB · Weergaven: 41
Daarvoor kun je de eigenschap 'hyperlink base' gebruiken.

dan volstaat de code:

Code:
Sub M_snb()
    ThisWorkbook.FollowHyperlink "invoer uren.xlsx"
    ActiveWorkbook.Sheets("INVOER UREN HOOFDMENU").Range("A1:G10") = ThisWorkbook.Sheets("NIEUW").Range("A1:G10").Value
    ActiveWorkbook.Close -1
End Sub
 
Laatst bewerkt:
Bedankt voor de reactie!

Ik kan vandaag helaas niet testen, maar morgenochtend ga ik gelijk aan de gang.

Als het werkt zoals ik zou willen, zal ik de vraag op opgelost zetten. Jullie gaan horen.

Groetjes,
 
Snb,

Ik heb je code getest. Hyperlink gemaakt in het tabblad padnamen en deze laten verwijzen naar het betreffende bestand.
Werkt dus uitstekend! Eigenlijk had ik nu geen tijd, maar ik kon niet wachten.

Echter, nu loop ik tegen het volgende aan:

Nadat het bestand INVOER UREN vanuit het bestand HOOFDMENU is geopend, wil ik een (3e) bestand openen, namelijk het bestand TABELLEN.
De bedoeling is als volgt: Open bestand HOOFDMENU, kopieer gebied A1:G10 naar gebied A1:G10 van bestand INVOER UREN, kopieer daarna gebied
A1:G10 van bestand INVOER UREN naar gebied A1:G10 van bestand TABELLEN. Sluit daarna de bestanden INVOER UREN en TABELLEN.

Ik dacht het als onderstaand te kunnen doen, maar het probleem zit denk ik in "Thisworkbook". Foutcode 9: subscript valt buiten het bereik.
Ik heb geen idee wat ik hiervoor zou moeten doen.
Misschien dat je nog een suggestie voor mij hebt?

Code:
    ThisWorkbook.FollowHyperlink "INVOER UREN.xlsm"
    ActiveWorkbook.Sheets("INVOER UREN HOOFDMENU").Range("A1:G10") = ThisWorkbook.Sheets("NIEUW").Range("A1:G10").Value
    ThisWorkbook.FollowHyperlink "TABELLEN.xlsm"
    ActiveWorkbook.Sheets("TABEL UREN").Range("A1:G10") = ThisWorkbook.Sheets("INVOER UREN HOOFDMENU").Range("A1:G10").Value
 
activeworkbook.close -1 staat niet voor niets in mijn suggestie.

Zoek in dit forum of elders naar het verschil tussen activeworkbook en thisworkbook. Zonder begrip van de code blijft het Chinees.
 
Hoi Snb,

Naar aanleiding van je opmerking over This- en Activeworkbook:
Wat ik begrepen had betekent Thisworkbook daar waar de code draait en Activeworkbook de actieve werkmap.

In de laatste code zou de map TABELLEN ActiveWorkbook zijn en de map HOOFDMENU moet dan nog steeds Thisworkbook zijn.
Is mijn gedachtegang....

Voor de duidelijkheid:
Ik wil het hoofdmenu gebruiken om INVOER UREN te openen, daar worden berekeningen uitgevoerd en de uitkomsten
van die berekeningen wil ik dan verder naar de map TABELLEN, blad "TABEL UREN" kopiëren. En dat allemaal op de achtergrond,
zonder dat de map HOOFDMENU gesloten wordt.

Het eerste stuk gaat goed: Vanuit Hoofdmenu het openen van het bestand INVOER UREN en de Range A1:G10 van uit HOOFDMENU
naar INVOER UREN kopiëren.
Het tweede stuk gaat ook gedeeltelijk goed: met FollowHyperlink wordt keurig de map TABELLEN geopend.

Maar daarna:
Hoe kopieer ik vanuit Invoer Uren nu naar de sheet TABEL UREN van de map TABELLEN?

Het zou iets van onderstaande moeten zijn, maar ik krijg het niet goed.

Code:
    ThisWorkbook.FollowHyperlink "INVOER UREN.xlsm"
    ActiveWorkbook.Sheets("INVOER UREN HOOFDMENU").Range("A1:G10") = ThisWorkbook.Sheets("NIEUW").Range("A1:G10").Value
    ActiveWorkbook.Close -1
    ThisWorkbook.FollowHyperlink "TABELLEN.xlsm"
    ActiveWorkbook.Sheets("TABEL UREN").Range("A1:G10") = ThisWorkbook.FollowHyperlink "INVOER UREN.xlsm" & Sheets("INVOER UREN HOOFDMENU").Range("A1:G10").Value
    ActiveWorkbook.Close -1
 
Als je begrijpt wat de eerste drie regels doen, kun je de laatste 3 regels ook zo maken.
 
Hoi SNB,

Ik dacht het te snappen. De eerste drie regels in lekentaal, en verbeter mij alsjeblieft als ik fout zit:

Thisworkbook = Bestand genaamd "Hoofdmenu". Dit bestand blijft altijd Thisworkbook, want hiervandaan draait de macrocode.

1: Open het bestand "Invoer uren", aan de hand van de hyperlink die in Thisworkbook staat.
"Invoer uren" wordt Activeworkbook en "Hoofdmenu" blijft nog steeds Thisworkbook
2: Activeworkbook (Invoer Uren) neemt gegevens over van Thisworkbook (Hoofdmenu) (..... = ..... .Value)
3: Sluit Activeworkbook (Invoer Uren). Op dat moment wordt Thisworkbook tevens Activeworkbook

Dan:

4: Open bestand "Tabellen", aan de hand van de Hyperlink die in Thisworkbook staat. Thisworkbook is dan,
volgens mij, nog steeds het bestand "Hoofdmenu"
5: En dan gaat het volgens mij fout. Invoer uren is gesloten, maar dat kan ik natuurlijk wijzigen, door coderegel 3
(ActiveWorkbook.Close -1) te verwijderen
Vervolgens wil ik vanuit Invoer uren kopiëeren naar Tabellen. Maar dat zou dus niet kunnen, want op dat moment is Invoer Uren
niet Thisworkbook en ook niet ActiveWorkbook. En de code in regel 2 spreekt alleen over Thisworkbook en Activeworkbook,
terwijl er nog een derde bestand gebruikt moet worden! Iets als Thatworkbook, wat niet bestaat......

Echt: ik zoek mij een ongeluk, maar ik begrijp inderdaad niet hoe ik dan vanuit het tweede bestand (invoer Uren) iets moet kopiëeren
naar het derde bestand (Tabellen). En dat allemaal op basis van de celwaarden in het eerste bestand (Hoofdmenu)
 
Hoewel de eerste 3 regels van snb's suggestie uitstekend werken (waarvoor dank!),
krijg ik het niet voor elkaar om de eerste drie regels ook toe te passen op bestand
Invoer Uren en bestand Tabellen.

Wel is mij dit gelukt via een omweg. Zie de code hieronder, wat het uiteindelijk is geworden.

De oorspronkelijke vraag was echter o een bestand te openen via een waarde in een cel.
Die vraag is opgelost en daarom zal ik dit topic op opgelost zetten.

Nogmaals: bedankt voor de hulp!

Code:
    ThisWorkbook.FollowHyperlink "INVOER UREN.xlsm"
    ActiveWorkbook.Sheets("INVOER UREN HOOFDMENU").Range("A1:G10") = ThisWorkbook.Sheets("NIEUW").Range("A1:G10").Value
    ActiveWorkbook.Sheets("INVOER UREN HOOFDMENU").Range("A1:G10").Copy
    ActiveWorkbook.Close -1
    ThisWorkbook.FollowHyperlink "TABELLEN.xlsm"
    ActiveWorkbook.Sheets("TABEL UREN").Range("A1:G10").PasteSpecial
    ActiveWorkbook.Save
    ActiveWorkbook.Close
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan