Sheet name

Terve,

onko keinoa saada selville jonkin Exceltiedoston kaikkien sheetien nimet makrolla?

Tarkoitus on se, että työkirjassa on sheetteja jotka on nimetty vuosiluvun mukaan eli 2002, 2003, 2004 jne. Jos työkirja avataan vuonna, jonka nimistä sheetiä ei vielä ole, tarkoitus on automaattisesti luoda uusi lomake jonka nimi on ko. vuosiluku (kun työkirja avataan ensimmäistä kertaa vuonna 2005, luodaan uusi sheetti).

Vaihtoehtoisesti voin selvittää aktiivisen sheetin nimen ActiveSheet.Name -menetelmällä, mutta miten voin varmistaa että viimeisin taulukko on aktiivinen tämän koodin suorituksen aikana?

Minun pitäisi siis selvittää mikä vuosiluku on "viimeisimmän" sheetin nimi tai onko kuluvan vuoden nimistä sheetiä olemassa.

-Pasi-
6342
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Sub ChkSheets()
Dim b As Boolean
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Sheets
If sh.Name = CStr(Year(Now)) Then
b = True
ActiveWorkbook.Sheets(sh.Name).Activate
End If
Next
If b = False Then
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Year(Now)
End If
End Sub

Äänestä
  • juuri tuollaista tarkoitinkin, kiitos!

    -Pasi-

    Äänestä

  • voiko jonkin kansion (polku tiedossa) tiedostoja selata samaan tapaan, eli katsoa löytyykö sieltä jokin tietyn niminen tiedosto?

    Tällä hetkellä yritän vain avata tiedoston, ja jos sen nimistä ei ole olemassa, virheen sieppauksen kautta (OnError goto jonnekin) tulee ruudulle ilmoitus siitä ettei tiedostoa löytynyt.. -Ei kovin fiksua..

    -Pasi-

    Äänestä

  • Pasi kirjoitti:

    voiko jonkin kansion (polku tiedossa) tiedostoja selata samaan tapaan, eli katsoa löytyykö sieltä jokin tietyn niminen tiedosto?

    Tällä hetkellä yritän vain avata tiedoston, ja jos sen nimistä ei ole olemassa, virheen sieppauksen kautta (OnError goto jonnekin) tulee ruudulle ilmoitus siitä ettei tiedostoa löytynyt.. -Ei kovin fiksua..

    -Pasi-

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthfileexists.asp

    Äänestä

  • mmm kirjoitti:

    Kiitos taas. Sain homman toimimaan muokkaamalla koodia hieman.

    Täytyy vain tunnustaa etten oikein ymmärrä mitä koodi tekee, tämänkin sain toimimaan vain tutkimalla muita esimerkkejä ja kokeilemalla:


    Sub FileSearch()

    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    If (fso.fileexists("C:\Omat Tiedostot\mallipohja.xlt")) Then
    MsgBox "Tiedosto löytyi"
    Else
    MsgBox " Tiedostoa ei löytynyt"
    End If

    End Sub

    Viitsisitkö valaista hieman mitä nuo set, fso, scripting ja FileSystemObject -hässäkät oikein tarkoittavat..?

    -Pasi-

    Äänestä

  • Pasi kirjoitti:

    Kiitos taas. Sain homman toimimaan muokkaamalla koodia hieman.

    Täytyy vain tunnustaa etten oikein ymmärrä mitä koodi tekee, tämänkin sain toimimaan vain tutkimalla muita esimerkkejä ja kokeilemalla:


    Sub FileSearch()

    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    If (fso.fileexists("C:\Omat Tiedostot\mallipohja.xlt")) Then
    MsgBox "Tiedosto löytyi"
    Else
    MsgBox " Tiedostoa ei löytynyt"
    End If

    End Sub

    Viitsisitkö valaista hieman mitä nuo set, fso, scripting ja FileSystemObject -hässäkät oikein tarkoittavat..?

    -Pasi-

    Set - normaali VB:n avainsana, jolla asetetaan tiettyyn muuttujaan jokin objekti. Objekti voi olla vaikka lomake tai sen jokin tekstikenttä tai sitten luotu objekti, kuten tässä.

    fso - Tässä esimerkissä tämä on pelkästään muuttujan nimi. Dim fso-lause asettaa fso-nimisen muuttujan variant-tietotyyppiseksi.

    Scripting.FileSystemObject - Luotavan objektin luokka.

    Googlettamalla (CreateObject, Scripting, FileSystemObject) löydät varmasti lisää tietoa, mikäli aihe kiinnostaa.

    Äänestä

Kommentoi aloitusta


Pasi kirjoitti:

Terve,

onko keinoa saada selville jonkin Exceltiedoston kaikkien sheetien nimet makrolla?

Tarkoitus on se, että työkirjassa on sheetteja jotka on nimetty vuosiluvun mukaan eli 2002, 2003, 2004 jne. Jos työkirja avataan vuonna, jonka nimistä sheetiä ei vielä ole, tarkoitus on automaattisesti luoda uusi lomake jonka nimi on ko. vuosiluku (kun työkirja avataan ensimmäistä kertaa vuonna 2005, luodaan uusi sheetti).

Vaihtoehtoisesti voin selvittää aktiivisen sheetin nimen ActiveSheet.Name -menetelmällä, mutta miten voin varmistaa että viimeisin taulukko on aktiivinen tämän koodin suorituksen aikana?

Minun pitäisi siis selvittää mikä vuosiluku on "viimeisimmän" sheetin nimi tai onko kuluvan vuoden nimistä sheetiä olemassa.

-Pasi-

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