Erreur à la deuxième exécution du script [Résolu]

Signaler
Messages postés
2
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
21 août 2007
-
Messages postés
1
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
9 octobre 2007
-
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

Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
7 juin 2009
4
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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>
Messages postés
2
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
21 août 2007

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
Messages postés
1
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
9 octobre 2007

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