[VBA, Word & Excel] Formule in cel plaatsen als formule

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

  • Jarcol
  • Registratie: Februari 2004
  • Laatst online: 28-08-2025
Hallo allemaal,

Het is mijn bedoeling om via een VBA script in Word 2003 een formule in een cel van Excel 2003 te plaatsen. Klinkt vrij simpel, maar nu komt de moeilijkheid.

Ik heb een script gevonden (klassenmodule: xlsconnection) waarmee ik gegevens in een excel-sheet kan plaatsen zonder dat het excel-bestand geopend hoeft te worden als normaal gesproken:
Visual Basic:
1
2
3
4
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

conn.Open "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq="C:\pad\excel.xls;ReadOnly=0;"


via de xlsconnection kan ik als volgt gegevens weg schrijven in het excel bestand:

Visual Basic:
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
33
    Dim Db As New XLSConnection
    Dim rs As Object
    Dim QueryStr As String
    Db.XlsOpen ("C:\pad\excel.xls")
    
    QueryStr = "SELECT * FROM [Sheet$]"
    
    Set rs = Db.Query(QueryStr)

    ' Bekijk output in het venster direct (Ctrl+G of Menu: Beeld --> Venster Direct)
    Debug.Print "Initiele situatie:"
    Do While Not rs.EOF
        Debug.Print rs("waarde").Value rs.MoveNext
      rs.MoveNext
    Loop
            
    QueyStr2 = "SELECT * FROM [Sheet$]
    Set rs2 = Db.Query(QueyStr2)
    
    'bestandsnaam = ActiveDocument.Path & "\" & bnaam & "`" & Format(TopVolgNo, "000") & ".doc"
    rs.AddNew
    rs!Waarde = "waarde"
    rs.Update
     
    Debug.Print "Situatie na INSERT:"
    
    QueryStr = "SELECT * FROM [Sheet$]"
    
    Set rs = Db.Query(QueryStr)
    
    Do While Not rs.EOF
        Debug.Print rs("waarde").Value rs.MoveNext
    Loop


Nu mijn vraag: hoe krijg ik het voor elkaar dat de waarde die achter 'rs!Waarde' komt te staan een waarde is dat de cel in excel als formule wordt ingevuld?

Ik heb al gevonden dat dat kan met FormulaR1C1 of FormulaArray, maar met deze opties moet ik ook een Range aangeven, en dat kan ik op de manier met xlsconnection niet (of ik zie iig niet hoe)!

  • Jarcol
  • Registratie: Februari 2004
  • Laatst online: 28-08-2025
Iemand?

Als jullie meer info nodig hebben, hoor ik t graag!

  • Jarcol
  • Registratie: Februari 2004
  • Laatst online: 28-08-2025
kick!

Verwijderd

nofi Jarcol, maar je dist weer een vrij bizar verhaal op. maar hier doet het er niet toe dat de geposte code vol fouten staat, want het is helaas niet mogelijk op die manier formules in een gesloten excelbestand te stoppen. het bestand zal geopend moeten worden waarna de formules worden aangebracht.
was er een reden waarom de bestanden perse gesloten dienen te blijven?

  • Jarcol
  • Registratie: Februari 2004
  • Laatst online: 28-08-2025
Verwijderd schreef op dinsdag 04 september 2007 @ 10:36:
nofi Jarcol, maar je dist weer een vrij bizar verhaal op. maar hier doet het er niet toe dat de geposte code vol fouten staat, want het is helaas niet mogelijk op die manier formules in een gesloten excelbestand te stoppen. het bestand zal geopend moeten worden waarna de formules worden aangebracht.
was er een reden waarom de bestanden perse gesloten dienen te blijven?
haha.. slechte eigenschap van me, I guess..

De reden dat de bestanden gesloten dienen te blijven is omdat meerdere mensen tegelijkertijd met het bestand kunnen moeten gaan werken

de code werkt wel btw, dus zo fout zal t wel niet zijn

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

De reden dat de bestanden gesloten dienen te blijven is omdat meerdere mensen tegelijkertijd met het bestand kunnen moeten gaan werken
Hmm. Ik heb het nooit geprobeerd, maar kan me zo indenken dat het ook op deze manier fout gaat als 2 mensen tegelijkertijd proberen te schrijven. Excel is geen database, gebruik daar iets anders voor.

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


  • Jarcol
  • Registratie: Februari 2004
  • Laatst online: 28-08-2025
F_J_K schreef op dinsdag 04 september 2007 @ 10:45:
[...]

Hmm. Ik heb het nooit geprobeerd, maar kan me zo indenken dat het ook op deze manier fout gaat als 2 mensen tegelijkertijd proberen te schrijven. Excel is geen database, gebruik daar iets anders voor.
Het werkt wel hoor, alleen krijg ik nu dus een uitgeschreven formule in een cel.. het zou mooi zijn als ik niet eerst op de cel de formule hoefde te activeren, maar het is ook geen ramp!

Verwijderd

Jarcol schreef op dinsdag 04 september 2007 @ 10:43:de code werkt wel btw, dus zo fout zal t wel niet zijn
niet zoals je die hier gepost hebt iig, want de got-codeparser valt over een paar syntaxfouten & daarnaast vallen er nog een aantal zaken op te merken.
maar goed dat is allemaal academisch want, in herhaling vallend, je kan met dao of ado niet rechtstreeks formules inbrengen in excel. je kan dus wel die formules als waardes inbrengen en daarna ze bij het openen 'activeren'. mss het snelste om dat te doen is bewerken->vervangen (ctrl+h), zoeken op =, vervangen met =
maw het = symbool met zichzelf vervangen. als je dat vervolgens automatiseert bij het openen van de werkmap dan heb je ongeveer de lelijkste hack op het noordelijke halfrond dat ongeveer doet wat je wenst.
Pagina: 1