Toon posts:

[Word2000] VBA error

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

Verwijderd

Topicstarter
Hallo,

Op m'n werk gebruikten we altijd een bepaalde huisstijl macro onder Word '97. Sinds we zijn overgegaan op Word2000 kunnen we deze macro niet meer gebruiken. Even als de sjablonen.

- Als ik de macro gebruik om een huisstijl document te genereren krijg ik de bovenste error.
- Als ik een sjabloon open krijg ik de tweede error.


Foutopsporing geeft:


Ik heb al op Google gezocht naar deze foutcodes, maar kom er verder niet uit. Wie kan mij verder helpen? Is het handig als ik nog stukjes code post?

[ Voor 15% gewijzigd door Verwijderd op 19-01-2020 12:19 ]


  • MrDry
  • Registratie: December 2001
  • Laatst online: 21-05 16:58

MrDry

Desperados!

Kijk eens bij je project properties. Ontbreken er geen verwijzigen?

Dat leidt vaak naar vreemde foutmeldingen.

Wij draaien hier de macro's op 97, 2000 en 2003. Nog nooit problemen mee gehad.

Quod licet lovi, non licet bovi


Verwijderd

Topicstarter
Waar moet ik dan precies kijken en op letten?? Ben echt een leek op dit gebied..

Bij het opstarten van de macro verschijnt trouwens ook de volgende foutmelding:
Afbeeldingslocatie: http://server6.uploadit.org/files/mtsarge-Fout3.jpg

[ Voor 3% gewijzigd door Verwijderd op 26-07-2004 13:13 ]


Verwijderd

Daar hebben we natuurlijk geen p**p aan, want dat is gewoon "sorry, maar nu even niet" berichtje dat voor gebruikers bedoeld is.

PrivateProfileString doet het blijkbaar niet. Dat is een property die gebruikt wordt om uit de registry te lezen of naar de registry te schrijven.

Waar de tweede fout vandaan komt weet ik zo niet, maar dat kan goed een gevolg zijn van hetzelfde probleem. Of misschien zijn het alletwee symptomen van een ander probleem.

Oplossing: jawel mensen, debuggen!

Stap door de code heen en kijk op welke plekken de code iets raars gaat doen.

Hoe doe je dat? Nou, met F8 en Shift-F8 kun je in en over statements stappen, respectievelijk. Vaak wil je IN functiecalls duiken die interessant kunnen zijn, maar OVER functiecalls waarvan je zeker weet dat ze werken.

En dan wachtes toevoegen (zoek maar ff in het menu), op een paar kritische variabelen, en kijken waar hun waarde veranderd wordt zodat-'ie niet meer klopt.

Als je weet waar en onder welke omstandigheden het fout gaat, heb je in 9 van de 10 gevallen ook meteen door waar de fout ligt en kun je 'm verbeteren.

Succes.

Verwijderd

Topicstarter
Ok, dan ga ik proberen te debuggen. Maar hoe kan verklaard worden dat die onder Word97 gewoon werkt en met 2000 ineens kuren krijgt?

Weet je met die knowledge misschien een andere (wellicht snellere, makkelijkere) oplossing voor dit specifieke probleem?

MVG

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 26 juli 2004 @ 13:55:
Ok, dan ga ik proberen te debuggen. Maar hoe kan verklaard worden dat die onder Word97 gewoon werkt en met 2000 ineens kuren krijgt?

Weet je met die knowledge misschien een andere (wellicht snellere, makkelijkere) oplossing voor dit specifieke probleem?

MVG
Was de word97 in dezelfde taal als word 2000 ?

dat wil wel eens problemen geven ( meer wel dan eens :( )

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
Ja, gewoon allebei Nederlands.

Hoe kan ik trouwens onder 2000 gaan debuggen? Vanuit 97 heeft natuurlijk geen zin, maar in 2000 krijg ik de melding:

Het project is vergrendeld.
Het project kan niet worden weergegeven.

Hoe ontgrendel ik? :?

PS.
Ik heb hier beschikking over Word 97 & 2000

[ Voor 10% gewijzigd door Verwijderd op 26-07-2004 14:01 ]


Verwijderd

Verwijderd schreef op 26 juli 2004 @ 14:00:
Ja, gewoon allebei Nederlands.

Hoe kan ik trouwens onder 2000 gaan debuggen? Vanuit 97 heeft natuurlijk geen zin, maar in 2000 krijg ik de melding:

Het project is vergrendeld.
Het project kan niet worden weergegeven.

Hoe ontgrendel ik? :?

PS.
Ik heb hier beschikking over Word 97 & 2000
Het kan zijn dat er een wachtwoord op is gezet. Als dat zo is zul je naar de oorspronkelijke ontwikkelaar toe moeten.

Welke menuopties je precies moet hebben weet ik zo niet; daarvoor zul je een beetje moeten zoeken.

Verwijderd

Topicstarter
Verwijderd schreef op 26 juli 2004 @ 14:14:
[...]

Het kan zijn dat er een wachtwoord op is gezet. Als dat zo is zul je naar de oorspronkelijke ontwikkelaar toe moeten.

Welke menuopties je precies moet hebben weet ik zo niet; daarvoor zul je een beetje moeten zoeken.
Het wachtwoord heb ik al gerecovered. Met 97 kan ik gewoon editen na invoer van password, maar met 2000 krijg ik dus deze melding... :?

Verwijderd

Dan kan ik je ook niet helpen. Ik ben maar een programmeur, geen alle-eigenaardigheden-van-Office-kenner™ :). Misschien dat iemand anders het hier weet, of anders iemand op Google (Groups).

Als laatste redmiddel kun je in Office 97 alle modules exporteren naar .bas files en ze in Office 2000 opnieuw importeren... :|

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Het kan zijn dat de 2000 versie van dat System object niet de PrivateProfileString property heeft, of dat het datatype niet hetzelfde is als in 97.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

PrivateProfileString wordt ook gebruikt om een ini-file uit te lezen. Ontbreekt er niet gewoon een *.ini file?

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


  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 05-05 13:41
Heb je het bestand waarin de VBA codes zich bevinden wel geopend?

Hetzelfde probleem had ik ook. Alleen codes in geopende documenten kunnen bewerkt worden.
Ik heb bijvoorbeeld normal.dot en in de map opstarten van word nog bedrijfsnaam.dot met de bedrijfsspecifieke code's. Deze kan ik alleen bewerken als ik bedrijfsnaam.dot open vanuit word. Dus niet vanuit de verkenner want dan maakt hij automatisch een nieuw .doc bestand.

Was ik maar een punt dan was ik het einde


Verwijderd

Topicstarter
Door de manier van Davelaar kan ik gewoon editen onder 2000. :)

@ Farlane
Hoe controleer ik dat?

@ Niesje
Waarom zou er ineens een .ini file missen als ik onder 2000 ga werken?
En waar zou die normaliter moeten staan? Ik kan nergens een .ini file vinden, maar in de code wel.

[Public Const HuisstijlIni = "Huisstl.ini"]

[ Voor 29% gewijzigd door Verwijderd op 26-07-2004 16:22 ]


Verwijderd

Laat de code rond de PrivateProfileString eens zien?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Verwijderd schreef op 26 juli 2004 @ 16:13:
@ Niesje
Waarom zou er ineens een .ini file missen als ik onder 2000 ga werken?
En waar zou die normaliter moeten staan? Ik kan nergens een .ini file vinden, maar in de code wel.

[Public Const HuisstijlIni = "Huisstl.ini"]
Bijvoorbeeld als de ini file onder application.path gezocht wordt (brr). tis maar net waar de programmeur zo'n ding denkt te moeten laten. Zoek je hd eens af en/of je netwerkshares.

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


Verwijderd

Als het goed is hoort hij in de Windows directory terecht te komen.

Dat is helemaal niet goed, maar dat is een ander verhaal :)

  • Mosselmaniac
  • Registratie: Juli 2004
  • Laatst online: 25-09-2025
nee, als er nergens een pad gedeclareerd is klopt het wat niesje zegt:

doe eens: MsgBox app.path

Dan krijg je de string waar hij standaard zoekt.

In die map moet je ini file staan, kopieer die en zet hem in dezelfde map als je word document van 2000.

Zoek anders inderdaad al je files na, op zoek naar dat ini bestandje en gooi hem in dezelfde direcotry als je word bestand.

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Mosselmaniac schreef op 26 juli 2004 @ 19:52:
nee, als er nergens een pad gedeclareerd is klopt het wat niesje zegt:

doe eens: MsgBox app.path

Dan krijg je de string waar hij standaard zoekt.

In die map moet je ini file staan, kopieer die en zet hem in dezelfde map als je word document van 2000.

Zoek anders inderdaad al je files na, op zoek naar dat ini bestandje en gooi hem in dezelfde direcotry als je word bestand.
En waar haal jij al die fantastische wijsheden vandaan want volgens mij klopt er niets van :X

- als er geen directory opgegeven is bij PrivateProfileString maar wel een file, dan zoekt hij wel standaard in de Windows directory (staat in de Word 2000 VBA Help file)
- app.path gaat sowieso niet werken want het is geen VB maar VBA
- dan zou het al Application.Path moeten zijn maar dat retourneert de directory waar de WinWord executable staat, normaal dus iets van "C:\Program Files\Microsoft Office\Office" en ook hiervoor brr ;)
- sowieso snap ik al niet hoe jij er bij komt dat het moet helpen als je de ini-file van de applicatie directory naar de template directory verplaatst, als er verder niets aan de VBA-code veranderd is, wat de TS trouwens niet specifiek vermeldt, dan moet je die ini-file juist niet verplaatsen

Sorry dat het misschien een beetje betweterig overkomt maar zoals jij het voorspiegelt stuur je de TS volgens mij de verkeerde kant op.

We kunnen verder wel van alles gaan roepen, maar zoals al eerder gemeld is het wat handiger als de TS de daadwerkelijke code van het aanroepen van PrivateProfileString post.

En TS, als je bij die fout bij het openen van een sjabloon weer op Foutopsporing klikt en als dan de regel "Application.Run ..." weer geel is, wat gebeurt er dan als je op F8 drukt, krijg je dan gelijk de melding weer of springt hij de macro BriefWizard in?
Want ik vind het wel een beetje vaag dat je daar een foutmelding krijgt terwijl er boven een "On Error Resume Next" staat.

Verwijderd

Topicstarter
Er zijn wel meerdere stukjes code rond de PrivateProfileString.

Ik heb de code onder het kopje 'Openen huisstijl ini's' even gekopieerd.
Lijkt me de code waar het fout gaat. Dit komt uit de Main module.

' Openen huisstijl ini's
Public Sub HaalHuisstijlInfo()
UserInfoIni = System.PrivateProfileString(HuisstijlIni, "Bestand", "Gebruikersbestand")
HuisStijlVan = "Huisstijl " & System.PrivateProfileString(HuisstijlIni, "Bedrijf", "Naam") & " * "
DbKoppeling = (UCase(Dir(Options.DefaultFilePath(wdStartupPath) & "\dbselect.dll")) = "DBSELECT.DLL")
End Sub

Als het handig is dat ik andere stukjes code post, plz let me know!

@ Niesje
Ik heb alle networkshares (+lokaal) doorgezocht op deze .ini maar niets gevonden.

@ Lister
Als ik dat doe krijg ik de volgende foutmelding:

Fout 13 tijdens uitvoering:
Typen komen niet met elkaar overeen

[ Voor 24% gewijzigd door Verwijderd op 27-07-2004 09:20 ]


Verwijderd

Hoe weet je zo zeker dat dat de code is waar het fout gaat? Heb je al je code getraced, en gekeken of HuisstijlIni de goede waarde heeft? (Zal wel, magoed)

Heb je al gecontroleerd of de INI bestaat en of de secties en waarden die nodig zijn (Dat is Gebruikersbestand= onder [Bestand] en Naam= onder [Bedrijf]) ook daadwerkelijk bestaan?

(Als je antwoord op één van deze vragen 'nee' zou zijn, post dat dan niet maar ga het controleren en post daarna 'ja' :))

Op het eerste gezicht zit er niet een overduidelijke fout in de code (kan ook bijna niet, aangezien hij het wel gedaan heeft onder Office 97), dus het zal een of ander vaag probleem zijn...

Overigens heb ik even geGoogled: er zijn nog meer mensen met dat probleem, en een oplossing die een paar keer aangedragen werd is: "jammer, maar dit werkt niet meer, nu moet je zelf routines gaan schrijven om INIs te lezen en te schrijven".

Dat kun je natuurlijk ook nog altijd doen, en die hele PrivateProfileString eruit mieteren.

[ Voor 46% gewijzigd door Verwijderd op 27-07-2004 09:24 ]


Verwijderd

Topicstarter
soz, maar ik zou niet weten hoe ik dat moet controleren.. Da's ook nog een lastig aspect bij dit probleem, ik heb geen ervaring met VBA.

Hoe zou ik deze INI kunnen herschrijven dan? Op welke manier vern**kt Word2000 deze macro..

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Ik zou zeggen zet een breakpunt en trace waar de fout optreedt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
farlane schreef op 27 juli 2004 @ 09:44:
Ik zou zeggen zet een breakpunt en trace waar de fout optreedt.
Hoe doe ik dat?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Voor dit soort vragen staan hele mooie stap voor stap instructies in de help. ;)
Dus loop eens stap voor stap door de code en kijk waar het precies mis gaat.

Anyway, de code die je postte veronderstelt een ini file in de windowsdirectory.
Verder zie ik op een paar plekken een verwijzing staan naar het Word startuppath, dus daar zullen ook wel wat bestanden staan die gekopieerd moeten worden.

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


  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 05-05 13:41
Misschien een gekke vraag maar hoe zijn de macro's geinstalleerd? Is er geen documentatie bij. Is word2000 over 97 heen gezet?

Misschien dat het al bij het begin mis gaat.

Was ik maar een punt dan was ik het einde


  • DynamicDreams
  • Registratie: Juni 2004
  • Laatst online: 24-04 10:57
Misschien een stomme reactie, maar weet je ZEKER dat de macro-beveiliging in de Word 2000 omgeving wél op laag staat? Was bij ons op 't werk namelijk ook het probleem bij de migratie.

12x JA Solar 375 Wp op oost-west met Goodwe GW3600D-NS

Pagina: 1