Lite överkommenterat: Stega igenom koden med F8-knappen och håll musen över variabelnamnen för att se hur texterna ändras.
************************************************
Sub test()
' deklarera variablerna. inte nödvändigt men helt nödvändigt :-)
Dim sSökväg As String
Dim sFilnamn As String
'Hämta sökvägen för den aktiva boken
sSökväg = ThisWorkbook.Path
'Hämta filnamnet
sFilnamn = ThisWorkbook.Name
'tag bort filändelsen (hitta sista punkten och hämta allt vänster om den)
sFilnamn = Left(sFilnamn, InStrRev(sFilnamn, ".") - 1)
'Slå ihop sökväg och filnamn
sFilnamn = sSökväg & "\" & sFilnamn
'spara med valt filnamn (filändelsen txt kommer automatiskt)
ThisWorkbook.SaveAs Filename:=sFilnamn, FileFormat:=xlText, CreateBackup:=False
End Sub
************************************************
det kan verka onödigt krångligt att köra:
sFilnamn = Left(sFilnamn, InStrRev(sFilnamn, ".") - 1)
Men du skriver olika filändelser i din fråga och nyare excel har xlsm som standard för makroböcker så det är lika bra att krångla till det .
Det här är koden funkar lika bra om du bara vill ersätta xlm med txt
sFilnamn = Replace(expression:=sFilnamn, Find:=".xlm", Replace:=".txt")
Hemläxa för din personliga utveckling: Googla gärna lite på skillnader mellan
- ThisWorkbook.
- ActiveWorkbook.
- Me.
innan du använder min kod. De kan peka på samma arbetbok eller helt olika beroende på hur de används. Det kan vara viktigt att hålla reda på när du använder kod från nätet.
Och använd F1 knappen flitigt i koden om du blir osäker. Excel VBA har bra hjälp