[Base] Substitut contrôle hyperlien

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur : Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
claudius
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 11 août 2008 16:26

[Base] Substitut contrôle hyperlien

Message par claudius »

Bonjour

Comme je cherche depuis longtemps une macro permettant d'ouvrir un fichier à partir d'un contrôle texte de formulaire dans lequel est inscrit une adresse de fichier, d'URL, ou de mail et que j'ai trouvé quelque chose qui marche, je mets cette macro sur le forum pour amélioration éventuelle.

J'ai un formulaire dans lequel il y un contrôle de table et des contrôles de texte liés

La macro me permet en cliquant sur un bouton (la macro est dans évènements bouton de souris enfoncé)à côté du contrôle texte contenant l'adresse du fichier, d'ouvrir ce fichier.
ça marche pour les pdf, url, fichiers .odt et .eml donc tous les fichiers je suppose...

Code : Tout sélectionner

REM  *****  BASIC  *****


Option Explicit

Sub SubstitutHyperlien
Dim monDocument As Object
Dim lesFormulaires AS Object, unFormulaire As Object, unSousFormulaire As Object

Dim monCtrl As Object, Adresse As String
Dim sv As Object, fichier As String

monDocument = thisComponent
lesFormulaires = monDocument.DrawPage.Forms
unFormulaire = lesFormulaires.getByName("Formulaire principal")'nom du contrôle de table dans le formulaire, qui sert de liste principale
unSousFormulaire = unFormulaire.getByName("Sous formulaire")'nom du sous formulaire lié au contrôle de table

monCtrl = unSousFormulaire.getByName("Adresse courrier scanné")'nom contrôle texte contenant l'adresse du fichier à ouvrir, entre guillemets doubles
Adresse = monCtrl.Text


sv = createUnoService("com.sun.star.system.SystemShellExecute")
sv.execute(Adresse, "",0)

End Sub
Pièces jointes
BD hyperlien.odb
(12.37 Kio) Téléchargé 1581 fois
OpenOffice 2.3 sous Windows XP
Jazzjoker
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 22 janv. 2015 10:48

Re: [Base] Substitut contrôle hyperlien

Message par Jazzjoker »

Merci de votre réponse si rapide ! Je vais essayer de mettre cela en oeuvre, même si mes connaissances sont modestes; cette approche me semble intéressante dans la mesure où elle exploite un chemin de fichier et non pas un fichier enregistré dans la base. Je reviendrai vers vous - et naturellement dans la section "Macros et Api" !

Merci !
Apache OpenOffice 4.1.5
Windows XP, 10
Avatar de l’utilisateur
anatole
Membre hOOnoraire
Membre hOOnoraire
Messages : 128
Inscription : 30 oct. 2010 18:54

Re: [Base] Substitut contrôle hyperlien

Message par anatole »

Un peu tard... mais merci.
En simplifiant votre code je me suis fait une macro pour un bouton situé à côté d'une "Zone de texte" contenant un lien hypertexte, et permettant d'ouvrir celui-ci. En donnant le même nom à ce champ, je peux réutiliser ce bouton dans tous les formulaires des différentes tables où il y a un tel champ "lien hypertexte"

Code : Tout sélectionner

Sub OuvrirLienHTTP_1(oEv as Object)
Dim oForm as Object, monCtrl as Object, sv as Object
Dim Adresse as String
	oForm = oEv.Source.Model.Parent
	monCtrl = oForm.getByName("NomDeLazoneDeTexte")
	Adresse = monCtrl.Text
	sv = createUnoService("com.sun.star.system.SystemShellExecute")
	sv.execute(Adresse, "",0)	
	End Sub
Rien de bien extraordinaire mais j'avais beaucoup cherché avant d'en arriver là ! :)
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
Répondre