[Excel 2003] Samenvoegen naar afdruk uit MySQL database

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

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ik probeer met Excel 2003 een samenvoegbestand te maken maar dit wil niet lukken zoals ik wil.
Ik gebruik (vanzelfsprekend) MySQL's ODBC driver om verbinding te maken met de database en de data op te halen. Dit gaat prima middels de database query mogelijkheid in Excel. Ik kan dus de gewenste gegevens ophalen. Die plaats ik in Blad1. Blad2 bevat hetgeen uitgeprint moet worden met (variable) ingevulde velden. De velden waar "<<WAARDE>>" in staat moeten gevuld worden. Dit gaat prima door b.v. "=Blad1!B1" in Blad2 in het veld waarvoor ik data uit Blad1 wil halen. Maar dan heb ik nog maar 1 waarde. Ik wil een Samenvoegreeks maken zoals dat in Word kan door "Afdruk Samenvoegen" te gebruiken.
Ik moet de samenvoeging dus ook kunnen filteren op bepaalde voorwaarden.

Afbeeldingslocatie: http://forum.interaddict.org/uploaded_files/1166005789_vakantiekaart.jpg


Ik krijg het maar niet voor elkaar. Ik ben vrijwel nieuw in Excel, dus misschien zie ik wel iets essentieels over het hoofd. Ik weet dat ik dit ook in Word zou kunnen doen, maar Word is zo ongelofelijk buggy i.c.m. de ODBC driver (data wordt vrijwel nooit goed gefilterd) dat ik het in Excel wil proberen. Wat tegelijkertijd ook allerlij nieuwe mogelijkheden bied.

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ik weet dat er nog net geen 24 uur voorbij zijn. Excuses voor mijn opdringerigheid.

Is er niemand die een antwoord heeft op mijn vraag? Ik zit er nogal om te springen. Ik heb uiteraard heel GoT al doorgespit. Ook http://office.webforums.nl/forum/ heeft geen antwoord waar ik iets mee kan.

Verwijderd

excel heeft geen samenvoegfunctionaliteit, dit zal je dus met VBA moeten oplossen, of toch word nog eens verder bekijken.
voor de verbinding kan je de query opnemen om zo de odbc & sql gegevens te bekomen.
voor het samenvoegen dien je zelf te overwegen welke oplossing je zal nemen, bv. telkens opslaan in nieuw bestand per record, record na record afdrukken, elk record op een apart tabblad in hetzelfde bestand, enz...

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ik schuw scripten absoluut niet. Maar heb nog geen ervaring met VB script, maar genoeg met andere scriptingtalen.
Het aantal af te drukken documenten is variabel (afhankelijk van het aantal database entry's). Hoe zou ik het aan moeten pakken om vanuit een hoofdocument nieuwe samengevoegde documenten te genereren, het liefst één documenten met tabs voor de individueel af te drukken vakantiekaarten (in dit geval)?

Wat je nu suggereerd is het enige wat in de buurt komt van wat ik wil en ook al ergens anders tegenkwam. Alleen werd dat topic gevult door een hoop mensen die allemaal al verregaande kennis van Excel hebben. Ik heb dat niet en ik snapte dus niet wat ik er mee aan moest.

Ik kan dat VB script wel lezen, maar heb geen flauw idee hoe ik het moet toepassen en waar ik een codereference kan vinden.

Verwijderd

link naar het topic waarvan je spreekt?
je maakt een blanco vakantiekaart op zoals je in de TS toont. daarvan telkens een kopie maken per record. maar het belangrijkste is eerst de mysql verbinding opzetten en de gewenste recordset bekomen, de rest is vrij eenvoudig. dus begin eens met het opnemen van de query voor de ODBC verbinding.

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
http://office.webforums.n...amenvoegen+afdruk&t=15644

Ik heb het verversen van de data opgenomen. Doe ik het dan goed? Sorry hoor, ik ben echt een complete Excel onbenul.

code:
1
2
3
4
5
6
7
8
9
Sub OphalenData()
'
' OphalenData Macro
' De macro is opgenomen op 14-12-2006 door bram.
'

'
    ActiveWorkbook.RefreshAll
End Sub

Verwijderd

em, nee, zoals je ziet zijn de dsn gegevens niet vermeld en heb je maar 1 onbeduidend statement. je moet de query volledig opnieuw opbouwen terwijl de recorder aanstaat om deze code te hebben.

  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 17-07 09:52

hufkes

nee, daar staat niet hufter!

Als je de gewenste data toch al in excel hebt, dan kun je toch gewoon de vakantiekaart in word maken en dan keurig samenvoegen? Kwestie van hetzelfde wat je nu gedaan hebt en dan in plaats van in een andere sheet gewoon in word de boel opzetten, merge aangeven vanuit de excel die je hebt en de juiste velden aangeven. Of denk ik nu te simpel?

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ah. Ok, dan lijkt dit er misschien meer op.

code:
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
27
28
29
30
31
32
Sub UserdataOphalen()
'
' UserdataOphalen Macro
' De macro is opgenomen op 14-12-2006 door bram.
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "ODBC;DATABASE=stichtingw;DSN=XXXXXX;OPTION=0;;PORT=0;SERVER=XXXXX;UID=XXXXXX" _
        , Destination:=Range("A1"))
        .CommandText = Array( _
        "SELECT pzbasis_0.voornaam, pzbasis_0.tussenvoegsel, pzbasis_0.achternaam, pzbasis_0.geb_dag, pzbasis_0.geb_maand, pzbasis_0.geb_jaar, pzbasis_0.dienst_dag, pzbasis_0.dienst_maand, pzbasis_0.dienst_jaa" _
        , _
        "r, pzbasis_0.pers_nr, pzbasis_0.functie, pzbasis_0.cluster, pzbasis_0.actief, pzbasis_0.werk_perc_1, pzbasis_0.werk_perc_2" & Chr(13) & "" & Chr(10) & "FROM stichtingw.pzbasis pzbasis_0" & Chr(13) & "" & Chr(10) & "WHERE (pzbasis_0.actief='1')" & Chr(13) & "" & Chr(10) & "ORDER BY pz" _
        , "basis_0.achternaam")
        .Name = "Query van STIWOVO"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveWindow.SmallScroll Down:=-40
End Sub



Dit lijkt te werken zoals zou moeten. Wat ik nu niet kan controleren is of deze macro standaard wordt uitgevoerd wanneer het document wordt geopend.

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
hufkes schreef op donderdag 14 december 2006 @ 13:57:
Als je de gewenste data toch al in excel hebt, dan kun je toch gewoon de vakantiekaart in word maken en dan keurig samenvoegen? Kwestie van hetzelfde wat je nu gedaan hebt en dan in plaats van in een andere sheet gewoon in word de boel opzetten, merge aangeven vanuit de excel die je hebt en de juiste velden aangeven. Of denk ik nu te simpel?
Dat zou misschien ook nog wel kunnen ja. Maar volgensmij maakt dat het niet makkelijker omdat er nog berekeningen worden uitgevoerd op een aantal individuele velden. Dat zou ik dan kunnen doen in het bestand wat de data ophaald misschien en dan pas samenvoegen. Maar ik doe het liever zo omdat we nu ook al die vakantiekaart in Excel hebben staan en het zowiezo leerzaam is om te weten hoe ik dit moet doen.

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Kan iemand me misschien helpen beter te begrijpen hoe ik kan zorgen dat het 'template' gecopieerd kan worden binnen het zelfde document en hoeik die copieen kan vullen met de data uit de data-tab?

Ik kom er echt niet uit. Ik kan hier nergens duidelijke documentatie over vinden.
Pagina: 1