Aller au contenu

verif fichier lecture seule


Messages recommandés

Posté(e)

bonjour

 

voici un bout de code que j'ai placé dans acaddoc.lsp

 

 
(defun vlx-Open-Excel9-Exist (xfile dmode / appsession)

 (cond
   ((setq appsession (vlax-Create-Object "Excel.Application"))
    (vlax-invoke-Method
      (vlax-Get-Property appsession 'WorkBooks)
      'Open
      ;xfile
      (findfile xfile)
    ) ;_ end of vlax-invoke-Method
    (if (= (strcase dmode) "SHOW")
      (vla-Put-Visible appsession 1)
      (vla-Put-Visible appsession 0)
    ) ;_ end of if
   )
 ) ;_ end of cond
 appsession
)

(defun vlx-Excel-Quit (appsession)
 (vlax-Invoke-Method appsession 'QUIT)
 (if (vlax-Property-Available-p appsession 'Visible)
   (princ "\n<<<  Excel est encore actif !!!  >>>")
   ;(princ "\n<<<  Excel vient d'être fermé  >>>.")
 ) ;_ end of if
)

(defun vlx-Excel-Put-CellValue2 (row col valeur)
 (xlp-Put-Value2
   (vlx-Excel-Get-Cell
     (xlp-Get-ActiveSheet excelapp) 
     row
     col
     ) ;_ end of vlxx-Excel-Get-Cell
   (vlax-Make-Variant valeur)
   ) ;_ end of msxl-Get-Value
)


(defun vlx-Excel-Get-Cell (rng relrow relcol)
 (vlax-Variant-Value
   (xlp-Get-Item
     (xlp-Get-Cells rng)	 ; rng est un VLA-object représentant la feuille active du classeur actif
     (vlax-Make-Variant relrow) ; relrow est un nombre représentant le numéro de ligne
     (vlax-Make-Variant relcol) ; relcol est un nombre représentant le numéro de colonne
   ) ;_ end of excelp-Get-Item
 ) ;_ end of vlax-Variant-Value
 )

(defun test (/ valeur nomdufichier excelapp excelsheet fichierexcel excel_version)
 (setq fichierexcel "C:/test.xls"
excelapp (vlx-Open-Excel9-Exist fichierexcel "hide")
excelsheet (vlax-get excelapp "Sheets")
)
 (vlx-Excel-Put-CellValue2 1 1 "ok")
 (vla-save (vlax-get excelapp "ActiveWorkbook"))
 (vlx-Excel-Quit excelapp)
 )

(test)

 

mon problème : comment faire pour vérifier que "test.xls" ne soit pas en lecture seule

car si j'ouvre 2 sessions autocad , alors l'une d'elles ouvrira "test.xls" en lecture seule

 

de plus , le (vla-save (vlax-get excelapp "ActiveWorkbook")) ne me plait pas , car il enregistre le classeur actif sans faire référence à son nom et répertoire

 

quelqu'un a t-il une idée

Posté(e)

Salut

 

Pour vérifier un fichier, tu fais un (open "Mon_fichier" "a") et si tu as nil comme retour, c'est qu'il est en lecture seul.

 

Ensuite, pour faire la vérif que le fichier n'est pas déjà ouvert dans Excel, je fais

 

 (defun lancer_excel(/ sel)
   (setq xl  (vlax-get-or-create-object "Excel.Application"))
   (setq wks (vlax-get xl 'Workbooks))
   (vlax-for sel wks
     (setq liste_fichiers_ouvert (cons (strcase (vlax-get sel 'fullname)) liste_fichiers_ouvert))
   )
 )

 

et je regarde dans la liste liste_fichiers_ouvert.

 

(vla-save (vlax-get excelapp "ActiveWorkbook"))

Pour Sauvegarder, je ferme directement mon fichier de cette manière

 

Sauvegarder

(vlax-invoke-method Mon_Fichier_Xls 'close :vlax-true)

ou pas

(vlax-invoke-method Mon_Fichier_Xls 'close :vlax-false)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é