je cherche a écrire une macro qui boucle sur les liens de la feuille active et ouvre le fichier lié s'il s'agit d'un fichier .pdf
Chaque feuille de ce classeur sera ensuite imprimée.
Quelqu'un peux m'aider??
Bicker
je cherche a écrire une macro qui boucle sur les liens de la feuille active et ouvre le fichier lié s'il s'agit d'un fichier .pdf
Chaque feuille de ce classeur sera ensuite imprimée.
Quelqu'un peux m'aider??
Bicker
Bonjour,
Une piste :
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 Declare Function ShellExecute _ Lib "shell32.dll" _ Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Sub Test() Dim Lien As Hyperlink For Each Lien In ActiveSheet.Hyperlinks If LCase(Right(Lien.Address, 4)) = ".pdf" Then ShellExecute 0, "open", Lien.Address, vbNullString, vbNullString, 1 End If Next Lien End Sub
Salut,
Une autre version sans API:
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 Sub OpenAdobePdfHyperlink() Const PDF_EXT = ".pdf" Dim Hyperlink As Hyperlink If Not ActiveWorkbook Is Nothing Then If Not ActiveWorkbook.ActiveSheet Is Nothing Then For Each Hyperlink In ActiveWorkbook.ActiveSheet.Hyperlinks With Hyperlink If Right(LCase(.Address), Len(PDF_EXT)) = PDF_EXT Then .Follow NewWindow:=False End If End With Next End If End If End Sub
merci beaucoup Nouveau2. Le lien ouvre mais je voudrais qu'il s'imprime.
J'ai trouvé un code qui semble bien mais il ouvre seulement les classeur .xls. Si il ouvrait les .pdf, ce serait nickel.
le voici:
merci !
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 Sub imprimerPageActiveEt_Liensclasseurs() Dim Lien As Hyperlink Dim I As Byte Application.ScreenUpdating = False 'Imprime la feuille active ActiveSheet.PrintOut 'Boucle sur les liens de la feuille active For Each Lien In ActiveSheet.Hyperlinks 'Vérifie si le lien correspond à un classeur If Right(Range(Lien.Range.Address).Hyperlinks(1).Address, 4) = ".xls" Then 'Déclenche le lien pour ouvrir le classeur Range(Lien.Range.Address).Hyperlinks(1).Follow NewWindow:=False 'Imprime le classeur ActiveWorkbook.PrintOut 'Referme le classeur ActiveWorkbook.Close End If Next Application.ScreenUpdating = True End Sub
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 Declare Function ShellExecute _ Lib "shell32.dll" _ Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Sub Test() Dim Lien As Hyperlink For Each Lien In ActiveSheet.Hyperlinks If LCase(Right(Lien.Address, 4)) = ".pdf" Then 'l'ouvre... ShellExecute 0, "open", Lien.Address, vbNullString, vbNullString, 1 'l'imprime... ShellExecute 0, "print", Lien.Address, vbNullString, Lien.Address, 0& End If Next Lien End Sub
Partager