Aller au contenu

Executer une macro à l'ouverture d'un fichier


Messages recommandés

Posté(e)

Bonjour à tous

J'ai créé une petite macro dans mon fichier DWG qui me permet d'ouvrir Onenote pour y indiquer toutes les modifications que j'apporte à mon plan.

Mais est-il possible que cette macro s’exécute directement que j'ouvre mon fichier.

 

Merci d'avance pour votre aide.

Bonne journée

Posté(e)

Coucou,

C'est pas du VBA mais bon, si jamais cela peut t'aider :

(startapp "C:\\Program Files\\Microsoft Office\\root\\Office16\\OneNote.exe") ; Dans le cas d'Office 2016
Citation

startapp (AutoLISP)

 
 
 

Starts a Windows application

(startapp appcmd[file]) 

Arguments

appcmd

A string that specifies the application to execute. If appcmd does not include a full path name, startapp searches the directories in the PATH environment variable for the application.

file

A string that specifies the file name to be opened.

Return Values

An integer greater than 0, if successful; otherwise nil.

Examples

The following code starts Windows Notepad and opens the acad.lsp file.

Command: (startapp "notepad" "acad.lsp")

33

If an argument has embedded spaces, it must be surrounded by literal double quotes. For example, to edit the file my stuff.txt with Notepad, use the following syntax:

Command: (startapp "notepad.exe" "\"my stuff.txt\"")

33

Il suffit ensuite d'enregistrer le fichier sous le nom acaddoc.lsp dans le dossier C:\Users\...\AppData\Roaming\Autodesk\AutoCAD 20##\R24.1\fra\Support (évidemment, remplacer "..." par le nom d'utilisateur et "##" par la version d'AutoCAD installée).
Ce fichier est chargé automatiquement à chaque ouverture de fichier (nouveau ou existant). Il existe évidemment d'autres moyen pour charger un fichier .lsp automatiquement à l'ouverture d'un fichier (cf. le cours de (gile) >>ici<<).

N'utilisant pas OneNote personnellement, je ne sais pas s'il y a des fichiers associés et donc s'il est possible d'ouvrir OneNote directement sur le bon fichier (avec un (getvar "DWGNAME") par exemple si tu nommes tes OneNote avec le nom du .dwg) en utilisant l'argument facultatif [file].

Bisous,
Luna

  • Like 1
Posté(e)

J'utilise ça :

ça appelle le shell pour ouvrir un fichier et donc ouvre le fichier suivant l'application par défault de celui - ci
 

et tu veux l'ouvrir quand ?

 

edit : MonFichier est le chemin du fichier

Public Function OuvrirFichier(MonFichier As String)
On Error GoTo OuvertureFichierErreur
   'vérifie si le fichier existe
   If Len(Dir(MonFichier)) = 0 Then
      OuvrirFichier = False
      Exit Function
   Else
   End If
   'ouvre le fichier dans son application associée
   Dim MonApplication As Object
   Set MonApplication = CreateObject("Shell.Application")
    MonApplication.Open (MonFichier)
    OuvrirFichier = True
   Set MonApplication = Nothing
Exit Function

OuvertureFichierErreur:
   Set MonApplication = Nothing
    OuvrirFichier = False
End Function

 

Posté(e)
Il y a 1 heure, Curlygoth a dit :

J'utilise ça :

ça appelle le shell pour ouvrir un fichier et donc ouvre le fichier suivant l'application par défault de celui - ci
 

et tu veux l'ouvrir quand ?

 

edit : MonFichier est le chemin du fichier

Public Function OuvrirFichier(MonFichier As String)
On Error GoTo OuvertureFichierErreur
   'vérifie si le fichier existe
   If Len(Dir(MonFichier)) = 0 Then
      OuvrirFichier = False
      Exit Function
   Else
   End If
   'ouvre le fichier dans son application associée
   Dim MonApplication As Object
   Set MonApplication = CreateObject("Shell.Application")
    MonApplication.Open (MonFichier)
    OuvrirFichier = True
   Set MonApplication = Nothing
Exit Function

OuvertureFichierErreur:
   Set MonApplication = Nothing
    OuvrirFichier = False
End Function

 

Bonjour

 

J'aimerais que le code s’exécute quand j'ouvre un fichier dwg spécifique

 

Bonne journée

 

Posté(e)

il faut juste que tu verifies :

thisdrawing.name = [NOM_DE_TON_FICHIER]

dans le module thisdrawing
 

Private Sub AcadDocument_Activate()

if thisdrawing.name = [NOM_DE_TON_FICHIER] then call Ouvrirfichier([NOM_DE_TON_FICHIER])

End Sub

attention se simple code executera a chaque fois que ton dessin sera actif ! tu devrais je pense le compléter pour vérifié si le fichier à ouvrir est en lecture seul ou non.

  • Like 1
Posté(e)

Re-bonjour @Curlygoth@Luna

J'ai encore une petite question

J'ai adapté mon code est cela fonctionne super bien.

J'ai placé dans Thisdrawing

Private Sub AcadDocument_Activate()

'' MON CODE

End Sub

Mais j'aimerai que cela fonctionne sur une version Lt

Y a t-il une possibilité de le faire ?

 

Merci d'avance

Bonne journée

Posté(e)

Malheureusement les versions LT ne prennent pas en compte les langages de programmation....

Seulement les scrpit mais vu que tu dois lancer un scrpit à l'ouverture il te faut à minima le déclenchement par  "évenement" (ouverture d'un DWG) et ça c'est unqiuement par programmation et non en script

  • Like 1
Posté(e)
il y a 38 minutes, Curlygoth a dit :

Malheureusement les versions LT ne prennent pas en compte les langages de programmation....

Seulement les scrpit mais vu que tu dois lancer un scrpit à l'ouverture il te faut à minima le déclenchement par  "évenement" (ouverture d'un DWG) et ça c'est unqiuement par programmation et non en script

Merci

  • 4 mois après...
Posté(e)

Bonjour la communauté.
Je suis tombé sur ces messages, voici ce que j'utilise régulièrement en VBA pour ouvrir n'importe-quel fichier :

Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Document = "C:Exemple\.....\Fichier.ext"
Result = ShellExecute(0&, vbNullString, Document, vbNullString, vbNullString, vbNormalFocus)

Pour les macros, seul le DIESEL fonctionne sous LT. Les autres (Lisp, VBA...) ne fonctionneront pas, même si elle sont lancées par un script.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

au plus simple et doinc sans verif et en natif :

   Dim MonApplication As Object
   Set MonApplication = CreateObject("Shell.Application")
    MonApplication.Open (MonFichier)

L'avantage de mon psot haut : c'est qu'il te retourne s'il code a réussi ou non ! pratique pour la suite d'une execution plus complexe 

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité