Trouver lien absolu pour le convertir en lien relatif

Résolu/Fermé
Messages postés
687
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
21 novembre 2021
-
Messages postés
687
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
21 novembre 2021
-
Bonsoir la communauté ^^
Je cherche à ouvrir un fichier depuis une macro. Ce fichier à ouvrir se trouve dans le même dossier que le fichier où se trouve cette même macro (au pire dans un dossier enfant).
Je suis "parvenu" à déterminer le chemin du fichier source avec :
Sub RecupChemin
	' déclaration des variables
	Dim objWriter As Object			' déclaration de notre fichier
	Dim strCheminParent As String	' chemin sans le fichier	
	Dim tab() As String				' tableau permettant d'avoir le détail du chemin
	Dim i As Integer
 
	objWriter = ThisComponent
	tab() = Split(Right(objWriter.URL,Len(objWriter.URL)-8),"/")
	For I = 0 to Ubound(tab())-1
		strCheminParent =strCheminParent & tab(i)&"\"
	Next I
	MsgBox strCheminParent
 
End Sub

Le MsgBox m'indique effectivement le chemin absolu du fichier (peut-être existe-t-il un moyen plus simple).
Je pensais pouvoir réutiliser cette information pour la suite de ce que je veux faire.
C'est à dire ouvrir un fichier après avoir saisi le bon mot de passe :
Sub ouvrirfinjeu 
   Dim Fichier As String 
   Dim Wb As Object 
   Dim Args() 
   DIm mdp as String
 
  mdp = INPUTBOX("Mot de passe")
  If mdp = "mdp" then goto OUVRE else goto FIN
  
 OUVRE:
 rem ouveture en pps ou odp
 Fichier = ConvertToUrl ("C:\Users\chemin\finjeu.pps") 
 Wb = StarDesktop.loadComponentFromURL(Fichier,"_blank",0 ,Args() )
 FIN:

End Sub

Comment remplacer la partie indiquant le chemin du fichier par celle du dossier indiquée par strCheminParent ?

Merci d'avance de votre aide ! :)


1 réponse

Messages postés
2744
Date d'inscription
vendredi 25 juillet 2014
Statut
Membre
Dernière intervention
25 janvier 2022
1 269
Bonjour
après avoir bidouillé il s'avère que la difficulté est de jongler avec séparateurs / et \ pour les adresses de fichier type file:///C:/rep et c:\rep

une propositiion de solution (supprimer ensuite les msgbox ou précéder d e REM)

Sub ouvrirfinjeu 
   Dim Fichier_mdp_ok As String
   Dim Fichier_mdp_nok As String
   
   Dim lance_mdp_ok As Object
   Dim lance_mdp_nok As Object
   Dim Args() 
   DIm mdp as String
 
rem RecupChemin
	' déclaration des variables
	Dim objWriter As Object			' déclaration de notre fichier
	Dim strCheminParent As String	' chemin sans le fichier	
	Dim tab() As String				' tableau permettant d'avoir le détail du chemin
	Dim i As Integer
 
	objWriter = ThisComponent
	tab() = Split(Right(objWriter.URL,Len(objWriter.URL)-8),"/")

	For I = 0 to Ubound(tab())-1
		strCheminParent =strCheminParent & tab(i)&"\"
	Next I
	MsgBox " adresse type c: "&strCheminParent
rem nombre de caractère de l'adresse type c:
	nbcar_chemin = len(strCheminParent)
	msgbox "nb car type c: "& nbcar_chemin
rem nombre de cractère de file:/// = 8
rem nombre de caractère du chemin type file:/// 
nbcar_chemin_file=	nbcar_chemin+8
msgbox nbcar_chemin_file

rem mot de passe
  mdp = INPUTBOX("Mot de passe")
  If mdp = "mdp" then goto MDP_OK else goto ERREUR_MDP


  
 MDP_OK:
 
Fichier_mdp_ok = ConvertToUrl (left(ThisComponent.getURL(),nbcar_chemin_file)&"finjeu.odp")
lance_mdp_ok = StarDesktop.loadComponentFromURL(Fichier_mdp_ok,"_blank",0 ,Args() )
  exit sub

 ERREUR_MDP:
   rem ouveture fichier mdp incorrect
   Fichier_mdp_nok = ConvertToUrl (left(ThisComponent.getURL(),nbcar_chemin_file)&"erreurmdp.odp")
   lance_mdp_nok = StarDesktop.loadComponentFromURL(Fichier_mdp_nok,"_blank",0 ,Args() )
End Sub 
Messages postés
687
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
21 novembre 2021
52
Magnifique ! Du premier coup ^^
Tout fonctionne à merveille. J'ai simplement changé mon dossier de place. On verra ce que ça donne depuis un autre poste.

Juste une question. A quoi servent ces MsgBox ? Quel intérêt ai-je de savoir le nombre de caractères contenus dans le chemin du fichier ?
msgbox "nb car type c: "& nbcar_chemin
msgbox nbcar_chemin_file
Messages postés
2744
Date d'inscription
vendredi 25 juillet 2014
Statut
Membre
Dernière intervention
25 janvier 2022
1 269
Bonjour
les msgbox peuvent être supprimées, c'était pour déboguer.
Messages postés
687
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
21 novembre 2021
52
Ah d'accord. Merci ! :)