05. august 2011 - 22:47Der er
14 kommentarer og 1 løsning
Brevskrivning med variable (Word og Excel 2010)
Der er en god flaske vin på højkant, til den der kan hjælpe med at løse mit problem.
Jeg anvender Office 2010 (Word og Excel).
Jeg skriver dagligt mellem 20-30 breve. Brevene er selvfølgelig standardbreve, hvor jeg ændrer noget af indholdet (bestemte ord), samt firmanavn (modpart) og adresse (nogle i udlandet). Det er ca. de samme 50 firmaer jeg skriver til. De forskellige ting jeg ændrer i brevene er:
Skadelidte. (navn + cpr nummer) Erstatningsbeløb. (DKK) Beløb jeg opkræver af modparten. (DKK) Nogle bestemte ord: Bortkommen, Beskadiget eller Forsinket. Lovgrundlag: Montrealkonventionen artikel 17 stk. 2 eller artikel 19. Dags dato. (format 5. august 2011) Sagsbehandler (kunne være 2 andre end mig)
Når jeg har valgt ovenstående ud fra nogle lister (f.eks?), skal standardbrevet genereres. Jeg konverterer det til pfd. og mailer det.
Jeg har nogle vage ideer med lister og brevfletning. På forhånd tak.
Havde tænkt på nogle lister hvor firmaerne er listet, dvs. jeg har en fil hvor alle oplysningerne hentes henne.
Yderligere en fil med lovgrundlaget, og en fil med skadens navn.
Skadenummeret, modpartens reference, skadelidte (navn + cpr)og de resterende skal være fritekst.
Jeg er ikke helt klar over hvordan det smartest skal kunne lade sig gøre. Om man udfylder ovenstående og der genereres et word dokument, eller man kan generere det i excel. Evt. ved tryk på en knap. Jeg er ude på dybt vand nu..
Som jeg kan se det er der 2 muligheder: 1) Brevfletning, hvor datafilen er Excel. Heri kan der såvel indsættes individuelle data som lister med standardtekster.
2) Indviduel opbygning via Userform, der såvel indeholder tekstbokse til individuelle data som lister med standardtekster, der kunne hentes fra Excel-filer, tabeller i Word eller fra en database eller...
Selve brevet er baseret på en Word skabelon med bogmærker. Disse udfyldes ved overførsel af data og evt.beregninger fra Userformen. Alt styret via VBA.
I hvilke typer filer findes de eksisterende data, som du nævner.
Filerne er pt. word dokumenter. Men vil kunne ændres til excel, eller kommaseparerede filer alt afhængig hvad der er nemmest (måske svært, der adresserne i udlandet er lange og uforståelige). Leder efter en simpel løsning, der dog samtidig sparer mig for mest tid ved samlebåndet :-)
Dim termXLS As Object Dim firmaXLS As Object Private Sub Cb_gemLuk_Click() gemDokument
lukFirma lukTerm
Unload UserForm1 End Sub Private Sub gemDokument() Rem som .DOCX ActiveDocument.SaveAs FileName:=systemSti & "ref_" & Me.Tb_skadeNr & ".docx"
Rem Som .PDF ActiveDocument.ExportAsFixedFormat OutputFileName:= _ systemSti & "ref_" & Me.Tb_skadeNr & ".pdf", ExportFormat:= _ wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _ wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _ Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _ CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _ BitmapMissingFonts:=True, UseISO19005_1:=False End Sub Private Sub Cb_minimerMaksimer_Click() minimerMaksimer End Sub Private Sub minimerMaksimer() If Me.Height = maxH Then Me.Height = minH Else Me.Height = maxH End If End Sub Private Sub Cb_reset_Click() Selection.WholeStory Selection.Delete Unit:=wdCharacter, Count:=1
Me.Com_modPart.SetFocus Me.Cb_udfør.Enabled = True End Sub Private Sub Cb_udfør_Click() ' If kontrolAfFelter = True Then ' Me.Cb_udfør.Enabled = False ' Me.Cb_reset.Enabled = True
opbygBrev minimerMaksimer ' Else ' Me.Cb_udfør.Enabled = True ' Me.Cb_reset.Enabled = False ' End If End Sub Private Sub Ch_visBogmærker_Click() skalBogmærkerVises End Sub Private Sub skalBogmærkerVises() If Me.Ch_visBogmærker.Value = False Then ActiveWindow.View.ShowBookmarks = False Else ActiveWindow.View.ShowBookmarks = True End If End Sub Private Sub SpinButton1_spinup() brevDato = DateAdd("d", 1, brevDato) Me.Lab_dagsDato = Format(brevDato, "d. mmmm yyyy") End Sub Private Sub SpinButton1_spindown() brevDato = DateAdd("d", -1, brevDato) d = Day(brevDato) d2 = Day(Now)
If d >= d2 Then Me.Lab_dagsDato = Format(brevDato, "d. mmmm yyyy") Else brevDato = Now End If End Sub Private Sub UserForm_activate() brevDato = Now Me.Lab_dagsDato = Format(Now, "d. mmmm yyyy")
hentDataTilCombobokse sprogix End Sub Private Sub hentDataTilCombobokse(sprogix) hentFraFirma hentFraTermer sprogix End Sub Private Sub hentFraFirma() Dim ræk As Long, firma As String Set firmaXLS = CreateObject("Excel.Application") firmaXLS.workbooks.Open systemSti & "Firmaer.xlsx" With firmaXLS For ræk = 2 To 500 firma = .Range("A" & ræk) If firma <> "" Then Me.Com_modPart.AddItem firma Else Exit For End If Next ræk End With End Sub Private Sub lukFirma() On Error Resume Next firmaXLS.Application.Quit Set firmaXLS = Nothing End Sub Private Sub hentFraTermer(sprog) Dim ræk As Long, årsag As String, lovgrundlag As String, sagsbehandler As String Set termXLS = CreateObject("Excel.Application") termXLS.workbooks.Open systemSti & "Termer.xlsx" With termXLS For ræk = 3 To 500 årsag = .Cells(ræk, 1).Offset(0, sprogix) If årsag <> "" Then Me.Com_årSag.AddItem årsag End If
lovgrundlag = .Cells(ræk, 4).Offset(0, sprogix) If lovgrundlag <> "" Then Me.Com_lovGrundlag.AddItem lovgrundlag End If
sagsbehandler = .Cells(ræk, 7).Offset(0, sprogix) If sagsbehandler <> "" Then Me.Com_sagsBehandler.AddItem sagsbehandler End If
If årsag = "" And lovgrundlag = "" And sagsbehandler = "" Then Exit For End If Next ræk End With
lukTerm End Sub Private Sub lukTerm() On Error Resume Next termXLS.Application.Quit Set termXLS = Nothing End Sub Rem <><><><><><><><><><><><><><><><><><><><><><><><><><><> Private Sub opbygBrev() Application.ScreenUpdating = False
Rem Gå til start af dokument Selection.HomeKey Unit:=wdStory Application.ScreenUpdating = True End Sub Private Function hentComværdi(comNavn) Dim cc As Control Set cc = UserForm1.Controls(comNavn) hentComværdi = cc.Value End Function Private Sub indsætBogmærke(bm, tekst) ActiveDocument.Bookmarks(bm).Select Selection.TypeText Text:=tekst End Sub
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.