Toon posts:

[MS EXCEL] opslaan als datum macro

Pagina: 1
Acties:
  • 1.650 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik hoop dat iemand me kan helpen, ik kom er zelf niet uit
Ik heb een macro die een blad met statistieken in een map moet opslaan. Alleen wil ik dat hij het bestand als of de datum van vandaag of de waarde overneemt van cell D4 waar de datum van vandaag in staat.
Dit is de macro die ik nu heb

Columns("A:R").Select
Range("A2").Activate
Selection.Copy
Workbooks.Add
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("D4").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Martijn\Bureaublad\.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
ActiveWindow.Close
End Sub

Alvast bedankt voor de hulp, heb hier en daar wel wat gevonden maar krijg telkens errors

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Verwijderd schreef op dinsdag 29 november 2005 @ 13:10:[knip]
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Martijn\Bureaublad\.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
[knip]
Alvast bedankt voor de hulp, heb hier en daar wel wat gevonden maar krijg telkens errors
Spreekt voor zich toch? Filename:="drive:\pad\bla.xls". Daar staat de naam die aan je bestand wordt meegegeven, dus daar moet je ook de datum of de waard evan D4 in wrotten, en dat doe je met het & teken. "drive:\pad\" & datumtekstje & ".xls".

Dat je errors krijgt is rot voor je, maar het helpt als je die ook vermeldt. ;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Sorry maar ben een Noob wat vba en macro's betreft. Vandaar dat het mij niet voor zichzelf spreekt.

Ik moet eerlijk zeggen dat ik je antwoord niet helemaal snap.

Mijn vraag is wat ik nu precies in de bestandsnaam moet zetten om het bestand als waarde van cel d4 op te slaan. Dus hoe "wrot" ik die erin?

ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Martijn\Bureaublad\& ? & ".xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

Ik krijg een Compileerfout, Syntaxisfout melding

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:54
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim bestandsnaam as string
bestandsnaam = "C:\Documents and Settings\Martijn\Bureaublad\" & DateTime.Date$ &  ".xls"
Columns("A:R").Select
    Range("A2").Activate
    Selection.Copy
    Workbooks.Add
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("D4").Select
    ActiveWorkbook.SaveAs Filename:= _
        bestandsnaam, FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWindow.Close
End Sub

eerste twee regels en saveas regel invoegen/aanpassen.
Overigens, [code=vb]type hier je code[/code], dat houdt het leven lekker overzichtelijk als je code plaatst.

[ Voor 9% gewijzigd door onkl op 29-11-2005 14:38 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Of je DateTime.Date$ wilt, of DateTime.Date is trouwens even uitproberen en afhankelijk van hoe je je datumformaat wilt hebben. Probeer het even uit om enig verschil te zien :)

VBW en Excel-n00b: je kunt wat er staat redelijk lezen alsof het gewoon engels is. Als je dan SaveAs Filename:= "C:\Documents and Settings\Martijn\Bureaublad\.xls" ziet staan kan je je hard afvragen of C:\Documents and Settings\Martijn\Bureaublad\.xls wel een bestand kan zijn. Zelfs zonder ooit Excel te hebben gestart ;)

En later: natuurlijk krijg je een Syntaxisfout, kijk eens naar het gebruik van aanhalingstekens en bedenk wat die doen. (Ze staan om strings=tekst heen). Zie trouwens evt. ook de inhoudsopgave van VBA F1. Of een goed boek voor beginners, komt altijd van pas :Y)

Bedenk trouwens waarom je eigenlijk SaveAs wilt doen. Wil je het document wel op slaan, en nog eens onder een andere naam ook? Blind voorbeelden of gegenereerde code overnemen werkt niet ;)

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


Verwijderd

Topicstarter
Hartelijk dank voor de hulp allemaal super!!! _/-\o_

Ik heb nu geen tijd meer om het uit te proberen maar dat gaat wel lukken. Morgen laat ik wel weten of het zo gaat.

Ik heb de code nu op .xls staan zodat hij hem als .xls opslaat. De naam pas ik dan handmatig aan voor datum.xls

Waar heb ik het voor nodig:
Ik ben verantwoordelijk voor de kamerverkoop in een hotel. Ik ben een Yield Management systeem aan het maken specifiek voor ons hotel. Ons MIS exporteerd iedere dag o.a. bezettingscijfers via SQL in een werkblad. Deze verwerkt een door mij gemaakt hoofd "programma" tot bruikbare statistieken en forecasts. Ik werk al heel lang met excel en met macro's. Maar zodra ik ze zelf handmatig moet aanpassen houdt mijn kennis op. Op het gebied van VBA ben ik dan ook een complete noob. Behalve HTML, JAVA en PHP heb ik geen programmeer vaardigheden. Maar kan ze wel lezen hoor.
Met de knop wil ik dat hij iedere dag de bezettingstanden van de komende 2 maanden onder de datum van vandaag opslaat. Dan kan ik volgend jaar zien hoe we er op een bepaald moment voorstonden. Dit helpt dan weer om een goede keuze qua prijzen enzo te maken.

@onkl Zal voortaan de juiste tags gebruiken

[ Voor 4% gewijzigd door Verwijderd op 29-11-2005 16:48 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Ik ben trouwens bang dat ik je vraagstelling nu niet helemaal meer snap.
Visual Basic:
1
2
3
4
5
6
7
8
Columns("A:R").Select ' selecteer A t/m R
    Range("A2").Activate 'selecteer A2
    Selection.Copy ' kopipeer
    Workbooks.Add ' voeg een werkboek toe
    Range("A1").Select 'selecteer A1
    ActiveSheet.Paste ' en plak
    Application.CutCopyMode = False ' haal Excel uit de copy/cut mode
    Range("D4").Select  'selecteer D4

Is die uitleg nu wat de bedoeling is (gegeven je Java kennis dat verder gaat dan dit)? Ik zie de relatie met de datum namelijk niet, zo doe je helemaal niets met D4 :P <-- Wat is dus precies de bedoeling?

Als ik moet gokken zou ik zeggen
Visual Basic:
1
2
3
4
5
bestandsnaam = "C:\Documents and Settings\Martijn\Bureaublad\" & DateTime.Date$ &  ".xls" 
ActiveWorkbook.SaveAs Filename:= _
        bestandsnaam, FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False 

Of de inhoud (Value) van Range "D4" ipv. Date natuurlijk, maar dat spreekt voor zich en dat werkt niet anders dat in Java (op het achterhalen van de value na dan, maar dat staat in de beschijving van het object Range).

Maar goed, ik ontkom er dus niet aan om te zeggen dat dit basiswerk is als je even de beschrijvingen er bij pakt. Zeker als je al Java kennis hebt. De basisstructuren zijn niet anders. Dus geef nog even een update van ej eigen code, geef aan waar je niet uit komt (maar serieus: de al door jou gevonden macro-opneemknop i.c.m. F1 op elk interessant woordje en je bent al een heel eind) en we helpen vast graag verder :)

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


  • sebastius
  • Registratie: September 2000
  • Laatst online: 21-08 12:46

sebastius

Laten we lekker link gaan doen

ActiveWorkbook.SaveAs ("linkerdeel_bestandnaam_" & Year(Date) & "_" & Month(Date) & ".xls")

Verwijderd

Topicstarter
Nogmaals dank voor de hulp. Het werkt nu precies zoals ik wil. De macro slaat het bestand nu netjes onder de datum van vandaag op.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 Columns("A:R").Select
    Range("A2").Activate
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Rows("13:19").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Rows("16:16").Select
    ActiveWindow.FreezePanes = True
    ActiveWindow.DisplayGridlines = False
    Range("A1").Select
    ChDir "C:\Documents and Settings\Martijn\Bureaublad\stats per dag"
 ActiveWorkbook.SaveAs ("stats_" & Year(Date) & "_" & Month(Date) & "_" & Day(Date) & ".xls")
    ActiveWindow.Close
    Range("A2").Select
End Sub 


Madoc gaat van het weekend maar eens naar de biep om een boek vba voor dummies te halen ;)

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Woei :) En welkom bij de dummy-club waar ik mezelf ook nog tot beschouw :+

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

Pagina: 1