Hay RPG , bedankt voor je antwoord.
Feitelijk is de manier waarop ik werk zo dat eerst de originele sheet weer geladen wordt en daarna de ingevulde afgesloten wordt dus grofweg op deze manier.
(VBA Excel zoals hij was, beetje strak onder elkaar gezet even)
Als er op de knop Opslaan wordt geklikt gebeurt onderstaande.
Eerst wordt de drive, pad en bestandsnaam opgeslagen in strFileFullName met het commando dat LibreOffice dus niet kent, ThisWorkbook.FullName
Excel kent dat dus wel.
Dan wordt gekeken of de in de hoofdsheet bepaalde Driveplus map voor opslag bestaan, zo niet dan wordt die aangemaakt (die info staat in cel F1.
Huidige ingevulde formulier wordt opgeslagen op de in de hoofdsheet bepaalde drive en map (info staat in cel P5)
Daarna wordt eerst met Workbooks.Open strFileFullName het originele formulier geopend.
Dat gaat dus fout omdat LibreOffice dat eerder commando niet kent.
Afsluiten van de ingevulde sheet gaat dan ook niet omdat de afhandeling stopt.
Ik ben geen grote kenner van VBA maar met het handboek van Win de Groot en internet ben ik er wel uit voor grote delen.
In Excel gaat dus alles feilloos.
Het voordeel van deze manier van werken is dat niet bekend hoeft te staan waar het originele formulier staat.
Private Sub CommandButton1_Click()
strFileFullName = ThisWorkbook.FullName
Application.DisplayAlerts = False
If Dir(Range(“F1:F1”), vbDirectory) = “” Then
MkDir (Range(“F1:F1”))
Else
End If
If Dir(Range(“P5:P5”), vbDirectory) = “” Then
MkDir (Range(“P5:P5”))
Else
End If
sNewFile = (Sheets(“Warmtescan Form”).Range(“P5”)) & (Sheets(“Warmtescan Form”).Range(“L9”)) & “.xlsm”
strsNewFile = sNewFile
ThisWorkbook.SaveAs Filename:=strsNewFile
Application.DisplayAlerts = True
MsgBox “Bestand " & strsNewFile & " opgeslagen!”
Application.ScreenUpdating = True
Workbooks.Open strFileFullName
ThisWorkbook.Close SaveChanges:=False
End Sub
Ik heb nu een (voorlopige?) oplossing maar die heef het nadeel dat je op een andere manier moet opgeven waar het originele formulier zich bevind.
Omdat er haast was heb ik er voor gekozen dat dit dan maar op dezelfde locatie moet komen als waar de resultaten komen.
Minder flexibel en meer voorbereiding voor diegenen die er mee moeten werken en die niet altijd veel kaas gegeten hebben van alles.
Dat heb ik maar zo opgelost (het werkt nu wel in LibreOffice en Excel, maar de opgeslagen bestanden zijn daarna niet meer werkbaar voor Excel. Wel lezen maar opslaan lukt daarna niet meer).
Ik sla nu standaard vanuit LibreOffice op in het Excel 2007 en nieuwere .xlsx formaat maar lekker werkt het niet.
En elke gebruiker moet eerst in LibreOffice settings aanpassen en tussendoor steeds op waarschuwingen klikken.
Al met al niet zo makkelijk.
Uiteraard staat opnieuw in cel F1 drive en pad
Private Sub CommandButton1_Click()
Application.DisplayAlerts = False
If Dir(Range(“F1:F1”), vbDirectory) = “” Then
MkDir (Range(“F1:F1”))
Else
End If
strFileFullName = (Sheets(“Warmtescan Form”).Range(“F1”)) & "Warmtescan-test1.xlsm"
If Dir(Range(“P5:P5”), vbDirectory) = “” Then
MkDir (Range(“P5:P5”))
Else
End If
sNewFile = (Sheets(“Warmtescan Form”).Range(“P5”)) & (Sheets(“Warmtescan Form”).Range(“L9”)) & “.xlsm”
strsNewFile = sNewFile
ThisWorkbook.SaveAs Filename:=strsNewFile
Application.DisplayAlerts = True
MsgBox “Bestand " & strsNewFile & " opgeslagen!”
Application.ScreenUpdating = True
MsgBox strFileFullName
Workbooks.Open strFileFullName
ThisWorkbook.Close SaveChanges:=False
End Sub
Als met al blijft het lastig en niet zoals ik het wil voor de gebruikers.
Groet,
Bob