Telefonszámunk: 1-472-0679

Excelre hivatkozó Word körlevél abszolút hivatkozásának relatívvá tétele

Kezdőlap Fórumok Excel programozás Excelre hivatkozó Word körlevél abszolút hivatkozásának relatívvá tétele

Ennek a témakörnek tartalma 16 hozzászólás, 4 résztvevő. Utolsó frissítés:  Sicamber 3 hete, 3 napja telt el a bejegyzés óta.

2 bejegyzés megtekintése - 16-17 / 17
  • Szerző
    Bejegyzés
  • #4781

    Sicamber
    Résztvevő

    Még egy kis adalék: Az adatbázist az excelben nem előnyös táblázattá alakítani, mert akkor megnyitott excelhez a word nem biztos, hogy csatlakozni fog.(pontosabban: akkor nem fog csatlakozni, ha az adatbázisban 25-30 oszlopnál több van.)
    A “táblázattá alakítás” alatt természetesen itt azt értem, amikor az excelben lévő adatokat valaki a beszúrás menü táblázat parancsával alakítja elnevezett táblázattá.

    Kicsit sok minden kell ahhoz, hogy a csatolt minta működjön, de az az előny, hogy nyitva lévő excelben szűrhessük az adatokat, amiket a word sablon már csak szűrt állapotban vesz át, napi használat esetén megéri a fent leírt kötöttségek(excel fájlnévben, munkalapnévben, “A” oszlopnévben ékezetek és szóközök kerülése, excel-fájlnak rövid elérési út, stb..) felvállalását.

    #5140

    Sicamber
    Résztvevő

    Sziasztok!
    Még egy fejlesztést csináltam körlevél témában:

    Az alábbiakkal a word sablonokba lehet eltárolni az azokból létrehozott levelek elérési útját.
    pontosabban:
    – a sablonok végére szúrunk be hiperhivatkozásokat (minden újonnan készített levélnek egy új sort.)
    – a hiperhivatkozások a sablonok végére mentődnek az azokból készített levelek első bezárásakor
    akkor, ha:
    – a sablon akkor még nyitva van,
    – és a levelet előzőleg elmentettük.
    Több megnyitott sablon és levél esetén is működik a program
    (a leveleket a létrehozási idejükkel azonosítja be a program nem a nevükkel, tehát szabadon átnevezhetők a levelek az első bezárás – és a hiperhivatkozás létrehozása – előtt is)

    A kódokat “normál” mappába helyeztem, tehát az összes dokumentumnál lefut, de csak a sablonokkal létrehozott levelekre és a sablonjaikra van hatással.
    A sablonból-levélkészítés eseményéhez létre kell hozni egy “class” modultis: jobb gomb\insert\class module
    Tehát:
    – Normal\Microsoft Word Objects\Thisworkbook -ba:

    Dim X As New EventClassModule

    Sub Register_Event_Handler()
    Set X.App = Word.Application
    End Sub

    Private Sub Document_New()
    Call Register_Event_Handler
    End Sub

    Private Sub Document_Open()
    Call Register_Event_Handler
    End Sub

    – Normal\Modules\NewMacros -ba:

    Option Explicit
    ‘Module: Module1(Code)

    Public mergeNum As Integer
    Public srcPList(1 To 500) As String
    Public crTimeList(1 To 500) As Date

    Public Function GetIndexd(ByRef srcList() As Date, ByVal value As Date) As Integer
    Dim i As Integer
    GetIndexd = 0
    For i = LBound(srcList) To UBound(srcList)
    If srcList(i) = value Then: GetIndexd = i: Exit For:
    Next i

    End Function
    Public Function GetIndexi(ByRef iaList() As Integer, ByVal value As Integer) As Integer
    Dim i As Integer
    GetIndexi = 0
    For i = LBound(iaList) To UBound(iaList)
    If iaList(i) = value Then: GetIndexi = i: Exit For:
    Next i

    End Function

    Public Function GetIndexs(ByRef saList() As String, ByVal value As String) As Integer
    Dim i As Integer
    GetIndexs = 0
    For i = LBound(saList) To UBound(saList)
    If saList(i) = value Then: GetIndexs = i: Exit For:
    Next i

    End Function

    – Normal\Class Modules\EventClassModule -ba:

    Public WithEvents App As Word.Application

    Private Sub App_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean)
    Dim ind As Integer
    Dim resname As String
    Dim creationTime As Date

    creationTime = ActiveDocument.BuiltInDocumentProperties(“Creation date”).value
    ind = GetIndexd(crTimeList(), creationTime) ‘index of source- and result-document
    If (mergeNum > 0) And (ind > 0) And (Len(ActiveDocument.Path) > 0) Then
    resname = ActiveDocument.FullName
    Documents(srcPList(ind)).Activate ‘activate source dok

    ActiveDocument.Range.InsertParagraphAfter
    Selection.EndKey Unit:=wdStory ‘move the cursor to end of the document (to the begining of the line)
    ActiveDocument.Range.InsertAfter ” ” & creationTime & ” ” & “forrás: ” & ActiveDocument.Name
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=resname
    crTimeList(ind) = 0 ‘deleting the creation time of the stored result-document from the list (unless this the source-docs would save the closed and reopened result-document’s hyperlinks again)
    End If
    End Sub

    Private Sub App_MailMergeAfterMerge(ByVal Doc As Document, ByVal DocResult As Document)
    Dim currTime As Date

    currTime = ActiveDocument.BuiltInDocumentProperties(“Creation date”).value ‘creation time of active(result) document
    mergeNum = mergeNum + 1

    crTimeList(mergeNum) = currTime
    srcPList(mergeNum) = Doc.FullName ‘full path & name of source doc
    End Sub

    ..és már lehet is használni!

    Attachments:
    You must be logged in to view attached files.
2 bejegyzés megtekintése - 16-17 / 17

Be kell jelentkezni a hozzászóláshoz.