Bonjour, je fais tourner une macro dans un document Word.
Globalement, cette macro vient mettre à jour les document Excel embarqués.
Ce code fonctionnait parfaitement jusqu'à aujourd'hui alors que je n'y ai pas touché.
Voici le code :
C'est donc au niveau de ".OLEFormat.Object.Save" que la macro plante et que le message apparaît.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 Sub UpdateEmbeddedXLSM() Dim workbook As InlineShape Dim ProceduresCallExistsResponse As Boolean For Each workbook In ActiveDocument.InlineShapes With workbook If .Type = wdInlineShapeEmbeddedOLEObject Then Debug.Print "######### New Embedded or Linked Object ##########" ''# Excel.Sheet.12 -> .xlsx If .OLEFormat.ClassType = "Excel.Sheet.12" Then ''# Open Object as spreadsheet .OLEFormat.DoVerb wdOLEVerbPrimary End If ''# Excel.SheetMacroEnabled.12 -> xlsm If .OLEFormat.ClassType = "Excel.SheetMacroEnabled.12" Then ''# Open Object as spreadsheet .OLEFormat.DoVerb wdOLEVerbPrimary ' 'Checks if the macro "ProceduresCall" exists before calling it ProceduresCallExistsResponse = ProceduresCallExists(.OLEFormat.Object) Debug.Print "ProceduresCallExistsResponse: "; ProceduresCallExistsResponse If ProceduresCallExistsResponse Then ' 'Executes macro "ProceduresCall" included with the embeddeed object .OLEFormat.Object.ProceduresCall End If End If ' 'Saves the current workbook .OLEFormat.Object.Save ' 'Shuts the current workbook and if there's no other workbook in Excel, shuts Excel as well .OLEFormat.Object.Close End If End With Next workbook End Sub
J'ai mis cette ligne de code en commentaire et le code plante sur la ligne suivante ".OLEFormat.Object.Close" avec le message d'erreur "Erreur d'exécution '1004' - la méthode Close de la classe Workbook a échoué.".
J'ai alors mis cette dernière ligne de code en commentaire et, alors, la macro s'exécute correctement et les Excels embarqués sont bien mis à jour.
Par contre du coup, les modifications au niveau des Excels embarquées ne sont pas enregistrées et ceux-ci restent ouverts dans l'instance d'Excels.
Mais de toute façon, le problème pour moi est bien que le code fonctionnait avant et que, sans modification, il plante.
NB : en cherchant sur le Net, j'ai vu certains posts parlant de problème de registre. Mais j'ai essayé de "cleané" le registre, rien n'y fait. Peut-être que je m'y prends de la mauvaise façon...
Quelqu'un a-t-il déjà rencontré ce problème et pourrait m'aider s'il vous plaît ? Merci de votre aide,
Erwan
Partager