Olisiko jollakin Excelin makrorivit jolla saisin listattua Excel-taulukkoon tietyn hakemiston (vaikkapa "C:\apu") tiedostot.
Vaihtoehtoja on jonkin verran mutta esim:
Sub Tiedostot() Dim nimi As String, rivi As Long rivi = 1 t = Dir("c:\apu\") While t <> "" Cells(rivi, 1).Value = t t = Dir() rivi = rivi + 1 Wend End Sub
Hei Grez! Kiitos paljon, tätä juuri kaipasin. Muutinkin saman tien myös Wordille.
Sub TiedostoListaus() Dim nimi As String, rivi As Long rivi = 1 t = Dir("c:\apu\") While t <> "" Selection.TypeText Text:=t t = Dir() Selection.TypeParagraph Wend End Sub
Mod. lisäsi kooditagit!
Heippa! Olisiko jollain vielä aikaa laittaa minulle koodi, jolla voisin yllä olevan kaltaisesti listata myös tiedostojen ominaisuuksia, esimerkiksi viimeisen muokkauspäivän tai tiedoston koon. Löysin netistä tällaisen, mutta makro kaatuu kohtaan
Set MyObject = New Scripting.FileSystemObject
"User-defined type not defined"
http://msdn.microsoft.com/en-us/library/gg251694.aspx
Riittääkö jokin objektikirjaston tai valmiin tyyppikirjaston määritys. Minulla on Excelin versio Office365
Sub ListaaTiedostot() Dim iRow iRow = 11 Call ListMyFiles(Range("C7"), Range("C8")) End Sub Sub ListMyFiles(mySourcePath, IncludeSublolders) Set MyObject = New Scripting.FileSystemObject Set mySource = MyObject.GetFolder(mySourcePath) MsgBox (mySource) On Error Resume Next For Each myFile In mySource.Files iCol = 2 Cells(iRow, iCol).Value = myFile.Path iCol = iCol + 1 Cells(iRow, iCol).Value = myFile.Name iCol = iCol + 1 Cells(iRow, iCol).Value = myFile.Size iCol = iCol + 1 Cells(iRow, iCol).Value = myFile.DateLastModified iRow = iRow + 1 Next If IncludeSubÍolders Then For Each mySubFolder In mySource.SubFolders Call ListMyFiles(mySubFolder.Path, True) Next End If End Sub
Mod. lisäsi kooditagit! Voisitko vihdoin opetella käyttämään itse?
Anteeksi kooditagien puuttuminen, yritän opella.
Muutin. Lisäsin kutsuun "iRow". Muutin "Set MyObject"-rivin. Sain toimimaan vain solussa "C7" merkityssä hakemistossa, en kuitenkaan sen alihakemistoissa. Mikähän solussa "C8" (IncludeSublolders) arvo pitäisi olla, jotta if-osio saisi muuta kuin "empty"-arvon.
Sub ListMyFiles(iRow, mySourcePath, IncludeSublolders) Set MyObject = CreateObject("Scripting.FileSystemObject") Set mySource = MyObject.GetFolder(mySourcePath)
Katso nyt tuota koodiasi, yhdessä kohdassa on IncludeSublolders ja toisessa IncludeSubÍolders (l vs. Í), kun oikea kirjoitusasu olisi IncludeSubfolders (f). Ehkä kannattaisi laittaa ihan tiedoston alkuun rivi Option Explicit
, niin kaikki muuttujat pitäisi määritellä (Dim, Public tms.) ja tulisi vähemmän tällaisia virheitä.
Kiitos Metabolix! En huomannut. Nyt toimii. Täytyy ruveta määrittelemään. Olen tehnyt viimeksi kauan aikaa sitten ja nyt kertailen tietojani lähinnä lukemalla, mitä muut ovat tehneet. Tuota ekaa (Grez) ajattelin käyttää mm cd-levyjen tiedostolistauksien tekemiseen tarroihin ja tätä hakemiston siivoamiseen (näytä, siirrä, tuhoa -näppäimillä).
Aihe on jo aika vanha, joten et voi enää vastata siihen.