Aller au contenu

verif fichier lecture seule


kekseksa

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é