-2

Как вы и предполагали, я внес изменения, но все же я не могу сделать их удобными для пользователя, или вы можете сказать, что каждый раз, когда мне приходится использовать этот код, я должен включить Scripting Runtime на разных компьютерах.

Пожалуйста, предложите и сделайте мой код исправленным как можно скорее

Sub GetFileNamesandPageCount()
    Option Explicit
    Public fs As Object

    Dim diaFolder As FileDialog
        Set fs = CreateObject("Scripting.FileSystemObject")
        Dim i As Integer
        Dim fld As Object
        Dim T_Str As String
        Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
        diaFolder.AllowMultiSelect = False
        diaFolder.Show
    If diaFolder.Show = -1 Then
        T_Str = diaFolder.SelectedItems(1)
    Else
        Set diaFolder = Nothing
    End If
        Set fld = fs.getfolder(T_Str)
        Dim wdOBJ As Word.Application
        Dim wdDoc As Object
        Dim fd As Object

        Sheet1.UsedRange.Clear
        Sheet1.Range("A1") = "Document Name"
        Sheet1.Range("B1") = "Page Count"
        Sheet1.Range("A1:B1").Font.Bold = True
        Sheet1.Columns("A:A").ColumnWidth = 70
        Sheet1.Columns("B:B").AutoFit
        Sheet1.Range("A1:B1").Interior.ColorIndex = 37
        fs.GetSpecialFolder (1)
        Set wdOBJ = CreateObject("Word.Application")
        wdOBJ.Visible = True
        i = 1

        For Each fd In fld.Files
            If (InStr(1, fd, ".doc") > 0) Or (InStr(1, fd, ".docx") > 0) Or (InStr(1, fd, ".docm") > 0) Or (InStr(1, fd, ".doct") > 0) Or (InStr(1, fd, ".pdf") > 0) Then
                Sheet1.Range("A" & i + 1) = fd.Name
                Set wdDoc = wdOBJ.Documents.Open(CStr(fd))
                wdDoc.ComputeStatistics (wdStatisticPages)
                Sheet1.Range("B" & i + 1) = wdDoc.BuiltinDocumentProperties(14)

                wdDoc.Close False
            End If
            i = i + 1
        Next fd

        wdOBJ.Quit False

    End Sub

1 ответ1

-1

Поскольку вы устанавливаете wdOBJ как позднюю привязку, вы должны измерять его как Object, а не как Word.Заявка. После этого вы сможете удалить ссылку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .