Tallennusmakro??

Miten saan makron tallentamaan työkirjan siten, että sen nimeksi tulee tietystä solusta haettu arvo?
7795
Äänestä

Muut lukivat myös

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
----------------------------

Äänestä
  • täytyypä testata huomenna työpaikalla.

    Äänestä

  • tiedustelija kirjoitti:

    täytyypä testata huomenna työpaikalla.

    Miten tallennuspaikaksi saa oletushakemiston, ts. se jossa alkuperäinen tiedosto kulloinkin sijaitsee?

    Äänestä

  • tiedustelija kirjoitti:

    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
    -----------------------

    Äänestä

  • Excelit.fi kirjoitti:

    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

    Äänestä

  • koodaajaoppilas kirjoitti:

    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

    Äänestä

  • koodaajaoppilas kirjoitti:

    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
    ------------------------------

    Äänestä

Kommentoi aloitusta


tiedustelija kirjoitti:

Miten saan makron tallentamaan työkirjan siten, että sen nimeksi tulee tietystä solusta haettu arvo?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu