Springen naar inhoud

VBA in Excel.


  • Log in om te kunnen reageren

#1

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 01 mei 2013 - 09:15

Ik heb een tab gespatieerde tekst file die ik keer op keer moet inlezen in excel omdat ik dit heel veel moet doen dacht ik eraan dit te automatiseren normaal programeerde ik vroeger in matlab maar op mijn werk is alleen vba (oftewel visual basic for application) beschikbaar dus ik zal me hier mee moeten redden.
Hoe pak ik dit aan? Ik heb volgende handelingen die ik anders handmatig uitvoer.



Vraag gebruiker naar files deze staan in alfabetische volgorde gesorteerd en moeten één voor één ingelezen worden dus de gebruiker krijgt één scherm en selecteert een aantal files.

Elke file wordt ingelezen en geplaats in een excel blad dus niet in een nieuwe werkmap telkens maar wel in één werkmap met telkens een ander blad.
Dit blad krijgt de naam van de bijbehorende file

Er wordt een kolom toegevoegd op de tweede plaats, en hierin komt een formule te staan die dan moet uitgevoerd worden voor de hele kolom.

De derde kolom heeft punten in plaats van komm's deze moeten vervangen worden door komma's

Dan wordt er een grafiek gemaakt (in ieder blad) met daarin de tweede en de derde kolom als x en y waarde.



Einde automatisatie de gebruiker neemt het terug over.
Hoe start ik hiermee? Moet ik dit in één procedure steken? En hoe handel ik mijn uiteindelijk resultaat over van een eerste excel file naar een ander? bestaat er een soort main in vba?
Iemand suggesties?
Groeten.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 01 mei 2013 - 11:08

Het is waarschijnlijk wel mooier om wat meer procedures te maken. Elke procedure die je aanmaakt kan je via het macro menu afzonderlijk uitvoeren, dus je kan inderdaad een soort main() maken die alles doet en zorgen dat die uitgevoerd wordt.

Wat je wil doen lijkt me zeker mogelijk. Je kan een commandbutton op je eerste werkblad zetten waar de user dan op kan klikken. Als op de knop geklikt wordt, dan kan je een FileDialog aan de user te tonen. Voor elke file die hij geselecteerd heeft doe je dan de nodige zaken en maak je een nieuw werkblad aan in het document.

De werkbladen zitten in een Collection met naam Sheets. Je kan daar werkbladen aan toevoegen en verwijderen. Als je een werkblad geselecteerd hebt dan kan je het Range object gebruiken om cellen aan te duiden. Bijvoorbeeld Sheets(1).Range("A1") = 5 of Sheets(1).Range("A1:A25") = 5.

Dat Range object bevat dan weer Cells die je ook individueel kan aanspreken via hun index of via een for each loop.

Voor grafieken is er ook een object, maar dat google je best eens want dat heb ik zelf nooit gebruikt.

#3

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 01 mei 2013 - 16:20

ik heb nog wat zitten zoeken omdat ik er echt niet aan uit geraak hoe die vba werkt.
en daarbij kwam ik uit op http://www.libxl.com/
een bib die toelaat vanuit c excel bestanden te lezen en te schrijven maar nu loop ik vast tegen het feit dat ik die niet werkend krijg in dev c.
Iemand ervaring met het inwerking stellen van nieuwe bib in deze compiler?

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 01 mei 2013 - 17:47

Heb je de verwijzingen naar de lib of dll en includes juist ingesteld? Kijk misschien ook eens naar de readme van de library. Dev C gebruikt normaal gezien de MinGW compiler.

VBA is op zich niet moeilijk maar als je modernere talen gewend bent kan het wel frustrerend zijn :P

#5

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 01 mei 2013 - 18:29

ik heb het zo ingesteld gekregen dat hij door alles gaat maar uiteindelijk geeft die een link error?

#6

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 01 mei 2013 - 18:50

ik heb het zo ingesteld gekregen dat hij door alles gaat maar uiteindelijk geeft die een link error?

Het is moeilijk om dit vanop afstand op te lossen maar heb je zeker de volgende dingen ingesteld?
  • include directory (zodat hij de header files vindt)
  • lib directory (zodat hij weet waar hij lib files kan vinden)
  • naam van de .lib die je wil gebruiken
Ik gebruik zelf Visual Studio dus ik weet niet waar precies je moet kijken.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures