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)
VB6 Aanspreken van een Word Document
- meon
- 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
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?
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?
-
- 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 ( ) -- 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 )
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 ( ) -- 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 )
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
- netdata
- 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 ( ) -- 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
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."
- netdata
- 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?
-
- 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 )
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 )
-
- 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:
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:
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:
Als je die subroutine aanroept, wordt hetvolgende getoond in als output in die textbox:
(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 :
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.
(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.
Life is nice isn't it . 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 .
"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."