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-
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-
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
juuri tuollaista tarkoitinkin, kiitos!
-Pasi-
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
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.