banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 03 July 2018 06:28

Laurent75019
Participant actif
Lieu: La Réunion_974
Date d'inscription: 15 Jul 2011
Messages: 96

Date automatique_ArcMap9.3

Bonjour,

Depuis quelques temps je cherche en vain, pour ArcMap9.3, une solution pour mettre à jour la date dans le cartouche du mode mise en page. Cette mise à jour doit être liée à l'horloge de l'ordinateur.

Certes, la version est ancienne mais y aurait-il parmi nous une personne expérimentée pour me soulager de cette récurrente épine  ?

Merci bien
Laurent

Hors ligne

 

#2 Fri 06 July 2018 09:23

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Date automatique_ArcMap9.3

Je suppose que les textes dynamiques sont arrivés plus tard (v10.1? ).

Ca existait sur la version 9.3. J'ai trouvé ça du côté d'une extension PLTS, en texte dynamique :
http://webhelp.esri.com/arcgisdesktop/9 … _map_sheet

A part ça, quelques pistes ici avec un peu de code :
https://community.esri.com/thread/14193

Here is the new code which I think will accomplish what you are trying to do. You will still need to reference Microsoft Scripting Runtime to get the date modified.

First inside ArcMap

1. Inset --> Text
2. Right click the new text element --> Properties
3. Under Size and Position Tab
4. Element Name Should be : FileName

Next Inside Microsoft Visual Basic Editor

1. Tools --> References --> Check "Microsoft Scripting Runtime"
2. Inside Project --> ArcMap Objects --> ThisDocument
3. Paste Code Below and reference AddFilePath in your code that is already written.

Code To Paste:


Code:

Public Sub AddFilePath()

Dim pApplication As Application
    Set pApplication = Application
    
Dim pDocument As IDocument
    Set pDocument = pApplication.Document
    
Dim pMxDoc As IMxDocument
    Set pMxDoc = ThisDocument
    
Dim pMap As IMap
    Set pMap = pMxDoc.Maps.Item(0) 'must be the first Data Frame in the map
    
Dim pLayout As IPageLayout
    Set pLayout = pMxDoc.PageLayout
    
Dim pActiveView As IActiveView
    Set pActiveView = pMxDoc.ActiveView

'Scroll through all elements on the layout
Dim pGraphicsCont As IGraphicsContainer
    Set pGraphicsCont = pActiveView.GraphicsContainer

    pGraphicsCont.Reset

Dim pElement As IElement
    Set pElement = pGraphicsCont.Next

Do Until pElement Is Nothing

    'Check the element's name - we are looking for one called "FileName"
    Dim pElementProp As IElementProperties
        Set pElementProp = pElement

            If pElementProp.Name = "FileName" Then

                'Double-check that this is a text element
                    If TypeOf pElement Is ITextElement Then

                        'Make Sure You Reference Microsoft Scripting Runtime or this will not work!!!!!!

                        Dim pTemplates As ITemplates
                            Set pTemplates = Application.Templates
                            
                        Dim lTempCount As Long
                            lTempCount = pTemplates.Count
                            
                        ' Normal is always the first item
                        Dim strNormalPath As String
                            strNormalPath = pTemplates.Item(0)
                            
                        ' The document is always the last item
                        Dim strDocPath As String
                            strDocPath = pTemplates.Item(lTempCount - 1)
                            
                        ' If present, the base template is the middle item
                        Dim strBasePath As String
                            If lTempCount = 3 Then
                                strBasePath = pTemplates.Item(1)
                            Else
                                strBasePath = "NO BASE TEMPLATE LOADED"
                            End If
                            
                        ' Report pathnames
                        ' MsgBox "Normal Template:  " & strNormalPath & vbNewLine & "Base Template:  " & strBasePath & vbNewLine & "Document:  " & strDocPath
                        
                        'Update the text to the file path of the project
                        Dim pTextElement As ITextElement
                            Set pTextElement = pElement
                            
                        Dim fso As New FileSystemObject
                        Dim f As File
                            Set f = fso.GetFile(strDocPath)
                            
                        Dim filedate As String
                            filedate = f.DateLastModified
                            'MsgBox filedate
                            
                            pTextElement.Text = "Map Plotted: " & Now & ", " & "Map Edited: " & filedate & ", " & "File: " & strDocPath
                            
                    End If

            End If

    'Move on to the next graphic element
    Set pElement = pGraphicsCont.Next

Loop

'Refresh the display
pActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing

End Sub

Hors ligne

 

#3 Wed 08 August 2018 07:55

Laurent75019
Participant actif
Lieu: La Réunion_974
Date d'inscription: 15 Jul 2011
Messages: 96

Re: Date automatique_ArcMap9.3

Merci Robin,

Oui ma version ArcGis Desktop 9.3.1 ne permet pas l'ajout de texte dynamique venu pour la v10. C'est quand même étrange de ne pas avoir la possibilité pour cette version, ancienne certes, d'insérer une "date" dans la mise en page sans avoir à la mettre à jour manuellement! bref.

Coïncidence ! hier j'ai trouvé également ce lien que tu transmets community.esri.com/thread/14193
J'ai testé le code puis le suivant, pour l'instant sans succès.

Je dois faire des erreurs dues à mon manque de pratique en vba.

D'après le post, le code doit renvoyer la phrase suivante:
Map Plotted: 10-08-10 15:50, Map Edited: 10-08-10 15:49, File: C:\Maps\Client\Map.mxd


J'ai suivi les instructions données et mes interrogations sont sur 3 points:

1. Inset --> Text


Que doit-on inscrire ? :
- seulement "Texte" en Fr ou "Text" en Eng
- pTextElement.Text = "Map Plotted: " & Now & ", " & "Map Edited: " & filedate & ", " & "File: " & strDocPath
- "Map Plotted: " & Now & ", " & "Map Edited: " & filedate & ", " & "File: " & strDocPath


3. Paste Code Below and reference AddFilePath in your code that is already written.


Je ne comprends pas ce que signifie "référencer AddFilePath dans le code déjà écrit" ?? Dans la fenêtre Microsoft Visual Basic, sous Projet, il y a 2 dossiers : ArcMap Objects/ ThisDocument ou j'ai copier le code. Il y a un second dossier References avec la possibilité de renseigner les propriétés du projet (Name, Description, ect..), est-ce une réponse ? ou pas !


Ma version ArcGis Desktop 9.3.1 est française. Cela a t-il des incidences sur la compréhension du code copié par le système Windows 7 Professionnel

Merci pour les compléments d'infos
Laurent

Hors ligne

 

Pied de page des forums

Powered by FluxBB