VB6 Aanspreken van een Word Document

Plaats reactie
Gebruikersavatar
netdata
Elite Poster
Elite Poster
Berichten: 1677
Lid geworden op: 16 aug 2005, 11:28
Twitter: wdhaeseleer
Locatie: Turnhout
Uitgedeelde bedankjes: 1 keer
Bedankt: 8 keer
Contacteer:

Ik heb een soort template gemaakt met word.
Ik bedoel ik heb een word voorzien van tekst. Deze veranderd nooit en is standaard. Op het word document heb ik form velden op aangemaakt en deze een goede naam gegeven.
Ik heb het formulier gelocked en opgeslagen.
Momenteel heb ik een VB form gemaakt in word zelf dat opstart als ik de .doc open. Deze gaat op basis wat ik heb ingevuld op het form deze invullen in de formfields in de doc zelf.
Dit werk goed, maar is niet zo proper.

Liever had ik dit gedaan door een VB6 applicatie te maken die op basis van een OLE object ofzo of via iets anders die doc file opent en dat ik de nodige variable kan geven voor de formfields.

Practisch vind ik niet veel en op het net ook niet direct. Daarom Userbase ;-)


is men vraag wat duidelijk? zoniet leg ik ze beter uit hoor

Ik upload ook even de huidige doc file, deze kan je openen met office XP en hoger, maar je moet wel eerst de macro functie aanzetten (staat standaard af)

via tools - macro - security (geloof ik)
Bijlagen
Copy of pakket instellingen.doc
(184.5 KiB) 163 keer gedownload
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Ik zou zeggen ... think out of the box :P

Ik ben eerder webbased bezig, dus ik zou zeggen: webbased zo'n pagina genereren en vanuit je browser afdrukken (al dan niet naar PDF)?
Maar op zich vind ik het al netjes wat ge gemaakt hebt. Wat is hier niet netjes aan volgens u?
cptKangaroo
Elite Poster
Elite Poster
Berichten: 2759
Lid geworden op: 18 dec 2004, 14:33
Locatie: 053 Aalst
Uitgedeelde bedankjes: 551 keer
Bedankt: 194 keer

Bedoel je misschien het volgende: een standalone .exe maken van dat formulier dat nu nog in Word zit, en dat automatisch het ingevulde document produceert na invullen van het formulier?

Als je'n programma hebt dat een .exe kan maken: Microsoft Visual Studio .NET bijvoorbeeld -- da's momenteel gratis voor een jaar, maar ik weet niet of dat ook geldt voor commerciële toepassingen ( :wink: ) -- dan is het gewoon een kwestie van een referentie toe te voegen die verwijst naar het Word 'COM' object, en dan heb je toegang tot de objecten die je normaal in Word gebruikt (bijvoorbeeld: Word.Document.FormFields )
wem
Premium Member
Premium Member
Berichten: 666
Lid geworden op: 24 mei 2004, 14:48

cptKangaroo schreef:da's momenteel gratis voor een jaar


De Express-versie meer bepaald, liggen nog heel grote verschillen tussen dit en zijn professionelere ;-)

Verder: hetgene ik niet zo "netjes" vind is dat op alle pc's waar je dat wilt gebruiken
a) Windows moet staan
b) Office XP of hoger moet staan
c) Macros moeten aanstaan

Het kan zijn dat je bepaalde voorkennis hebt over je doelpubliek, zodat je weet dat dat geen probleem vormt, maar algemeen gezien vind ik dat redelijk "storende" requirements, vooral C dan (en dan B, en dan A)

Een puur VB-programma zou b en c al overbodig maken, en webbased zoals hierboven voorgesteld, of Java zou A ook nog overbodig moeten maken.

In ieder geval kan ik je 'applicatie' niet gebruiken omdat ik enkel aan A kan voldoen ;-)
Gebruikersavatar
netdata
Elite Poster
Elite Poster
Berichten: 1677
Lid geworden op: 16 aug 2005, 11:28
Twitter: wdhaeseleer
Locatie: Turnhout
Uitgedeelde bedankjes: 1 keer
Bedankt: 8 keer
Contacteer:

cptKangaroo schreef:Bedoel je misschien het volgende: een standalone .exe maken van dat formulier dat nu nog in Word zit, en dat automatisch het ingevulde document produceert na invullen van het formulier?

Als je'n programma hebt dat een .exe kan maken: Microsoft Visual Studio .NET bijvoorbeeld -- da's momenteel gratis voor een jaar, maar ik weet niet of dat ook geldt voor commerciële toepassingen ( :wink: ) -- dan is het gewoon een kwestie van een referentie toe te voegen die verwijst naar het Word 'COM' object, en dan heb je toegang tot de objecten die je normaal in Word gebruikt (bijvoorbeeld: Word.Document.FormFields )


Yep dit is wat ik bedoel !

Maar met .NET ben ik niet zo handig, ik ben nog in Qbasic geschreven en is de logische opvolger VB6.
Dit lukt aardig.

Aan het gene wat je suggereerd dacht ik ook maar ik krijg het niet in de praktijk omgezet.

De hele bedoeling is op termijn 1 exe te hebben waar ik alle nodige documenten als soort templates in steek en met enkele drukknoppen alles tevoorschijn haal...

Alvast bedankt he mannen !
Indien iemand met ervaring enige suggestie ;-)
Gebruikersavatar
The_Borg
Elite Poster
Elite Poster
Berichten: 1759
Lid geworden op: 22 dec 2003, 20:25

Ik heb ze zelf nog maar enkel in .net 1.1 word en excel docs gegenereerd. Ik denk echt wel dat dit is wat je zoekt. Nu weet ik niet of je in VS 2005 al speciale namespaces hebt voor office documenten. In 1.1 gebruik je een soort extensie zodat je de vba namespaces kan gebruiken. Misschien dat iemand met ervaring in 2005 licht op de zaak kan werpen.
"We are the Borg. Lower your shields and surrender your ships. We will add your biological and technological distinctiveness to our own. Your culture will adapt to service us. Resistance is futile."
Gebruikersavatar
netdata
Elite Poster
Elite Poster
Berichten: 1677
Lid geworden op: 16 aug 2005, 11:28
Twitter: wdhaeseleer
Locatie: Turnhout
Uitgedeelde bedankjes: 1 keer
Bedankt: 8 keer
Contacteer:

The_Borg schreef:Ik heb ze zelf nog maar enkel in .net 1.1 word en excel docs gegenereerd. Ik denk echt wel dat dit is wat je zoekt. Nu weet ik niet of je in VS 2005 al speciale namespaces hebt voor office documenten. In 1.1 gebruik je een soort extensie zodat je de vba namespaces kan gebruiken. Misschien dat iemand met ervaring in 2005 licht op de zaak kan werpen.


Ik heb thuis nog wel ergen die .NET studio liggen, kga er dan precies maar is me experimenteren...
Maar heb wat schrik omdat ik op vele forums lees dat de overstap toch nog groot is... (niet?)

Maarja kan jij me dan helpen moest ik .NET gebruike?
NickG
Elite Poster
Elite Poster
Berichten: 1599
Lid geworden op: 13 sep 2005, 10:11
Uitgedeelde bedankjes: 46 keer
Bedankt: 51 keer

Idd, het kan allemaal heel mooi met vb.net (zolang office geinstalleerd is tenminste).

Tijdens mijn studies heb'k ooit zoiets moeten schrijven dat formulierkes genereerde in excel, word zal wel analoog zijn. Ik zit momenteel niet op mijn pc thuis en blijkbaar is er wat met mijn verbinding thuis want ik kan ook niet remote inloggen op mijn laptop :-s
Zal straks eens kijken of ik nog wat van code hierover liggen heb, mss maakt dat je wat wijzer dan (ikzelf weet niet meer just hoe het in elkaar zat, too much beer since last vb.net project :twisted: )
cptKangaroo
Elite Poster
Elite Poster
Berichten: 2759
Lid geworden op: 18 dec 2004, 14:33
Locatie: 053 Aalst
Uitgedeelde bedankjes: 551 keer
Bedankt: 194 keer

Het aanspreken van de formfields in VB.NET gebeurt op vrijwel dezelfde manier als in VBA, maar dus eerst een referentie zetten naar Word z'n object library: (in VB.NET:)

(1)-- Open een nieuw project, en voeg meteen de referentie toe:
menu :: Project>Add Reference>COM>"Microsoft Word ... Object Library"

De code van dat nieuwe project op dat moment:

Code: Selecteer alles

Public Class Form1


End Class

Voeg een textbox toe aan de form van het projectje


(2)-- Om het jezelf wat makkelijker te maken voeg je een shortcut naar de namespace van Word toe, typ hetvolgende erbij:

Code: Selecteer alles

Imports Microsoft.Office.Interop

Public Class Form1


End Class

Nu kan je wat makkelijker verwijzen naar objecten van Word, bijvoorbeeld:

(3)-- Een routine die de namen van alle formfields weergeeft en die routine wordt uitgevoerd bij het laden van de form:

Code: Selecteer alles

Imports Microsoft.Office.Interop

Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Call ToonAlleFormFieldNamen()
End Sub

Private Sub ToonAlleFormFieldNamen()
Dim zWORD As New Word.Application, zDOC As Word.Document
Dim zFF As Word.FormField, zSTR As String = ""

        zDOC = zWORD.Documents.Add("c:\z_zDoc\doc.doc")

        For Each zFF In zDOC.FormFields
            zSTR &= zFF.Name & vbCrLf
        Next

        TextBox1.Text = zSTR
        zDOC.Close()
        zWORD.Quit()

    End Sub
End Class

Als je die subroutine aanroept, wordt hetvolgende getoond in als output in die textbox:
Text1
Text2
Text3
Text5
Text4
url_ftp
user_ftp
pass_ftp
url
url_mail
user_mail
pass_mail


(4)-- Het rechtstreeks veranderen van de FormField tekst doe je op dezelfde wijze als in VBA. Hier worden alle formfields gevuld met hun eigen naam, en het resultaat wordt dan opgeslagen als resultaatdoc.doc :

Code: Selecteer alles

Imports Microsoft.Office.Interop

Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Call VulAlleFormFieldsMetHunEigenNaam()
End Sub

Private Sub VulAlleFormFieldsMetHunEigenNaam()
Dim zWORD As New Word.Application, zDOC As Word.Document
Dim zFF As Word.FormField, zSTR As String = ""

        zDOC = zWORD.Documents.Add("c:\z_zDoc\doc.doc")

        For Each zFF In zDOC.FormFields
            zFF.Result = zFF.Name
            zSTR &= zFF.Result & vbCrLf
        Next

        TextBox1.Text = zSTR

        zDOC.SaveAs("c:\z_zDoc\resultaatdoc.doc")

        zDOC.Close()
        zWORD.Quit()

    End Sub
End Class


Als je een individuele formfield wil aanpassen, doe je dat zoals in VBA:
zDOC.FormFields.Item("user_mail").Result = "[email protected]"
of op deze manier:
zFF =zDOC.FormFields.Item("user_mail")
zFF.Result = "[email protected]"

't Verschilt dus niet al te veel met VBA -- gewoon eerst die referentie zetten.
Gebruikersavatar
netdata
Elite Poster
Elite Poster
Berichten: 1677
Lid geworden op: 16 aug 2005, 11:28
Twitter: wdhaeseleer
Locatie: Turnhout
Uitgedeelde bedankjes: 1 keer
Bedankt: 8 keer
Contacteer:

SUUUUPER

Thx, ga ik eens uitproberen van zodra ik .net heb

Maar schiterend en alvast bedankt !
Gebruikersavatar
The_Borg
Elite Poster
Elite Poster
Berichten: 1759
Lid geworden op: 22 dec 2003, 20:25

Life is nice isn't it :P. Het is idd niet moeilijk, ik raad wel aan macro's te gebruiken voor extra functionaliteiten/opmaak en daar code uit te halen. Plain vba coden is echt te saai :p.
"We are the Borg. Lower your shields and surrender your ships. We will add your biological and technological distinctiveness to our own. Your culture will adapt to service us. Resistance is futile."
Plaats reactie

Terug naar “Development”