10. august 2002 - 08:23Der er
11 kommentarer og 1 løsning
"Fjernstyre" Word
Der der andre måder at fjernstyre Word (og Excel) på end via DDE. Jeg forestiller mig at man opretter et dokument - definerer nogle tekstområder mm. (ingen macroer) - og gemmer dokumentet. Via et andet program eller (genereret) scriptfil vil jeg så gerne kunne aktivere dokumentet og udfylde felterne, samt udskrive dokumentet eller redigere videre på det. Jeg ved godt at man via VB script kan lave en importkørsel i selve dokumentet, men jeg vil hellere have at dokumentet er så simpelt som muligt.
Jeg har et eksempel i Access97, hvor du har defineret bogmærker i Word. Selva data ligger i en Access97 db, herfra kan du så via VBA sende data til Word og gemme dokumentet.
Senere kan du finde posten i Access, og ved en kommandoknap, finde det word dokument der hører til posten.
Læg din e-mail hvis du vil have den. Men det skal være nu, idet jeg er på vej til arbejde, ellers er jeg først hjemme ved 19- tiden.
Det lyder spændende. Hvis du vil, så vil jeg meget gerne have sendt eksemplet også. Det lyder, som det er ideelt til brug i min lille forening til udsendelse af medlemsbreve, girokort mv.
Jeg udlæser følgende rapport/tekstfil fra vores ERP system: ------------------------- >Header1 Fupfirma Fupvej 1 9999 Fuppestrup >Header2 Dato;10.08.2002 Faktura;10000 >Content1 2.00;Gafler;5.00;10.00 5.00;Knive;2.00;10.00 >Footer1 20.00;5.00;25.00 ---------------------------- >xxx er tags Herefter propper jeg tekstfilen igennem et program der kan indsætte teksterne i et Worddokument og udskrive dem. Jeg kan godt selv lave programmet i Builder++ men hvilken snitflade er bedst at bruge i word/excel /Tommy
Denne makro ligger i Access og henter den post jeg står i over i Word og indsætter oplysningerne i formularfelter i en skabelone, der vælges via "Filer Ny" dialogboksen:
Public WordObj As Object
Sub KørWord()
Dim Msg, Style, Title, Help, Ctxt, Response, MyString Dim sti As String '
'Spørger om der skal skrives et brev Msg = "Vil du udskrive et brev" ' Define message. Style = vbYesNo + vbDefaultButton2 ' Define buttons. Title = "Udskriv fra Word" ' Define title.
Response = MsgBox(Msg, Style, Title) If Response = vbNo Then Exit Sub Else 'hvis der skal skrives et brev ' Dim WordObj As Object Set WordObj = CreateObject("Word.Application")
WordObj.Visible = True
sti = "C:\Documents and Settings\Dokumenter\"
On Error Resume Next WordObj.ChangeFileOpenDirectory (sti)
'Hvis stien ikke findes If Err Then sti = "c:\" WordObj.ChangeFileOpenDirectory (sti) End If
'Håndtering af om der er valgt et brev SStreng = "*.dot" With WordObj.Dialogs(wdDialogFileOpen) .Name = SStreng .Show dlgAnswer = .Name End With
'Hvis der er valgt et brev********************************************** If dlgAnswer <> SStreng Then Indsæt "bmkFornavn", Form_frmKunde.Fornavn Indsæt "bmkEfternavn", Form_frmKunde.Efternavn Indsæt "bmkAdresse", Form_frmKunde.Adresse Indsæt "bmkPostnr", Form_frmKunde.Postnr Indsæt "bmkBy", Form_frmKunde.Bynavn Indsæt "bmkNavn", Form_frmKunde.Fornavn
'Hvis der ikke er valgt et brev ElseIf dlgAnswer = SStreng Then WordObj.Quit Set WordObj = Nothing Exit Sub End If End If End Sub Sub Indsæt(Bogmærke As String, Indhold As String) If WordObj.ActiveDocument.Bookmarks.Exists(Bogmærke) = True Then WordObj.ActiveDocument.FormFields(Bogmærke).Result = Indhold End If End Sub
Ja kodeordet er COM - desværre ikke særligt godt beskrevet i Borlands hjælpetekster. Jeg har på samme måde fået fat i Word og kan godt indsætte tekster i tabeller og tekstruder via bogmærker. Jeg har stadig følgende problem; Sætter jeg et bogmærke i en tekstboks kan jeg ikke hoppe til den via GOTO (tekstrude virker OK)
f.eks. WordApplication1->Selection->GoTo(OleVariant wdGoToBookmark),EmptyParam,EmptyParam, OleVariant(StringToOleStr("Hoved1"))); WordApplication1->Selection->TypeText(StringToOleStr("Dette er en test"));
Hvis hoved1 står i en tekstboks får jeg fejl.
Har tabeller, tekstbokse mm. ikke et indexnummer eller feltnummer man kan benytte i stedet for bogmærker?
Jeg kan se at formularfelter aut. får en betegnelse!
Tænk for 2 dage siden anede jeg ikke hvad COM blev brugt til! //Tommy
Objectbrowseren i VBA er ret fed, særligt søgefunktionen det er lidt genialt! Sommetider er det lidt ærgeligt at man kun kan programmere i C/C++ hm... - men jeg har dog brugt WS (Windows Script) lidt så jeg bliver nok bedre med tiden. Det er for øvrigt ret sjovt at skrive DIM og GOTO igen, det er vist 20 år siden jeg sidst brugte det på min Commodore 64 med båndstation - tænk at man for 20 år siden kunne få programmer på en musikkassette... Hvor mange 60 minutters musikkassetter skal der mon til en Office XP - nej det dur vist ikke så skal CODA bare have afgift af det OGSÅ.
Tak til alle i andre på Eksperten der gør eksperten til et værktøj og levested for bl.a. os der til stadighed prøver at følge med... //Tommy
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.