[VBA] Meerdere pics invoegen op bookmark

Pagina: 1
Acties:

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 10-05 11:07
Heb een Access db waar ik een locatie van een picture uithaal.

Resultaat is 3 locaties:

images\image001.png
images\image002.png
images\image003.png


Ben doormiddel van VBA in een .dot file bezig om een Word document te vullen. Dit gebeurt op de methode met de bookmarks.
Omdat ik meerdere regels uit de database haal gebruik ik deze code met een & " " om er voor te zorgen dat de 3 pictures in het document komen op de plek van de bookmark "Symbool" met een spatie ertussen.
code:
1
2
3
4
While Not rstSym.EOF
   .Bookmarks("symbool").Range.Text = .Bookmarks("symbool").Range.InlineShapes.AddPicture(rstSym.Fields("locatie"), LinkToFile = True, SaveWithDocument = False) & " "
   rstSym.MoveNext
Wend

Ik krijg de volgende foutmelding:

Run-time error '438'
Object doesn't support this property or methode


Wat vreemd is dat de eerste picture wel in het document komt.

Als ik deze code gebruik om te testen dan krijg ik de locaties in beeld:
code:
1
2
3
4
While Not rstSym.EOF
   .Bookmarks("symbool").Range.Text = rstSym.Fields("locatie") & " "
   rstSym.MoveNext
Wend


Het lijkt in de opbouw van mijn while-lus te zitten, maar ik kom niet verder.

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 08:55

sopsop

[v] [;,,;] [v]

code:
1
LinkToFile = True, SaveWithDocument = False

Dit staat in de aanroep van addpicture. Dit is wel erg lelijk. Doe dan gewoon:
code:
1
LinkToFile, SaveWithDocument

Of indien het geen booleans zijn:
code:
1
CBool(LinkToFile), CBool(SaveWithDocument)


En Qua je probleem, probeer dit eens:
Visual Basic:
1
2
3
4
While Not rstSym.EOF
   call .Bookmarks("symbool").Range.InlineShapes.AddPicture(rstSym.Fields("locatie"), LinkToFile, SaveWithDocument)
   rstSym.MoveNext
Wend

[ Voor 30% gewijzigd door sopsop op 08-03-2005 11:36 ]


  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 10-05 11:07
boppert schreef op dinsdag 08 maart 2005 @ 11:35:
code:
1
LinkToFile = True, SaveWithDocument = False

Dit staat in de aanroep van addpicture. Dit is wel erg lelijk. Doe dan gewoon:
code:
1
LinkToFile, SaveWithDocument

Dit werkt dus niet. Hier krijg ik een foutmelding.
Of indien het geen booleans zijn:
code:
1
CBool(LinkToFile), CBool(SaveWithDocument)

Het zijn wel degelijk booleans, dus helaas.

En Qua je probleem, probeer dit eens:
Visual Basic:
1
2
3
4
While Not rstSym.EOF
   call .Bookmarks("symbool").Range.InlineShapes.AddPicture(rstSym.Fields("locatie"), LinkToFile, SaveWithDocument)
   rstSym.MoveNext
Wend
Hier krijg ik een compilation error. Kan niet vinden in wat.

Verwijderd

MuddyMagical schreef op dinsdag 08 maart 2005 @ 11:14:
Heb een Access db waar ik een locatie van een picture uithaal.

Resultaat is 3 locaties:

images\image001.png
images\image002.png
images\image003.png


Ben doormiddel van VBA in een .dot file bezig om een Word document te vullen. Dit gebeurt op de methode met de bookmarks.
Omdat ik meerdere regels uit de database haal gebruik ik deze code met een & " " om er voor te zorgen dat de 3 pictures in het document komen op de plek van de bookmark "Symbool" met een spatie ertussen.
code:
1
2
3
4
While Not rstSym.EOF
   .Bookmarks("symbool").Range.Text = .Bookmarks("symbool").Range.InlineShapes.AddPicture(rstSym.Fields("locatie"), LinkToFile = True, SaveWithDocument = False) & " "
   rstSym.MoveNext
Wend

Ik krijg de volgende foutmelding:

Run-time error '438'
Object doesn't support this property or methode


Wat vreemd is dat de eerste picture wel in het document komt.

Als ik deze code gebruik om te testen dan krijg ik de locaties in beeld:
code:
1
2
3
4
While Not rstSym.EOF
   .Bookmarks("symbool").Range.Text = rstSym.Fields("locatie") & " "
   rstSym.MoveNext
Wend


Het lijkt in de opbouw van mijn while-lus te zitten, maar ik kom niet verder.
er lopen verschillende zaken fout:
LinkToFile = True, SaveWithDocument = False: de waarde van een parameter moet je natuurlijk instellen met := niet met enkel = (in werkelijkheid geef je nu de boolean door die het resultaat is van de vergelijking tussen linktofile=true, wat false zal opleveren! - de commentaar van boppert hierop is dus eigenlijk niet van toepassing)

.Bookmarks("symbool").Range.Text : het instellen van deze eigenschap zal tot gevolg hebben dat de bookmark verdwijnt, waardoor bij de volgende luspassage een fout zal optreden. je kan deze manier van werken dus enkel behouden als je daarna zelf de bookmark opnieuw instelt, ofwel voorkomt dat de bookmark verdwijnt. (zie terechte opmerking MuddyMagical : mijn opmerking klopt enkel indien de bookmark tekst overspant)

[ Voor 7% gewijzigd door Verwijderd op 08-03-2005 14:40 ]


  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 10-05 11:07
Verwijderd schreef op dinsdag 08 maart 2005 @ 13:45:
[...]


er lopen verschillende zaken fout:
LinkToFile = True, SaveWithDocument = False: de waarde van een parameter moet je natuurlijk instellen met := niet met enkel = (in werkelijkheid geef je nu de boolean door die het resultaat is van de vergelijking tussen linktofile=true, wat false zal opleveren! - de commentaar van boppert hierop is dus eigenlijk niet van toepassing)

.Bookmarks("symbool").Range.Text : het instellen van deze eigenschap zal tot gevolg hebben dat de bookmark verdwijnt, waardoor bij de volgende luspassage een fout zal optreden. je kan deze manier van werken dus enkel behouden als je daarna zelf de bookmark opnieuw instelt, ofwel voorkomt dat de bookmark verdwijnt.
Gevonden en ik kan mezelf wel voor mijn kop slaan!! :(
Ik heb = vervangen door := en heb nu geen problemen meer. (beetje basic ja...)

Dat de bookmark zou verdwijnen is niet waar. Ik heb deze methode ook al toegepast met een paar stukken tekst en die worden netjes geplaats. Ook mijn afbeeldingen werken nu fantastisch.

Iedereen wederom bedankt.
'Houston, problem solved!' _/-\o_

[ Voor 3% gewijzigd door MuddyMagical op 08-03-2005 14:04 ]