VBA / Excel: als bestand bestaat dan openen.

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • mark1987vw
  • Registratie: April 2018
  • Laatst online: 10-10-2023
Mijn vraag

Ik heb een vraag die waarschijnlijk niet zo moeilijk is, maar ik krijg het niet opgelost.

Ik sla elke dag een bestand op wat correspondeert met een weeknummer in cel c1.
Dus op maandag open ik nieuw bestand genaamd "leeg_weekbestand", vul deze in, dan voer ik de macro uit en slaat die het bestand op onder "week 15.xlsm" in de vaste map c:/weekstaat. tot zover lukt dat allemaal

Nu wil ik een extra excel bestand maken waarin een macro staat die dit bestand opent doormiddel van een macro.
Alleen daar komt voor mij het lastige. is het nu nog steeds week 15 dan moet die het inmiddels bestaande bestand week15.xlsm openen. is het inmiddels week 16 dan moet die weer een nieuw bestand openen genaamd "Leeg_weekbestand" die ik dan vervolgens weer kan opslaan als nieuw bestand maar dit ik onder week 16.xlsm.

Sub Open_bestand()

If Dir(C:\weekstaat\" & "Week " & Range("C1") & ".xlsm) = vbNullString
Then

bnaam = "C:\weekstaat\" & "Week " & Range("C1") & ".xlsm"

Workbooks.Open bnaam

Else

bnaam2 = "C:\weekstaat\leeg_weekbestand.xlsm"

Workbooks.Open bnaam2


End If

End Sub


Ik hoop dat jullie een beetje snappen met wat ik bedoel. Want ik zal vast een hoop vergeten in m'n code maar ik ben er niet heel gedreven in.

Alvast super bedankt!

Relevante software en hardware die ik gebruik
Excel 2016

Wat ik al gevonden of geprobeerd heb
...

Beste antwoord (via mark1987vw op 23-04-2018 17:34)


  • Paul1987
  • Registratie: Oktober 2004
  • Laatst online: 21-05 13:04
Onderstaande even snel in elkaar geknutseld. Dit werkt bij mij in Excel 2016. De error afhandeling werkt natuurlijk niet als ook het te openen 'lege' bestand niet bestaat.

Visual Basic .NET: Module1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub test()
Dim wb As Workbook
Dim wb2 As Workbook

Dim ws As Worksheet
Dim bestand As String
Dim Pad As String

On Error GoTo ErrH

Set wb = Workbooks("Test.xlsm")

bestand = "week " & Format(Date, "ww") & ".xlsx" 'Bestandsnaam (weeknummer genereert VBA automatisch, LET OP hoofdletter gevoeligheid
Pad = "<schijflocatie folder waarin het bestand staat>" 'VOLLEDIGE MAP afsluiten met een enkele '\' en plaatsen tussen '"'>

Set wb2 = Workbooks.Open(Pad & bestand)

ErrH:
If Err.Number = 1004 Then
bestand = "Week leeg.xlsx"
Set wb2 = Workbooks.Open(Pad & bestand)
End If

'hier kun je de rest van je code neerzetten WB2 is vanaf hier het geopende workbook

End Sub

Is dit het beste antwoord? Dan hoor ik dat graag!

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Paul1987
  • Registratie: Oktober 2004
  • Laatst online: 21-05 13:04
Onderstaande even snel in elkaar geknutseld. Dit werkt bij mij in Excel 2016. De error afhandeling werkt natuurlijk niet als ook het te openen 'lege' bestand niet bestaat.

Visual Basic .NET: Module1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub test()
Dim wb As Workbook
Dim wb2 As Workbook

Dim ws As Worksheet
Dim bestand As String
Dim Pad As String

On Error GoTo ErrH

Set wb = Workbooks("Test.xlsm")

bestand = "week " & Format(Date, "ww") & ".xlsx" 'Bestandsnaam (weeknummer genereert VBA automatisch, LET OP hoofdletter gevoeligheid
Pad = "<schijflocatie folder waarin het bestand staat>" 'VOLLEDIGE MAP afsluiten met een enkele '\' en plaatsen tussen '"'>

Set wb2 = Workbooks.Open(Pad & bestand)

ErrH:
If Err.Number = 1004 Then
bestand = "Week leeg.xlsx"
Set wb2 = Workbooks.Open(Pad & bestand)
End If

'hier kun je de rest van je code neerzetten WB2 is vanaf hier het geopende workbook

End Sub

Is dit het beste antwoord? Dan hoor ik dat graag!


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

offtopic:
1) welkom!
2) let bij weeknummers op dat er wereldwijd verschillende varianten van bestaan.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Nu online
F_J_K schreef op woensdag 11 april 2018 @ 17:29:
offtopic:
2) let bij weeknummers op dat er wereldwijd verschillende varianten van bestaan.
when in doubt: ISO 8601

Acties:
  • 0 Henk 'm!

  • mark1987vw
  • Registratie: April 2018
  • Laatst online: 10-10-2023
Paul1987 schreef op woensdag 11 april 2018 @ 17:06:
Onderstaande even snel in elkaar geknutseld. Dit werkt bij mij in Excel 2016. De error afhandeling werkt natuurlijk niet als ook het te openen 'lege' bestand niet bestaat.

Visual Basic .NET: Module1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub test()
Dim wb As Workbook
Dim wb2 As Workbook

Dim ws As Worksheet
Dim bestand As String
Dim Pad As String

On Error GoTo ErrH

Set wb = Workbooks("Test.xlsm")

bestand = "week " & Format(Date, "ww") & ".xlsx" 'Bestandsnaam (weeknummer genereert VBA automatisch, LET OP hoofdletter gevoeligheid
Pad = "<schijflocatie folder waarin het bestand staat>" 'VOLLEDIGE MAP afsluiten met een enkele '\' en plaatsen tussen '"'>

Set wb2 = Workbooks.Open(Pad & bestand)

ErrH:
If Err.Number = 1004 Then
bestand = "Week leeg.xlsx"
Set wb2 = Workbooks.Open(Pad & bestand)
End If

'hier kun je de rest van je code neerzetten WB2 is vanaf hier het geopende workbook

End Sub
Volgens mij werkt dit prima.
Is dit volgens de Europese weeknummers? zoniet hoe kan ik dit aanpassen ?

Hartelijk dank in ieder geval voor je antwoord!

Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Nu online
waarschijnlijk...

Indien relevant: check even hoe het gaat in het jaar 2000, wat wèl een schrikkeljaar is (want deelbaar door 400). Daar heeft Excel nog wel eens moeite mee, meen ik me te herinneren.. (normaal gesproken zijn jaren deelbaar door 100 namelijk géén schrikkeljaar).. Geen idee of dat in de laatste versies nog steeds zo is.

Acties:
  • 0 Henk 'm!

  • Paul1987
  • Registratie: Oktober 2004
  • Laatst online: 21-05 13:04
mark1987vw schreef op maandag 23 april 2018 @ 17:36:
[...]


Volgens mij werkt dit prima.
Is dit volgens de Europese weeknummers? zoniet hoe kan ik dit aanpassen ?

Hartelijk dank in ieder geval voor je antwoord!
Volgens mij wel, maar je kunt via Google veel vinden over het gebruik van weeknummers. Je kunt ook opzoek naar de VBA functie van het ISO week nummer welke hierboven ook geopperd werd.

Is dit het beste antwoord? Dan hoor ik dat graag!


Acties:
  • 0 Henk 'm!

  • mark1987vw
  • Registratie: April 2018
  • Laatst online: 10-10-2023
Ik heb het al gevonden:

Ik heb dit in de code veranderd toen deed die het perfect!

Hartelijk dank voor alle hulp!

Weet niet precies of ik hem moet sluiten en waar dit dan zou kunnen maar anders mogen de moderators dit doen;)

[ Voor 32% gewijzigd door mark1987vw op 24-04-2018 18:04 ]


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

mark1987vw schreef op dinsdag 24 april 2018 @ 18:02:
Weet niet precies of ik hem moet sluiten en waar dit dan zou kunnen maar anders mogen de moderators dit doen;)
offtopic:
Sluiten is niet nodig, dat doen we alleen bij topics die niet voldoen aan de policy. Het topic zakt vanzelf wel weg. Misschien wil je, voor anderen met dezelfde vraag die ooit dit topic vinden, nog concreet aangeven wat je nog hebt veranderd aan de code :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)

Pagina: 1