drogba28
Messages postés13Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention30 mars 2011
-
30 mars 2009 à 12:50
drogba28
Messages postés13Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention30 mars 2011
-
31 mars 2009 à 13:27
Bonjour,
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Je débute sur Vb et j’ai un petit problème pour un code.
Je souhaite à l’aide d’un bouton ouvrir un PDF en chemin relatif sur une page précise.
J’utilise le code ci-dessous qui fonctionne très bien mais il me manque juste la partie du code pour préciser la page que je souhaite ouvrir.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 31 mars 2009 à 13:17
CommandButton2_Click est une procédure appelée automatiquement lorsque l'on clique sur le bouton nommé CommandButton2
si tu t'amuses a modifier ses parametres, VBA va se perdre.
----------
ces lignes sont a placer dans la partie déclaration (tout en haut) du code de ta form:
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private 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
----------------
Cette fonction est a coller telle quelle:
Private Sub OpenPDF(ByRef vsFilePath As String, Optional ByVal vnPage As Long = 1)
Dim sBuffer As String
Dim nLength As Long
sBuffer = Space$(260)
nLength = FindExecutable(vsFilePath, vbNullString, sBuffer)
If nLength Then
nLength = InStr(sBuffer, vbNullChar)
If nLength Then
sBuffer = Left$(sBuffer, nLength - 1)
ShellExecute 0&, "open", sBuffer, "/A page=" & Trim$(Str$(vnPage)) & " """ & vsFilePath & """", vbNullString, 1
End If
End If
End Sub
---------------
Enfin, pour ouvrir le PDF, il te suffit d'appeler la fonction OpenPDF en lui spécifiant le chemindu document a ouvrir :
le /A page=xx est a placer avant le nom du PDF à ouvrir...
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private 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
Private Sub OpenPDF(ByRef vsFilePath As String, Optional ByVal vnPage As Long = 1)
Dim sBuffer As String
Dim nLength As Long
sBuffer = Space$(260)
nLength = FindExecutable(vsFilePath, vbNullString, sBuffer)
If nLength Then
nLength = InStr(sBuffer, vbNullChar)
If nLength Then
sBuffer = Left$(sBuffer, nLength - 1)
ShellExecute 0&, "open", sBuffer, "/A page=" & Trim$(Str$(vnPage)) & " """ & vsFilePath & """", vbNullString, 1
End If
End If
End Sub
Private Sub Form_Load()
OpenPDF "H:\Data\Doc\Win32 Core API.pdf", 40
End Sub
drogba28
Messages postés13Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention30 mars 2011 31 mars 2009 à 12:46
Re, j'ai fais ce code
Private Sub CommandButton2_Click(ByRef vsFilePath As String, Optional ByVal vnPage As Long = 1)
Dim sBuffer As String
Dim nLength As Long
sBuffer = Space$(260)
nLength = FindExecutable( vsFilePath, vbNullString, sBuffer)
If nLength Then
nLength = InStr(sBuffer, vbNullChar)
If nLength Then
sBuffer = Left$(sBuffer, nLength - 1)
ShellExecute 0&, "open", sBuffer, "/A page=2" & Trim$(Str$(vnPage)) & " """ & vsFilePath & """", vbNullString, 1
End If
End If
End Sub
Private Sub Form_Load()
OpenPDF ActiveWorkbook.Path & "\Fiche PFE\Conseil Général\agriculture-gda08.pdf", 40
End Sub