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 SubHei 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 SubMod. 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 SubMod. 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.