Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Imports System.ComponentModel Imports Word Public Class WordLib #Region "Deklarationen" Dim isactiv As Boolean Dim m_dokumenttypnr As Long Dim Dokument_To_Create As String Dim Dokument_To_Save As String Dim Dokument_Temp As String Dim Cursor_Positionieren As Boolean Dim IsProtected As Boolean Dim inEditMode As Boolean Dim DokumentFilename As String Dim dokudata As New edokadb.clsMyDokumentDaten() Dim Dokumentdaten As DataTable Dim DokumenTtyp As New edokadb.clsDokumenttyp() Dim Office_Vorlage As New edokadb.clsOffice_vorlage() Private WithEvents objWord As Word.Application Private WithEvents docWord As Word.Document 'IDV-Definitionen Private m_objdc As Object 'Dim xx As dc.application Dim xx As Object Dim idvdll As New IDVMakros.Application() ' Dim idvdll As Object ' Private dckein As Integer ' Private dcinvisible As Integer ' Private dcMTBS As Long Dim m_document_saved As Boolean #End Region #Region "Properties" Property Dokumenttypnr() As Long Get Return m_dokumenttypnr End Get Set(ByVal Value As Long) m_dokumenttypnr = Value End Set End Property Property Dokument_Saved() As Boolean Get Return m_document_saved End Get Set(ByVal Value As Boolean) m_document_saved = Value End Set End Property #End Region #Region "IDVP-Funktionen" Private Sub Cancel_IDVPortfeuille() Try xx = CreateObject("DC.APPLICATION") xx.Quit() Catch End Try End Sub Private Sub Init_IDV_Variablen() On Error Resume Next 'Diverse Felder m_objdc.dokvaradd("VarHerkunft", "EDOKA") m_objdc.dokvaradd("VarSchuldner", " ") m_objdc.dokvaradd("VarAdresseVorname", " ") 'Bankangaben m_objdc.dokvaradd("VarCompanyName", " ") m_objdc.dokvaradd("VarCompanyBankname", " ") m_objdc.dokvaradd("VarCompanyAdresse1", " ") m_objdc.dokvaradd("VarCompanyAdresse2", " ") m_objdc.dokvaradd("VarCompanyAdresse3", " ") m_objdc.dokvaradd("VarCompanyBankbetriebseinheit", " ") m_objdc.dokvaradd("VarCompanyBBENr", " ") m_objdc.dokvaradd("VarCompanyBBEOrt", " ") m_objdc.dokvaradd("VarCompanyBBEEMail", " ") m_objdc.dokvaradd("VarCompanyBBETelefon", " ") m_objdc.dokvaradd("VarCompanyBBETelefax", " ") m_objdc.dokvaradd("VarCompanyBBEZusatzVordruck", " ") m_objdc.dokvaradd("VarCompanyBBEZusatzInhalt", " ") m_objdc.dokvaradd("VarCompanyInternet", " ") m_objdc.dokvaradd("VarCompanyMWStNr", " ") m_objdc.dokvaradd("VarCompanyGerichtsstand", " ") m_objdc.dokvaradd("VarCompanyCantophone", " ") m_objdc.dokvaradd("VarCompanyHotlineInfoline", " ") 'Temporäre Variablen m_objdc.dokvaradd("VarTempGeschaeftNr", " ") m_objdc.dokvaradd("VarTempProduktebezeichnung", " ") m_objdc.dokvaradd("VarTempGeburtsGruendungsdatum", " ") m_objdc.dokvaradd("VarTempNationalitaetencode", " ") m_objdc.dokvaradd("VarTempMarktsegment", " ") m_objdc.dokvaradd("VarTempBranche", " ") m_objdc.dokvaradd("VarTempGesamtbetrag", " ") m_objdc.dokvaradd("VarTempBetrag1", " ") m_objdc.dokvaradd("VarTempBetrag2", " ") m_objdc.dokvaradd("VarTempWaehrung", " ") m_objdc.dokvaradd("VarTempZinssatz1", " ") m_objdc.dokvaradd("VarTempZinssatz2", " ") m_objdc.dokvaradd("VarTempObjekt", " ") m_objdc.dokvaradd("VarTempSchaetzungswert", " ") m_objdc.dokvaradd("VarTempKostenstelle", " ") 'Adressdaten m_objdc.dokvaradd("VarAdresse", " ") m_objdc.dokvaradd("VarVerteiler", " ") m_objdc.dokvaradd("VarAdressePostzustellung", " ") m_objdc.dokvaradd("VarAdresseAnrede", " ") m_objdc.dokvaradd("VarAdresseNameFirma", " ") m_objdc.dokvaradd("VarAdressezHd", " ") m_objdc.dokvaradd("VarAdresseAdresszeile1", " ") m_objdc.dokvaradd("VarAdresseAdresszeile2", " ") m_objdc.dokvaradd("VarAdressePLZ", " ") m_objdc.dokvaradd("VarAdresseOrt", " ") m_objdc.dokvaradd("VarPartnernr", " ") 'Formular Variablen 'm_objdc.DokVarAdd "VarFormularNr", " " 'm_objdc.DokVarAdd "VarFormularTitel", " " 'm_objdc.DokVarAdd "VarVersion", " " ' Sachbearbeiter m_objdc.dokvaradd("VarKennung", "") m_objdc.dokvaradd("VarKurzzeichen", " ") m_objdc.dokvaradd("VarName", " ") m_objdc.dokvaradd("VarVorname", " ") m_objdc.dokvaradd("VarTitel", " ") m_objdc.dokvaradd("VarBereich", " ") m_objdc.dokvaradd("VarOrganisationseinheit", " ") m_objdc.dokvaradd("VarAbkuerzung", " ") m_objdc.dokvaradd("VarBueroNr", " ") m_objdc.dokvaradd("VarRang", " ") m_objdc.dokvaradd("VarFunktion", " ") m_objdc.dokvaradd("VarDirektWahlTelefon", " ") m_objdc.dokvaradd("VarDirektWahlTelefax", " ") m_objdc.dokvaradd("VarEMail", " ") m_objdc.dokvaradd("VarBenutzerID", " ") 'Dokumentersteller m_objdc.dokvaradd("VarKennungDokSchreiber", " ") m_objdc.dokvaradd("VarKurzzeichenDokschreiber", " ") m_objdc.dokvaradd("VarNameDokSchreiber", " ") m_objdc.dokvaradd("VarVornameDokSchreiber", " ") m_objdc.dokvaradd("VarTitelDokSchreiber", " ") m_objdc.dokvaradd("VarBereichDokSchreiber", " ") m_objdc.dokvaradd("VarOrganisationseinheitDokSchreiber", " ") m_objdc.dokvaradd("VarAbkuerzungDokSchreiber", " ") m_objdc.dokvaradd("VarBueroNrDokSchreiber", " ") m_objdc.dokvaradd("VarRangDokSchreiber", " ") m_objdc.dokvaradd("VarFunktionDokSchreiber", " ") m_objdc.dokvaradd("VarDirektWahlTelefonDokSchreiber", " ") m_objdc.dokvaradd("VarDirektWahlTelefaxDokSchreiber", " ") m_objdc.dokvaradd("VarEMailDokschreiber", " ") m_objdc.dokvaradd("VarBenutzerIDWahlTelefaxDokSchreiber", " ") 'Linksunterzeichnenden m_objdc.dokvaradd("VarKennungLinks", " ") m_objdc.dokvaradd("VarKurzzeichenLinks", " ") m_objdc.dokvaradd("VarNameLinks", " ") m_objdc.dokvaradd("VarVornameLinks", " ") m_objdc.dokvaradd("VarTitelLinks", " ") m_objdc.dokvaradd("VarBereichLinks", " ") m_objdc.dokvaradd("VarOrganisationseinheitLinks", " ") m_objdc.dokvaradd("VarAbkuerzungLinks", " ") m_objdc.dokvaradd("VarBueroNrLinks", " ") m_objdc.dokvaradd("VarRangLinks", " ") m_objdc.dokvaradd("VarFunktionLinks", " ") m_objdc.dokvaradd("VarDirektWahlTelefonLinks", " ") m_objdc.dokvaradd("VarDirektWahlTelefaxLinks", " ") m_objdc.dokvaradd("VarEMailTelefaxLinks", " ") m_objdc.dokvaradd("VarBenutzerIDWahlTelefaxLinks", " ") 'Rechtsunterzeichnenden m_objdc.dokvaradd("VarKennungRechts", " ") m_objdc.dokvaradd("VarKurzzeichenRechts", " ") m_objdc.dokvaradd("VarNameRechts", " ") m_objdc.dokvaradd("VarVornameRechts", " ") m_objdc.dokvaradd("VarTitelRechts", " ") m_objdc.dokvaradd("VarBereichRechts", " ") m_objdc.dokvaradd("VarOrganisationseinheitRechts", " ") m_objdc.dokvaradd("VarAbkuerzungRechts", " ") m_objdc.dokvaradd("VarBueroNrRechts", " ") m_objdc.dokvaradd("VarRangRechts", " ") m_objdc.dokvaradd("VarFunktionRechts", " ") m_objdc.dokvaradd("VarDirektWahlTelefonRechts", " ") m_objdc.dokvaradd("VarDirektWahlTelefaxRechts", " ") m_objdc.dokvaradd("VarEMailTelefaxRechts", " ") m_objdc.dokvaradd("VarBenutzerIDWahlTelefaxRechts", " ") End Sub Private Sub Create_IDVDokument(ByVal idvid As String) StartWord() objWord.Visible = True Cancel_IDVPortfeuille() m_objdc = CreateObject("DC.Application") Init_IDV_Variablen() m_objdc.WindowState = dc.dcWindowState.dcInvisible 'Call Get_IDV_Values() If Not Office_Vorlage.bIdv_nativ.Value = True Then m_objdc.WindowState = 0 m_objdc.WordPlusDialog = dc.dcWordPlusDialogs.dcKein m_objdc.DisableStandardMacros() End If If Office_Vorlage.bIdv_nativ.Value = True Then m_objdc.CreateDocument(dc.dcModus.dcMTBS, CType(Office_Vorlage.sIdv_id.Value, Integer)) StartWord() docWord = objWord.ActiveDocument objWord.Visible = True m_objdc = Nothing Exit Sub Else m_objdc.CreateDocument(dc.dcModus.dcMTBS, CType(Office_Vorlage.sIdv_id.Value, Integer)) m_objdc.SaveDoc(DokumentFilename) m_objdc.Quit() m_objdc = Nothing StartWord() docWord = objWord.ActiveDocument End If m_objdc = Nothing End Sub Public Function IDV_makros_bearbeiten() As Boolean Dim idvmakros As New edokadb.clsMyDokumentDaten() Dim makros As DataTable Dim i As Long idvmakros.cpMainConnectionProvider = conn makros = idvmakros.Select_IDVMakros(Me.Dokumenttypnr) For i = 0 To makros.Rows.Count - 1 Try If makros.Rows(i).Item("ist_in_dll") = True Then 'SetForegroundWindow(...) System.Windows.Forms.Application.DoEvents() idvdll = CreateObject("IDVMakros.Application") Call idvdll.CallSub(objWord, makros.Rows(i).Item("makro")) System.Windows.Forms.Application.DoEvents() objWord.Visible = True objWord.Activate() Else System.Windows.Forms.Application.DoEvents() objWord.Run(makros.Rows(i).Item("makro")) System.Windows.Forms.Application.DoEvents() End If Catch ex As Exception MsgBox(ex.Message) End Try Next i End Function #End Region #Region "Word-Funktionen" Private Function StartWord() Try objWord = GetObject(, "Word.application") Catch Try objWord = CreateObject("Word.application") Catch ex As Exception MsgBox(ex.Message) End Try Finally objWord.Visible = False End Try End Function Private Sub Insert_Kopfzeile() On Error Resume Next objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) If objWord.ActiveWindow.View.SplitSpecial <> WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.Panes.Item(2).Close() End If If objWord.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdNormalView Or objWord.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdOutlineView Then objWord.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdPrintView End If objWord.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekCurrentPageHeader objWord.Selection.MoveDown(Unit:=Word.WdUnits.wdLine, Count:=1) With objWord.ActiveDocument.Bookmarks .Add(Range:=objWord.Selection.Range, Name:="TGEDKCompanyBBEB99") .DefaultSorting = WdBookmarkSortBy.wdSortByName .ShowHidden = False End With objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument End Sub Private Sub Fill_Dokument(ByVal AusParametrisierung As Boolean, Optional ByVal xdata As DataTable = Nothing) If Office_Vorlage.bKopfzeile_generieren.Value = True Then Insert_Kopfzeile() End If If AusParametrisierung Then get_dokumentdaten() Dokumentwerte_Uebertragen(AusParametrisierung) Else Dokumentdaten = xdata Dokumentwerte_Uebertragen(AusParametrisierung) End If End Sub Private Sub Dokumentwerte_Uebertragen(ByVal AusParametrisierung As Boolean) Dim i As Long Dim pos As Long Dim pos2 As Long Dim Fieldlen As Long For i = 0 To Dokumentdaten.Rows.Count - 1 'Beginn-Textmarke If Dokumentdaten.Rows(i).Item("aktiv") = True Then If Dokumentdaten.Rows(i).Item("beginntextmarke") Is System.DBNull.Value Then Dokumentdaten.Rows(i).Item("beginntextmarke") = "" End If If Dokumentdaten.Rows(i).Item("endetextmarke") Is System.DBNull.Value Then Dokumentdaten.Rows(i).Item("endetextmarke") = "" End If If Dokumentdaten.Rows(i).Item("feldname") Is System.DBNull.Value Then Dokumentdaten.Rows(i).Item("feldname") = "" End If If Dokumentdaten.Rows(i).Item("beginntextmarke") = "TGEDKCursor" Or _ Dokumentdaten.Rows(i).Item("beginntextmarke") = "TGEDKCursorB" Or _ Dokumentdaten.Rows(i).Item("feldname") = "TGEDKCursorB" Or _ Dokumentdaten.Rows(i).Item("feldname") = "TGEDKCursor" Then Cursor_Positionieren = True End If If Dokumentdaten.Rows(i).Item("beginntextmarke") <> "" And _ Dokumentdaten.Rows(i).Item("endetextmarke") = "" Then Try docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("beginntextmarke")).Select() pos = docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("beginntextmarke")).Start If AusParametrisierung Then objWord.Selection.Text = Dokumentdaten.Rows(i).Item("testdaten") Else objWord.Selection.Text = Dokumentdaten.Rows(i).Item("xvalue") End If pos2 = objWord.Selection.End objWord.Selection.SetRange(Start:=pos, End:=pos2) With docWord.Bookmarks .Add(Range:=objWord.Selection.Range, Name:=Dokumentdaten.Rows(i).Item("beginntextmarke")) .DefaultSorting = WdBookmarkSortBy.wdSortByName .ShowHidden = False End With objWord.Selection.MoveRight(Unit:=Word.WdUnits.wdCharacter, Count:=1) objWord.Selection.MoveRight(Unit:=Word.WdUnits.wdCharacter, Count:=1, Extend:=Word.WdMovementType.wdExtend) If objWord.Selection.Text = " " Then objWord.Selection.Delete(Unit:=Word.WdUnits.wdCharacter, Count:=1) Catch End Try End If 'Beginn- und Ende-Textmarke If Dokumentdaten.Rows(i).Item("beginntextmarke") <> "" And _ Dokumentdaten.Rows(i).Item("endetextmarke") <> "" Then Try docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("beginntextmarke")).Select() pos = docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("beginntextmarke")).Start docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("endetextmarke")).Select() pos2 = docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("endetextmarke")).Start objWord.Selection.SetRange(Start:=pos, End:=pos2) If AusParametrisierung Then objWord.Selection.TypeText(text:=Dokumentdaten.Rows(i).Item("testdaten")) Else objWord.Selection.TypeText(text:=Dokumentdaten.Rows(i).Item("xvalue")) End If With docWord.Bookmarks .Add(Range:=objWord.Selection.Range, Name:=Dokumentdaten.Rows(i).Item("beginntextmarke")) .DefaultSorting = WdBookmarkSortBy.wdSortByName .ShowHidden = False End With Catch End Try End If 'Felder If Dokumentdaten.Rows(i).Item("feldname") <> "" Then Try If docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).TextInput.Width <> 0 Then Fieldlen = docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).TextInput.Width docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).TextInput.Width = Fieldlen + 5 End If If AusParametrisierung Then docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).Result = Dokumentdaten.Rows(i).Item("testdaten") Else docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).Result = Dokumentdaten.Rows(i).Item("xvalue") End If Catch End Try End If End If Next End Sub Private Sub FeldMakros() Dim i As Integer For i = 0 To Dokumentdaten.Rows.Count - 1 If Dokumentdaten.Rows(i).Item("feldname") <> "" Then If Dokumentdaten.Rows(i).Item("einstiegsmakro") = True Then objWord.Run(docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).EntryMacro) End If If Dokumentdaten.Rows(i).Item("ausstiegsmakro") = True Then objWord.Run(docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).ExitMacro) End If End If Next End Sub #End Region #Region "Datenhandling" Private Sub get_dokumentdaten() dokudata.cpMainConnectionProvider = conn Dokumentdaten = dokudata.SelectTestdata(Me.Dokumenttypnr) dokudata.Dispose() End Sub #End Region #Region "Barcode" Dim Textboxes(100) As String Dim Textboxesi As Integer Private Sub Generate_Barcodes() delete_Textfelder() Insert_TextFelder() ins_Barcode() End Sub Private Sub delete_Textfelder() Dim xname As String Dim i As Integer Dim i1 As Integer Dim pages As Long Dim Prop As Object objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) For Each Prop In objWord.ActiveDocument.BuiltInDocumentProperties If UCase(Prop.Name) = "NUMBER OF PAGES" Then pages = Prop.value End If Next For i = 0 To pages xname = Str(i) If Left(xname, 1) = " " Then xname = Right(xname, Len(xname) - 1) objWord.Selection.GoTo(what:=Word.WdGoToItem.wdGoToPage, Name:=xname) HeaderFooterAnzeigen() On Error Resume Next For i1 = 0 To objWord.Selection.HeaderFooter.Shapes.Count objWord.Selection.HeaderFooter.Shapes.Item(i1).Delete() Next i1 On Error GoTo 0 objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Next i End Sub Private Sub Insert_TextFelder() Dim xname As String Dim i As Integer Dim pages As Long Dim prop As Object For Each prop In objWord.ActiveDocument.BuiltInDocumentProperties If UCase(prop.Name) = "NUMBER OF PAGES" Then pages = prop.value End If Next Textboxesi = 0 objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) For i = 1 To 1 xname = Str(i) If Left(xname, 1) = " " Then xname = Right(xname, Len(xname) - 1) objWord.Selection.GoTo(what:=Word.WdGoToItem.wdGoToPage, Name:=xname) insert_Textfield() objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Next i End Sub Private Sub ins_Barcode() Dim xname As String Dim i As Integer Dim pages As Long Dim prop As Object For Each prop In objWord.ActiveDocument.BuiltInDocumentProperties If UCase(prop.Name) = "NUMBER OF PAGES" Then pages = prop.value End If Next objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) Textboxesi = 1 For i = 1 To 1 xname = Str(i) If Left(xname, 1) = " " Then xname = Right(xname, Len(xname) - 1) objWord.Selection.GoTo(what:=Word.WdGoToItem.wdGoToPage, Name:=xname) HeaderFooterAnzeigen() insert_Barcode(i) objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Next i End Sub Private Sub HeaderFooterAnzeigen() If objWord.ActiveWindow.View.SplitSpecial <> WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.Panes.Item(2).Close() End If If objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdNormalView Or objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdOutlineView Then objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView End If objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageHeader If objWord.Selection.HeaderFooter.IsHeader = True Then objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageFooter Else objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageHeader End If End Sub Private Sub insert_Textfield() Dim Public_barcodeleft Dim Public_barcodetop Dim Public_barcodewidth# Dim Public_barcodeheight Try Public_barcodeleft = Office_Vorlage.iBcpl.Value Public_barcodetop = Office_Vorlage.iBcpt.Value Public_barcodewidth = Office_Vorlage.iBcw.Value Public_barcodeheight = Office_Vorlage.iBch.Value HeaderFooterAnzeigen() objWord.Selection.HeaderFooter.Shapes.AddTextbox(1, Public_barcodeleft, Public_barcodetop, _ Public_barcodewidth#, Public_barcodeheight).Select() ' objWord.Selection.ShapeRange.TextFrame.TextRange.Select objWord.Selection.ShapeRange.Line.Visible = Office.MsoTriState.msoFalse objWord.Selection.ShapeRange.TextFrame.MarginLeft = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginRight = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginTop = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginBottom = 0.0# objWord.Selection.Collapse() Textboxesi = Textboxesi + 1 Textboxes(Textboxesi) = objWord.Selection.HeaderFooter.Shapes.Item(Textboxesi).Name 'If Public_Barcodeinfo Then 'objWord.Selection.HeaderFooter.Shapes.AddTextbox(1, Public_barcodeleft, Public_barcodetop + Public_barcodeheight + 1, _ ' Public_barcodewidth#, 20).Select() 'objWord.Selection.ShapeRange.Line.Visible = msoFalse 'objWord.Selection.ShapeRange.TextFrame.MarginLeft = 0.0# 'objWord.Selection.ShapeRange.TextFrame.MarginRight = 0.0# 'objWord.Selection.ShapeRange.TextFrame.MarginTop = 0.0# 'objWord.Selection.ShapeRange.TextFrame.MarginBottom = 0.0# 'objWord.Selection.Collapse() 'Textboxesi = Textboxesi + 1 'Textboxes(Textboxesi) = objWord.Selection.HeaderFooter.Shapes(Textboxesi).Name 'End If objWord.Selection.HeaderFooter.Shapes.AddTextbox(1, Public_barcodeleft + Public_barcodewidth, Public_barcodetop, _ 15, Public_barcodeheight).Select() ' objWord.Selection.ShapeRange.TextFrame.TextRange.Select objWord.Selection.ShapeRange.Line.Visible = Office.MsoTriState.msoFalse objWord.Selection.ShapeRange.TextFrame.MarginLeft = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginRight = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginTop = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginBottom = 0.0# objWord.Selection.Collapse() Textboxesi = Textboxesi + 1 Textboxes(Textboxesi) = objWord.Selection.HeaderFooter.Shapes.Item(Textboxesi).Name Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub insert_Barcode(ByVal x As Integer) Dim Form Dim strsel As String Dim strresult Dim s As String ' Selection.ShapeRange.Select If DokumenTtyp.bZu_retournieren.Value = True Then Try Form = objWord.Selection.HeaderFooter.Shapes.Item(Textboxes(Textboxesi)) Form.Select() Form = objWord.Selection.HeaderFooter.Shapes.Item(Textboxes(Textboxesi)) Form.Select() s = Bar25I("0012002123456789") objWord.Selection.TypeText(text:=s) objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdLine, Extend:=Word.WdMovementType.wdExtend) objWord.Selection.Font.Name = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("barcode_font") objWord.Selection.Font.Size = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("bcfont_groesse") objWord.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight Form = Nothing Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub #End Region #Region "Barcode-Berechnung" Private BarTextOut As String Private BarTextIn As String Private DoCheckSum As Integer Private TempString As String Private CharValue As Long Private II As Integer Private Sum As Long Private barcodeout Private CheckSum As Integer ' Copyright 2001 by Elfring Fonts Inc. All rights reserved. This code ' may not be modified or altered in any way. 'Functions in this file: ' Bar25I(Text) -> convert text to bar code 2/5 interleaved ' Bar25Ics(Text) -> convert text to bar code 2/5 interleaved with checksum '--------------------------------------------------------------------------- ' This function converts a string of digits into a format compatible with Elfring ' Fonts Inc bar codes. It adds the start character, scans and converts digit pairs ' into single ASCII characters, and adds a stop character. Note that non-digits are ' ignored, and if you enter an odd number of digits, a leading zero will be added. '--------------------------------------------------------------------------- Public Function Bar25I(ByVal BarTextIn As String) As String ' Initialize input and output strings BarTextOut = "" BarTextIn = RTrim(LTrim(BarTextIn)) ' Throw away non-numeric data TempString = "" For II = 1 To Len(BarTextIn) If IsNumeric(Mid(BarTextIn, II, 1)) Then TempString = TempString & Mid(BarTextIn, II, 1) End If Next II ' If not an even number of digits, add a leading 0 If (Len(TempString) Mod 2) = 1 Then TempString = "0" & TempString End If ' Break digit pairs up and convert to characters- build output string For II = 1 To Len(TempString) Step 2 'Break string into pairs of digits and get value CharValue = Mid(TempString, II, 2) 'translate value to ASCII and save in BarTextOut If CharValue < 90 Then BarTextOut = BarTextOut & Chr(CharValue + 33) Else BarTextOut = BarTextOut & Chr(CharValue + 71) End If Next II 'Build ouput string, trailing space for Windows rasterization bug barcodeout = "{" & BarTextOut & "} " 'Return the string Bar25I = barcodeout End Function '--------------------------------------------------------------------------- ' This function converts a string of digits into a format compatible with Elfring ' Fonts Inc bar codes. It adds the start character, scans and converts digit pairs ' into single ASCII characters, and adds checksum and a stop character. Note that ' non-digits are ignored, and if you enter an even number of digits, a leading zero ' will be added. '--------------------------------------------------------------------------- Public Function Bar25Ics(ByVal BarTextIn As String) As String ' Initialize input and output strings BarTextOut = "" BarTextIn = RTrim(LTrim(BarTextIn)) ' Throw away non-numeric data TempString = "" For II = 1 To Len(BarTextIn) If IsNumeric(Mid(BarTextIn, II, 1)) Then TempString = TempString & Mid(BarTextIn, II, 1) End If Next II ' If not an odd number of digits, add a leading 0 If (Len(TempString) Mod 2) = 0 Then TempString = "0" & TempString End If ' Figure out the checksum digit Sum = 0 For II = 1 To Len(TempString) CharValue = Mid(TempString, II, 1) If (II Mod 2) = 1 Then Sum = Sum + (3 * CharValue) Else Sum = Sum + CharValue End If Next II ' Figure checksum, add it as last digit CheckSum = 10 - (Sum Mod 10) If CheckSum = 10 Then CheckSum = 0 TempString = TempString & Chr(48 + CheckSum) ' Break digit pairs up and convert to characters- build output string For II = 1 To Len(TempString) Step 2 'Break string into pairs of digits and get value CharValue = Mid(TempString, II, 2) 'translate value to ASCII and save in BarTextOut If CharValue < 90 Then BarTextOut = BarTextOut & Chr(CharValue + 33) Else BarTextOut = BarTextOut & Chr(CharValue + 71) End If Next II 'Build ouput string, trailing space for Windows rasterization bug barcodeout = "{" & BarTextOut & "} " 'Return the string Bar25Ics = barcodeout End Function #End Region #Region "Öffentliche Methoden" Public Sub Create_Dokument_Before_Fill(ByVal DokTypeNr As Long, ByVal xdata As DataTable, ByVal fname As String) 'Office-Vorlage auslesen Me.inEditMode = False Me.Dokumenttypnr = DokTypeNr DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() 'Temporär-Datei Dokument_Temp = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") Dokument_Temp = Dokument_Temp + Office_Vorlage.sPrefix_dokumentname.Value + Change_Docname(Now) + ".doc" 'Nativ-Dokumentvorlage If Not Office_Vorlage.bIdv_vorlage.Value = True Then Dokument_To_Create = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_word_vorlagen") + Office_Vorlage.sOffice_vorlage.Value StartWord() DokumentFilename = fname objWord.Documents.Add(Template:=Dokument_To_Create) objWord.ActiveDocument.SaveAs(filename:=fname) docWord = objWord.ActiveDocument Else DokumentFilename = fname Create_IDVDokument(Office_Vorlage.sIdv_id.Value) End If IsProtected = False If docWord.ProtectionType <> WdProtectionType.wdNoProtection Then docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) IsProtected = True End If 'Dokument ggf. entsperren, Daten übertragen, Dokument ggf. schützen ' If Office_Vorlage.bDokument_geschuetzt.Value = True Then ' docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) ' End If objWord.Visible = False Word_Werte_Auslesen(xdata) End Sub Public Sub Open_Document(ByVal fname As String, ByVal xdata As DataTable, ByVal doktypeNr As Long) Me.Dokumenttypnr = doktypeNr Me.inEditMode = True DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() StartWord() DokumentFilename = fname objWord.Documents.Open(fname) docWord = objWord.ActiveDocument objWord.Visible = False Word_Werte_Auslesen(xdata) End Sub Public Sub Dokument_Vervollstaendigen(ByVal xdata As DataTable) Fill_Dokument(False, xdata) If DokumenTtyp.bZu_retournieren.Value = True Then Generate_Barcodes() Else Try objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Catch End Try End If If IsProtected Then Try docWord.Protect(Type:=WdProtectionType.wdAllowOnlyFormFields, noreset:=True, password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) Catch End Try End If FeldMakros() If objWord.ActiveWindow.View.SplitSpecial = WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView Else objWord.ActiveWindow.View.Type = WdViewType.wdPrintView End If objWord.Visible = True IDV_makros_bearbeiten() If Cursor_Positionieren Then Try docWord.Bookmarks.Item("TGEDKCursor").Select() docWord.Bookmarks.Item("TGEDKCursorB").Select() Catch End Try End If Me.Dokument_Saved = False objWord.Visible = True Office_Vorlage.Dispose() DokumenTtyp.Dispose() Control_Word() End Sub Public Sub Word_Werte_Auslesen(ByVal xdata As DataTable) Dim i As Integer Dim pos, pos2 As Integer For i = 0 To xdata.Rows.Count - 1 If xdata.Rows(i).Item("beginntextmarke") <> "" And xdata.Rows(i).Item("endetextmarke") = "" Then Try docWord.Bookmarks.Item(xdata.Rows(i).Item("beginntextmarke")).Select() xdata.Rows(i).Item("oldvalue") = convert(objWord.Selection.Text) xdata.Rows(i).Item("used") = 1 Catch End Try End If If xdata.Rows(i).Item("beginntextmarke") <> "" And xdata.Rows(i).Item("endetextmarke") <> "" Then Try docWord.Bookmarks.Item(xdata.Rows(i).Item("beginntextmarke")).Select() pos = objWord.Selection.Start docWord.Bookmarks.Item(xdata.Rows(i).Item("endetextmarke")).Select() pos2 = objWord.Selection.Start objWord.Selection.SetRange(Start:=pos, End:=pos2) xdata.Rows(i).Item("oldvalue") = convert(objWord.Selection.Text) xdata.Rows(i).Item("used") = 1 Catch End Try End If If xdata.Rows(i).Item("feldname") <> "" Then Try xdata.Rows(i).Item("oldvalue") = convert(docWord.FormFields.Item(xdata.Rows(i).Item("feldname")).Result) xdata.Rows(i).Item("used") = 1 Catch End Try End If Next End Sub Public Sub Create_Dokument(ByVal DokTypeNr As Long, ByVal ShowReport As Boolean) 'Office-Vorlage auslesen Me.inEditMode = False Me.Dokumenttypnr = DokTypeNr DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() 'Temporär-Datei Dokument_Temp = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") Dokument_Temp = Dokument_Temp + Office_Vorlage.sPrefix_dokumentname.Value + Change_Docname(Now) + ".doc" DokumentFilename = Dokument_Temp 'Nativ-Dokumentvorlage If Not Office_Vorlage.bIdv_vorlage.Value = True Then Dokument_To_Create = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_word_vorlagen") + Office_Vorlage.sOffice_vorlage.Value StartWord() objWord.Documents.Add(Template:=Dokument_To_Create) objWord.ActiveDocument.SaveAs(filename:=DokumentFilename) docWord = objWord.ActiveDocument Else Create_IDVDokument(Office_Vorlage.sIdv_id.Value) End If IsProtected = False If docWord.ProtectionType <> WdProtectionType.wdNoProtection Then docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) IsProtected = True End If 'Dokument ggf. entsperren, Daten übertragen, Dokument ggf. schützen ' If Office_Vorlage.bDokument_geschuetzt.Value = True Then ' docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) ' End If Fill_Dokument(True) If DokumenTtyp.bZu_retournieren.Value = True Then Generate_Barcodes() Else Try objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Catch End Try End If If IsProtected Then Try docWord.Protect(Type:=WdProtectionType.wdAllowOnlyFormFields, noreset:=True, password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) Catch End Try End If FeldMakros() If objWord.ActiveWindow.View.SplitSpecial = WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView Else objWord.ActiveWindow.View.Type = WdViewType.wdPrintView End If objWord.Visible = True IDV_makros_bearbeiten() If Cursor_Positionieren Then Try docWord.Bookmarks.Item("TGEDKCursor").Select() docWord.Bookmarks.Item("TGEDKCursorB").Select() Catch End Try End If objWord.Visible = True Office_Vorlage.Dispose() DokumenTtyp.Dispose() If Not ShowReport Then docWord = Nothing objWord = Nothing Else Get_Docvars(DokTypeNr) End If End Sub #End Region #Region "Diverse_Funktionen" Public Function Change_Docname(ByVal s As String) As String Dim splitt Dim t As String splitt = Split(s, ".") t = splitt(0) + splitt(1) + splitt(2) splitt = Split(t, ":") t = splitt(0) + splitt(1) + splitt(2) Change_Docname = t End Function #End Region #Region "Reporting" Public Sub Get_Docvars(ByVal DokTypeNr As Long) Dim id As String Dim rec As New edokadb.clsReporting_Dokumenttyp() rec.cpMainConnectionProvider = conn conn.OpenConnection() id = Now Dim i As Long For i = 1 To docWord.Bookmarks.Count If Left(UCase(docWord.Bookmarks.Item(i).Name), 2) <> "BK" And Left(UCase(docWord.Bookmarks.Item(i).Name), 4) <> "TGAM" Then rec.sID = New SqlString(CType(id, String)) rec.sOFBM = New SqlString(CType(docWord.Bookmarks.Item(i).Name, String)) rec.Insert() End If Next For i = 1 To docWord.FormFields.Count rec.sID = New SqlString(CType(id, String)) rec.sOFFeld = New SqlString(CType(docWord.FormFields.Item(i).Name, String)) rec.Insert() Next Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.[sp_reporting_dokumenttyp]" scmCmdToExecute.CommandType = CommandType.StoredProcedure Try scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Parameters.Add(New SqlParameter("@id", SqlDbType.VarChar, 25, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, id)) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumenttypnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, DokTypeNr)) If Globals.MyMsg.Show_MessageYesNo(15) = MsgBoxResult.Yes Then scmCmdToExecute.Parameters.Add(New SqlParameter("@VFInaktivieren", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) Else scmCmdToExecute.Parameters.Add(New SqlParameter("@VFInaktivieren", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) End If scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Finally scmCmdToExecute.Dispose() End Try Dim f As New frmReporting() f.show_report_dokumenttypVFelder(Dokumenttypnr, id) f.Show() scmCmdToExecute.Dispose() scmCmdToExecute = New SqlCommand() scmCmdToExecute.CommandText = "dbo.[sp_reporting_dokumenttyp]" scmCmdToExecute.CommandType = CommandType.StoredProcedure Try scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.CommandText = "dbo.[sp_reporting_dokumenttyp_delete]" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Parameters.Add(New SqlParameter("@id", SqlDbType.VarChar, 25, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, id)) scmCmdToExecute.ExecuteNonQuery() Catch es As Exception MsgBox(es.Message) End Try conn.CloseConnection(True) End Sub #End Region ' Private Sub objWord_DocumentBeforeClose(ByVal Doc As Word.Document, ByRef Cancel As Boolean) Handles objWord.DocumentBeforeClose ' If UCase(Doc.Path + "\" + Doc.Name) <> UCase(DokumentFilename) Then ' Exit Sub ' Else ' MsgBox(DokumentFilename) ' End If 'End Sub Private Sub Control_Word() Exit Sub Dim ww1 As Word.Application Dim ende As Boolean Dim dci As Integer Dim i As Integer Dim s As String Dim f As New frmOfficeBearbeitung() f.Show() s = objWord.ActiveDocument.Name Do While ende = False ende = True On Error GoTo ende_loop ww1 = GetObject(, "word.application") System.Windows.Forms.Application.DoEvents() ww1 = GetObject(, "word.application") again: dci = ww1.Documents.Count For i = 1 To ww1.Documents.Count If dci <> ww1.Documents.Count Then GoTo again If ww1.Documents.Count > 0 Then If dci <> ww1.Documents.Count Then GoTo again If ww1.Documents.Item(i).Name = s Then ende = False Else ende = True End If Next i System.Windows.Forms.Application.DoEvents() Loop ende_loop: f.Close() End Sub Private Sub objWord_DocumentBeforeSave(ByVal Doc As Word.Document, ByRef SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles objWord.DocumentBeforeSave If UCase(Doc.Path + "\" + Doc.Name) <> UCase(DokumentFilename) Then Exit Sub Else Me.Dokument_Saved = True End If End Sub Function convert(ByVal x As String) As String Dim s As String Dim s1 As String Dim i As Integer s = x i = InStr(s, Chr(13)) While i > 0 s = Left(s, i - 1) & "#" & Right(s, Len(s) - (i)) If Mid(s, i + 1, 1) = Chr(10) Then s = Left(s, i) & Right(s, Len(s) - (i + 1)) End If i = InStr(s, Chr(13)) End While i = InStr(s, "#") While i > 0 s = Left(s, i - 1) & vbCrLf & Right(s, Len(s) - (i)) i = InStr(s, "#") End While convert = s End Function End Class