Hirdetés

Új hozzászólás Aktív témák

  • Delila_1
    veterán

    Excelben, VBA-val akarod ezt megoldani? Vagy valamilyen dotnetes nyelven inkább?

    Ha előbbi, akkor nem igazán látom, mi akasztott meg, ha már a feladat lényege elkészült. A 2-es ponthoz segíthet például ez:

    Option Base 1
    Function GetFileNames(directoryPath As String) As String()
    Dim namepathlist() As String
    Dim fshelper As Object
    Dim targetdir As Object
    Dim filecnt%, i%
    On Error Resume Next

    Set fshelper = CreateObject("Scripting.FileSystemObject")
    Set targetdir = fshelper.GetFolder(directoryPath)
    filecnt = targetdir.Files.Count
    If filecnt > 0 Then
    ReDim namepathlist(filecnt, 2)
    i = 1
    For Each f In targetdir.Files
    namepathlist(i, 1) = f.Name
    namepathlist(i, 2) = f.path
    i = i + 1
    Next
    End If
    On Error GoTo 0
    GetFileNames = namepathlist
    End Function

    Persze nem biztos, hogy érdemes külön függvényt írni csak ezért, és akár a Dir() függvényre is rá lehet nézni, aztán amelyik egyszerűbb, azzal menni tovább.

    Ami meg a 3. pontot illeti, ezt nem így csinálnám, de ennek csak praktikus okai vannak. Mielőtt az egész 50-es iteráció elindul, azelőtt kellene beolvasni változókba az összes előírt fájlnevet és jelszót, ezután jöhet a könyvtár aktuális tartalma, lásd fent, és végül egy olyan iteráció, ami az aktuális listán megy végig, és ha talál az adott példányhoz jelszót, akkor elvégzi a már kész lépéseket.

    Szerkesztés: elnézést, Vertusnak szól,

    Nálam a makrót tartalmazó füzet első lapján, az A oszlopban vannak a fájlnevek, kiterjesztéssel. Mellettük a B-ben a hozzájuk tartozó jelszavak.
    Két helyen kell a makrót személyre szabnod. Az első az utvonal változó, a második a Match függvényes sor. Mindkettő végére tettem 3 db *-ot.

    Private Sub Megnyit()
    Dim FN As String, sor As Variant, jelszo
    Const utvonal As String = "F:\Eadat\Próba\" '***

    ChDir utvonal
    FN = Dir(utvonal & "*.xlsx")
    Do While FN <> ""
    On Error Resume Next
    sor = Application.Match(FN, Sheets(1).Columns(1), 0) '***
    If sor = vbError Then
    On Error GoTo 0
    Else
    jelszo = Sheets(1).Cells(sor, 2)
    Workbooks.Open Filename:=utvonal & FN, Password:=jelszo
    '*******************************************************
    'másolás
    '*******************************************************
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    End If
    FN = Dir()
    Loop
    End Sub

Új hozzászólás Aktív témák