Microsoft 365 macro pour convertir des fichiers ods en xls

Coralie01120

XLDnaute Occasionnel
Bonjour le forum,

Je bloque sur un problème depuis un moment et je n'arrive pas à le résoudre.
J'ai plusieurs fichier en ods dont je souhaite extraire certaines infos dans un autre classeur pour faire une BDD.
Mes fichiers ods sont identiques et sont protégés par un mot de passe en feuil2. Les infos sont donc toujours dans les mêmes cellules.

A l'aide du forum j'ai une macro qui me permet de récupérer mes données... à condition que ce soient des fichiers en xls. Le fait que ma feuille soit protégée par un mdp et que les classeurs soient en ods ca ne fonctionne pas. Incompatibilité excel et ods...

Je souhaite donc convertir une très grande quantité de fichier ods en xls. Est ce faisable via une macro ?

Bonne soirée,
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

=>sylvanu
On se rejoint sur ce point ;)
Donc il faudrait une macro sous LibreOffice (donc pas en langage VBA) qui ouvre les fichiers *.ods et les enregistre sous (mais sans mot de passe)
NB: Tu connais les mots de passe de ces fichiers ?
Mais je ne serai pas ce bon samaritain car si je parle VBA, je suis muet en langage macro Libre Office ;)
(et mes recherches sur G..gle n'ont pas été concluantes)
 

Staple1600

XLDnaute Barbatruc
Re

Alors pour ceux qui veulent tenter l'aventure
(j'ai trouvé ceci dans Libre Office)
Code:
' Opens a Document, checks beforehand, whether it has to be loaded
' or whether it is already on the desktop.
' If the parameter bDisposable is set to False then the returned document
' should not be disposed afterwards, because it is already opened.
Function OpenDocument(DocPath as String, Args(), Optional bDisposable as Boolean)
Dim oComponents as Object
Dim oComponent as Object
	' Search if one of the active Components is the one that you search for
	oComponents = StarDesktop.Components.CreateEnumeration
	While oComponents.HasmoreElements
		oComponent = oComponents.NextElement
		If hasUnoInterfaces(oComponent,"com.sun.star.frame.XModel") then
			If UCase(oComponent.URL) = UCase(DocPath) then
				OpenDocument() = oComponent
				If Not IsMissing(bDisposable) Then
					bDisposable = False
				End If
				Exit Function
			End If
		End If
	Wend
	If Not IsMissing(bDisposable) Then
		bDisposable = True
	End If
	OpenDocument() = StarDesktop.LoadComponentFromURL(DocPath,"_default",0,Args())
End Function

Sub UnprotectSheets(Optional oSheets as Object)
Dim i as Integer
Dim oDocSheets as Object
	If IsMissing(oSheets) Then
		oDocSheets = StarDesktop.CurrentFrame.Controller.Model.Sheets
	Else
		Set oDocSheets = oSheets
	End If

	For i = 0 To oDocSheets.Count-1
		oDocSheets(i).Unprotect("")
	Next i
End Sub
Malheureusement, ce que j'ai tenté a échoué.
 

Discussions similaires

Réponses
6
Affichages
256