[vba] getal ophogen

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

  • WhiteAss
  • Registratie: November 1999
  • Laatst online: 03-07 06:53
Ik ben gisteren voor het eerst met MS Visual Basic aan de slag gegaan.

Ik heb een script gemaakt om gegevens uit excel bestanden naar 1 ander te copieeren. dit lukt mij.

nu is het zo dat ik dit zelfde wil doen voor 30 bestanden.

ik heb nu het volgende.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
    Workbooks.Open Filename:="C:\[b]08.xls[/b]"
    Application.Run "Persnlk.xls!Macro1"
    Range("[b]B12[/b]").Select
    Windows("[b]08.xls[/b]").Activate
    ActiveWindow.Close
    Windows("lijstDAT-IBZM2005-2006 test.xls").Activate
    
    Workbooks.Open Filename:="[b]C:\09.xls[/b]"
    Application.Run "Persnlk.xls!Macro1"
    Range("[b]B13[/b]").Select
    Windows("[b]09.xls[/b]").Activate
    ActiveWindow.Close
    Windows("lijstDAT-IBZM2005-2006 test.xls").Activate

Wat ik echter wil is dat ik dit niet voor elk bestand (01.xls t/m 99.xls) aan moet maken.

Kan ik het zo maken dat hier in het voorbeeld 08.xls nadat het behandeld is in 09.xls veranderd.
ditzelfde wil ik voor de rij (B12 wordt B13 enz.) vervolgens moet het bestand weer gesloten worden. (hier wordt steeds een bevestiging gevraagd om te sluiten is dit ook te vermijden)

als iemand mij kan helpen: geweldig!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 21-07 22:28

DataGhost

iPL dev

Misschien ben ik de enige die het nogal simpel vindt, maar je kan toch gewoon een variabele declareren en daar steeds 1 bij optellen? Lijkt me echt een basisoperatie die in elk boek als een van de eerste dingen wordt uitgelegd.

edit: en ubbcode werkt niet in een [code]-blok, tenminste, ik hoop dat dat je bedoeling was

[ Voor 19% gewijzigd door DataGhost op 08-11-2006 09:29 ]


  • WhiteAss
  • Registratie: November 1999
  • Laatst online: 03-07 06:53
Ik ben echter geen informatica student heb heb dus ook geen beschikking over zo'n boek.

vandaar dat de vraag waarschijnlijk/hopelijk zo simpel is ;)

hetvolgende moet dus eignelijk gedaan worden (voor zover dit nog niet duidelijk was).
code:
1
2
3
4
5
6
7
8
9
10
    Workbooks.Open Filename:="C:\[b]08.xls[/b]"
    Application.Run "Persnlk.xls!Macro1"
    Range("[b]B12[/b]").Select
    Windows("[b]08.xls[/b]").Activate
    ActiveWindow.Close
    Windows("lijstDAT-IBZM2005-2006 test.xls").Activate

    08+1
    B12+1
    08+1


maar dan op een manier die begrepen wordt door MS VB

[ Voor 59% gewijzigd door WhiteAss op 08-11-2006 09:35 ]


  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 11-07 00:42

RSpliet

*blink*

WhiteAss schreef op woensdag 08 november 2006 @ 09:31:
Ik ben echter geen informatica student heb heb dus ook geen beschikking over zo'n boek.

vandaar dat de vraag waarschijnlijk/hopelijk zo simpel is ;)
Nou, zoek dan eens naar "for-loop visual basic".

Schaadt het niet, dan baat het niet


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 17-07 09:58

TwoR

Gekleurde stippen

Je hebt geen boek, maar op internet is ook een hoop te vinden.

Je kan inderdaad zoals DataGhost zegt een var maken en deze ophogen om het volgende bestand te openen(bijvoorbeeld in een loop). En verder moet je denk ik even zoeken op internet naar een afsluit methode zonder vragen.

[ Voor 4% gewijzigd door TwoR op 08-11-2006 09:36 ]


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 21-07 22:28

DataGhost

iPL dev

Hoef je geen informatica-student voor te zijn hoor... Sterker nog, het enige wat ik van Visual Basic weet is dat het qua syntax enigzins lijkt op een andere taal die ik wel ken. Je zou even kunnen googlen op "visual basic" increment variable, of "visual basic" math operators, en resultaten als deze zijn volgens mij wel een zetje in de goede richting.

Zo'n boek kan je trouwens gewoon in de boekwinkel kopen, of je kan bij de bibliotheek even kijken.
F_J_K schreef op woensdag 08 november 2006 @ 10:25:
Informaticastudent? Dit heeft niets met informatica te maken. Het zou me verbazen als er niet meer sociologie- of psychologiestudenten zijn die meer met Excel en VBA doen dan informatiecastudenten ;)
En zoals Niesje zegt; dit is een van de meest basic zaken van een programmeertaal en dat is iets dat je onder de knie moet hebben voor dat je er mee aan het werk gaat. Anders wordt het echt niets.
Inderdaad heeft het er weinig mee te maken. Mij bekruipt echter het gevoel dat dit niet zomaar uit de lucht gegrepen is maar dat de TS mijn profiel heeft bekeken :+ en toen tot die conclusie is gekomen.

[ Voor 35% gewijzigd door DataGhost op 08-11-2006 11:29 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Hoe dan ook, de syntax van een toewijzing van een waarde aan een variabele is echt de absolute basis van een programmeertaal. Gelukkig zijn boekjes VBA voor beginners ook te koop / te leen voor niet informaticastudenten en is de meegeleverderde visual basic documentatie behoorlijk uitgebreid.

Prima dat je net begonnen bent met VBA, maar ik raad je dan wel aan een boekje naast je toetsenbord te leggen.

On topic. Strikt genomen kun je geen rekenkundige operatie loslaten op een tekst. Je lost het dus op door een numerieke variabele te declareren, die in een lusconstructie steeds met 1 te verhogen tot de gwenste waarde is bereikt en vervolgens die numerieke waarde om te zetten in een tekst in het door jou gewenste formaat:
code:
1
2
3
For var=0 to 99
      filenaam=format(var,"00\.xls")
next var


btw: de taal heet visual basic for applications --. titelfix

ad2: Hoe je die vraag vermijdt is zo in de help te vinden. Ik stel voor dat je even Algemene gedragsregels (Netiquette) doorleest: GoT is met name bedoeld voor problemen en vragen die níet zo terug te lezen in een helpfile, manual of internet.

[ Voor 17% gewijzigd door Lustucru op 08-11-2006 10:24 ]

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


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

offtopic:
Nog steeds geldt dat RML / UBB code (die [b]) niet gaat werken binnen een code block. En helaas, je hebt nog steeds niets gedaan in Visual Basic, omdat je nu bezig bent in Visual Basic for Applications ;)
WhiteAss schreef op woensdag 08 november 2006 @ 09:31:
Ik ben echter geen informatica student heb heb dus ook geen beschikking over zo'n boek.
|Informaticastudent? Dit heeft niets met informatica te maken. Het zou me verbazen als er niet meer sociologie- of psychologiestudenten zijn die meer met Excel en VBA doen dan informatiecastudenten ;)
En zoals Niesje zegt; dit is een van de meest basic zaken van een programmeertaal en dat is iets dat je onder de knie moet hebben voor dat je er mee aan het werk gaat. Anders wordt het echt niets.

Boek: http://nl.bol.com en een dag wachten? Maar F1 heeft in de VB editor een hele goede uitleg. Overweeg het serieus als je wat meer wilt doen in VBA. Een 'for dummies'-achitg boek is een goede manier om te beginnen als je het niet wilt doen zoals velen van ons: gewoon een paar maanden spelen voor je iets serieus doet. Of zoals in mijn geval (opa spreekt) als jochie code overtypen uit maandbladen en het gewoon lezen en doen tot je het snapt.

Anyway, gebruik variabelen (variables en / of gebruik een of twee for loops.

Met de variabele kan je vervolgens wat doen;
Pseudocode:
code:
1
2
3
4
teller = 1
bestandsnaam = "c:\bladiebla"& i & ".xls"
doe_wat
teller = teller + 1

Waar je natuurlijk rekening moet houden met het feit dat je bij getallen t/m 9 een 0 er voor wilt zetten en 10 t/m 99 niet. De manier van Niesje is dan mooier, maar lees dan wel de tekst onder F1 (of bijv. de uitleg die je via Google vindt) voor je de format functie gebruikt. Immers moet je het wel goed snappen voor je het goed kan gebruiken :)

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

Pagina: 1