Аргумент не является обязательным и неверным числом аргументов или ошибочным присвоением свойства. - PullRequest
0 голосов
/ 05 октября 2018

Мне бы хотелось, чтобы следующий код запускался при каждом открытии книги.Я получаю пару ошибок, которые вы можете увидеть в моих комментариях.Я уверен, что это очень простая вещь, которую мне не хватает, и я не смог понять это.Спасибо за потраченное время!

Public FSO As Scripting.FileSystemObject
Public SourceFolder As Scripting.Folder, SubFolder As Scripting.Folder
Public FileItem As Scripting.File
Public FolderName As Object

Private Sub Workbook_Open()
'I would like to run this every time the workbook opens. This is where I am getting my Argument Not Optional Error.
Call ListFilesInFolder(SourceFolder)

End Sub

Sub ListFilesInFolder(SourceFolder As Scripting.Folder, Subfolders As Boolean) 'Do I need everything in the parentheses?

Application.ScreenUpdating = False

MsgBox "SOP's Database will update automatically"

Dim r, LstR As Long
Dim SOPRng As Range

Set SOPRng = ActiveSheet.ListObjects("SOPDatabase").Range

ActiveSheet.ListObjects("SOPDatabase").Unlist

SOPRng.ClearFormats

UserName = Environ("UserName")
fPath = "Target File Path"

    Set FSO = New Scripting.FileSystemObject
    Set SourceFolder = FSO.GetFolder(fPath)

    r = 2

    On Error Resume Next
    For Each FileItem In SourceFolder.Files

        Cells(r, 1) = r - 1
        Cells(r, 2) = FileItem.Name
        Cells(r, 3) = FileItem.Type
        Cells(r, 4) = FileItem.DateLastModified
        Cells(r, 6).Formula = "=HYPERLINK(""" & FileItem.Path & """,""" & "Click Here to Open" & """)"

        r = r + 1

    Next FileItem
I can get up to here to work just fine.  Going into the subfolders below is not working.  I am getting  error.

    If Subfolders Then
        For Each SubFolder In SourceFolder.Subfolders
            ListFilesInFolder SubFolder, True '"wrong number of arguments or invalid property assignment" and "ListFilesInFolder" is highlighted
        Next SubFolder
    End If
'The rest of the macro is working just fine.

    Set FileItem = Nothing
    Set SourceFolder = Nothing
    Set FSO = Nothing

LstR = ActiveSheet.Columns("$B").End(xlDown).Row

Set SOPRng = ActiveSheet.Range("$A$1:$G$" & LstR)

Set SOPDatabase = ActiveSheet.ListObjects.Add(xlSrcRange, SOPRng, , xlYes, , "TableStyleMedium2")

        SOPDatabase.Name = "SOPDatabase"

With SOPDatabase.Range
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
End With
With SOPDatabase.HeaderRowRange
    .Font.Bold = True
    .Font.Size = 14
    .Font.Color = vbBlack
    .WrapText = True
End With


Application.ScreenUpdating = True

End Sub

Возможно, у меня недостаточно знаний о VBA и о том, как определять переменные.Я все еще пытаюсь понять эту часть.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я не думаю, что код, который вы разместили, скомпилируется.Вы вызываете Call ListFilesInFolder(SourceFolder), но для подпрограммы требуются два аргумента: SourceFolder и Subfolders.Возможно, вы добавили параметр Subfolders в ListFilesInFolder(SourceFolder As Scripting.Folder, Subfolders As Boolean) ПОСЛЕ того, как в ListFilesInFolder SubFolder, True?

появилась ошибка «неправильное количество аргументов». Другими словами, этот код компилируется и выполняется до * 1007?*

0 голосов
/ 05 октября 2018

изменить

Call ListFilesInFolder(SourceFolder)

на

Call ListFilesInFolder(SourceFolder,True)

это должно как минимум привести к ошибке, отличной от вашей текущей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...