Miten saan makron tallentamaan työkirjan siten, että sen nimeksi tulee tietystä solusta haettu arvo?
Tallennusmakro??
tiedustelija
7795
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 7
Vanhimmat
Esimerkissä tiedosto tallentuu C:n juureen solun A1 arvon mukaisesti:
----------------------------
Sub TallennusNimellä()
'
' TallennusNimellä Macro
' Macro recorded 2.2.2005 by Excelit.fi
'
Dim Nimi As String
Nimi = Range("A1")
ChDir "C:\"
ActiveWorkbook.SaveAs Filename:= _
"C:\" & Nimi & ".xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
End Sub
----------------------------
täytyypä testata huomenna työpaikalla.
Miten tallennuspaikaksi saa oletushakemiston, ts. se jossa alkuperäinen tiedosto kulloinkin sijaitsee?
Oletushakemisto lisätty aikaisempaan koodin eli lopullinen koodi on seuraava:
-----------------------
Sub TallennusNimellä()
'
' TallennusNimellä Macro
' Macro recorded 2.2.2005 by Excelit.fi
'
Dim Nimi As String
Dim Oletushakemisto As String
Nimi = Range("A1")
Oletushakemisto = ActiveWorkbook.Path
MsgBox "Tallennetaan nimellä " & Nimi & ".xls hakemistoon " & Oletushakemisto
ChDir Oletushakemisto
ActiveWorkbook.SaveAs Filename:= _
Oletushakemisto & "/" & Nimi & ".xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
End Sub
-----------------------
tämä olikin näppärä makro! Mutta entä miten tuossa message boxissa saisi myös valinnat Kyllä, ei ja peruuta?? Löysin MSDN:stä ohjeen käyttää vbYesNoCancel - määrittelyä message boxille, mutta en saa toimimaan siten, että Kyllä- valinnalla tallentaa, ja peruuta ja ei- vaihtoehdoilla vain sulkee boxin
Eli eikös se ole jotakuinkin näin, mutta mitä tulee kohtaan "Else"?? Vai onko koodissa muitakin virheitä tai puutteita?
Sub TallennusNimellä()
'
' TallennusNimellä Macro
'
Dim Nimi As String
Dim Oletushakemisto As String
Nimi = Range("A1")
Oletushakemisto = ActiveWorkbook.Path
MsgBox "Tallennetaan nimellä " & Nimi & ".xls hakemistoon " & Oletushakemisto, vbYesNoCancel
If MsgBoxResult = Yes Then
ChDir Oletushakemisto
ActiveWorkbook.SaveAs Filename:= _
Oletushakemisto & "/" & Nimi & ".xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
Else
' Perform some other action.
End If
End Sub
MsgBoxResult ei auta Excelissä sillä kyseinen komento kuuluu Wordin VBA:han, ei Exceliin. Excelissä helppo tapa on tehdä MsgBoxin paluuarvosta muuttuja, esim: Kysymys = MsgBox().
Toiseksi, koska käytit vbYesNoCancel-komentoa, MsgBoxin paluuarvoon pitää viitata If-lausekkessa vbYes -arvolla, pelkkä Yes ei riitä.
Muuten oli kyllä ihan ok, Elsen jälkeen ei tarvitse laittaa mitään jos ei halua.
Esimerkki koodissa:
------------------------------
Sub TallennusNimellä()
'
' TallennusNimellä Macro
'
Dim Nimi As String
Dim Oletushakemisto As String
Nimi = Range("A1")
Oletushakemisto = ActiveWorkbook.Path
Kysymys = MsgBox("Tallennetaan nimellä " & Nimi & ".xls hakemistoon " & Oletushakemisto, vbYesNoCancel)
If Kysymys = vbYes Then
ChDir Oletushakemisto
ActiveWorkbook.SaveAs Filename:= _
Oletushakemisto & "/" & Nimi & ".xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
Else
End If
End Sub
------------------------------