Erreur à la deuxième exécution du script

Résolu
JG73 Messages postés 2 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 21 août 2007 - 20 août 2007 à 03:02
vbnet64 Messages postés 1 Date d'inscription mardi 9 octobre 2007 Statut Membre Derniè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


ObjExcelApp.Worksheets("Feuil1").Range("A1").Select
    Selection.Copy
ObjExcelApp.Worksheets("Feuil1").Range("B2").Select
    ActiveSheet.Paste


ObjExcelApp.Workbooks.Close
ObjExcelApp.Quit
Set ObjExcelApp = Nothing


End Sub

Si quelqu'un connaitrait la solution à ce problème.

D'avance merci

JG

4 réponses

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
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

End Sub
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 août 2007 à 03:47
salut,

n'utilise pas le type Object mais Excel

1/ dans le menu Projet, références, coche Microsoft Excel Object Library.

remplace Dim ObjExcelApp As Object
par Dim ObjExcelApp As New Excel.Application

et supprime
Set ObjExcelApp = CreateObject("Excel.Application")

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
0
JG73 Messages postés 2 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 21 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.


Encore merci


JG73
0
vbnet64 Messages postés 1 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 9 octobre 2007
9 oct. 2007 à 15:58
Bonjour, quand j'ai eu ce problème je l'ai corriger en ajoutant l'objet avant la sélection ex:  objexcelapp.Selection.Copy

vbnet
0
Rejoignez-nous