JG73
Messages postés2Date d'inscriptionlundi 20 août 2007StatutMembreDernière intervention21 août 2007
-
20 août 2007 à 03:02
vbnet64
Messages postés1Date d'inscriptionmardi 9 octobre 2007StatutMembreDernière intervention 9 octobre 2007
-
9 oct. 2007 à 15:58
Bonjour,
Je fais face à un problème d'exécution d'un script. A la première exécution le script se déroule correctement. Mai a la deuxième j'ai l'erreur suivante: "Run-time error '91': Object variable or with blockvariable not set".
Le script est arrété sur l'instruction " Selection.copy".
Je suis alors obligé d'arréter le script de fermer le fichier EXCEL ouvert par le script. Si j'exécute le scipt à nouveau je n'ai pas d'erreur. J'ai remarquer qu'en pointant sur les methods "Worksheet" ou "Rows" de mon script, au premier passage j'ai le tooltype text suivant "Worksheets =<Object variable or With block variable not set>". Au second passage, celui qui génère une erreur, j'ai le tooltype text suivant "Worksheets =<Method 'Worksheets' of Object '_global' not set>".
Le script est executé à partir de Microsoft Visual basic 6.3 intégré à une application Allen Bradley RSView Studio SE.
Le script est le suivant:
Private Sub Button3_Released()
'Best to define variable first but not nessecary
Dim ObjExcelApp As Object
Dim Fname As String
Dim name As String
Fname = "C:\Classeur1.xls" 'name of already created excel project
Set ObjExcelApp = CreateObject("Excel.Application")
ObjExcelApp.Visible = True
ObjExcelApp.Workbooks.Open (Fname)
ObjExcelApp.Worksheets("Feuil1").Activate
ObjExcelApp.Worksheets("Feuil1").cells(1, "A").Value = "OK man" 'Write date to cell A1
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 20 août 2007 à 15:56
Salut,
Le mieux, c'est de virer tout ce qui concerne les objets de type "Selection", "ActiveSheet", "ActiveCell" (bref, les "ActiveXXXX").
Evite également les méthodes Activate et Select.
Elles sont utiles si tu veux positionner le curseur sur la cellule Excel ou afficher une feuille précise, sinon ça apporte des ennuis mais pas d'intérêt.
Pour moi, ton code devrait donner qqe chose comme ça :
Private Sub Button3_Released()
'Best to define variable first but not nessecary
Dim ObjExcelApp As Object
Dim l_WorkBook As Object
Dim Fname As String
Dim name As String
Fname = "C:\Classeur1.xls" 'name of already created excel project
Set ObjExcelApp = CreateObject("Excel.Application")
ObjExcelApp.Visible = True
'l_WorkBook représente le classeur que tu as ouvert
Set l_WorkBook = ObjExcelApp.Workbooks.Open (Fname)
'ObjExcelApp.Worksheets("Feuil1").Activate
With l_WorkBook.Worksheets("Feuil1")
.Cells(1, "A").Value = "OK man" 'Write date to cell A1
.Range("A1").Copy .Range("B2") 'Copy data from A1 to B2
End With
l_WorkBook.Close True 'Save and close the workbook
ObjExcelApp.Quit 'Close Excel
Set l_WorkBook = Nothing
Set ObjExcelApp = Nothing
JG73
Messages postés2Date d'inscriptionlundi 20 août 2007StatutMembreDernière intervention21 août 2007 21 août 2007 à 02:30
Bonjour et merci pour votre réponse rapide. J'ai modifié mon script sur vos conseils mais malheureusement sans succès. La réponse faite par mrdep1978 a résolu le problème.