Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Tiedostolistaus Exceliin

anneli [14.04.2013 11:58:53]

#

Olisiko jollakin Excelin makrorivit jolla saisin listattua Excel-taulukkoon tietyn hakemiston (vaikkapa "C:\apu") tiedostot.

Grez [14.04.2013 16:36:11]

#

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

anneli [17.04.2013 10:36:42]

#

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!

anneli [20.04.2013 11:39:19]

#

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?

anneli [21.04.2013 12:26:16]

#

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)

Metabolix [21.04.2013 12:41:03]

#

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

anneli [21.04.2013 13:49:53]

#

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ä).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta