Inhiber Workbook_Open

R

Roland

Guest
Bonsoir à tout le Forum

J'ai un classeur qui peut être activer de deux manières

1) par VBA depuis un autre classeur pour y placer des données

2) par un utilisateur pour y faire un traitelement automatiser dans Workbook_Open qui s'exécute normalement.

Mon souhait est dans le premier cas où je voudrais savoir si avec Worksbook.Open FileName:=" toto.xls" on peut soit interdir l'exécution de Workbook_Open soit passer un paramètre pour que l'application toto distingue qu'elle est activer par VBA ou par un utilisateur.

Merci par avance de tout indications sur ce sujet
Amicalement Roland
 
@

@+Thierry

Guest
Bonsoir Roland, le Forum

Bonne question et j'ai eu justement à traiter ce problème professionnellement il y a peu de temps...

Voici comment je ferai pour aller écrire dans un fichier qui contient une macro évènementielle sans que celle-ci se déclenche, le sauver et le refermer.

Option Explicit

Sub OpenWithOutOpenMacro()
Dim FileToOpen As Variant
Dim WB As Workbook

FileToOpen = Application.GetOpenFilename
If FileToOpen <> False Then


With Application
.EnableEvents = False

Set WB = Workbooks.Open(FileToOpen)
With WB
.Sheets(1).Range("A1") = "Mis à Jour le " & Format(Now, "DD/MM/YYYY HH:MM:SS")
.Close True
End With

.EnableEvents = True
End With
End If
End Sub


Bonne Programmation et Soirée
@+Thierry
 
R

Roland

Guest
Bonsoir @+Thierry

Un grand Merci cela fonctionne parfaitement. Encore une nouveauté pour moi.


Amitiès Roland (ce n'est pas moi sur la photo mais je me joint a ces applaudissements)

PS: si tu as des tuyaux pour le passage de paramètres cela m'intéresse pour autre chose.
 
@

@+Thierry

Guest
Re Salut Roland, le Forum

Merci pour les applaudissements !

J'utilise des passages de paramères (d'arguments si j'ai compris) dans mon dernier outil pour XLD, pour l'instant on est en Beta Version avec des soucis sous XP 2003 mais je pense que çà va tourner pour tout le monde sous peu... (Lien supprimé

Dans le contexte de mon exemple précédent, en extrapollant, voici comment je m'y prendrai si je devais récupérer la valeur de la cellule "B2" de toutes les feuilles donc le nom commence par "Open" du classeur actif... Chacune de ces feuilles contenant le nom d'un classeur existant en "A1"...

Sub TransmitArguments()
Dim WS As Worksheet
Dim FileToOpen As String
Dim StringToReport As String

For Each WS In Worksheets
If Left(WS.Name, 6) = ("Closed") Then
Application.DisplayAlerts = False
WS.Delete
ElseIf Left(WS.Name, 5) = ("Open") Then
FileToOpen = WS.Range("A1")
StringToReport WS.Range("B2")
Report Filetopen, StringToReport
End If
Next WS
End Sub


Sub Report(FileName As String, StringReport As String)
Dim WB As Workbook

With Application
.EnableEvents = False
Set WB = Workbooks.Open(FileName)
With WB
.Sheets(1).Range("A2") = StringToReport
.Close True
End With
.EnableEvents = True
End With
End If
End Sub


Donc FileToOpen et StringToReport sont bien trasmises dans la Macro Report depuis la Macro TransmitArguments....

Mais ce n'est peutêtre pas çà ta question !!!

Bonne Nuit
@+Thierry
 
R

Roland

Guest
Re @+Thierry

Merci je jette un oeil demain ...
Je dois faire un brin de nostalgie, je pense en réalité au %1, %2, .... que l'on récupérait dans les fichiers de commande. Mais je pense que les moteurs sont toujours là.

Ex: excel.exe /e n'ouvre pas de nouveau classeur au lancement d'excel.

Enfin rien de très grave Docteur

Bonne nuit à tous Roland
 

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 407
Membres
103 201
dernier inscrit
centrale vet