открытие html файла с помощью vba - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть несколько. html файлов, которые я хочу прочитать с помощью vba. Я написал эти коды, чтобы делать то, что я хочу, но я получаю

переменную объекта или с переменной блока не установлена ​​

ошибка.

Dim arrListATA() As String
    Dim arrListTaskNo() As String
    Dim arrListDesc() As String
    Dim arrIssueNo() As String
    Dim arrIssueDate() As String
    Dim arrPartNo() As String
    Dim arrDMC() As String
    Dim arrApplicability() As String
    Dim arrDMCModelCode() As String
    Dim DMCs As String
    Dim arrSubTask() As String
    Dim subTasks As String
    Dim subs() As Variant
    Dim subs1 As String

   k = 0

   Dim objFile As Scripting.File
   Dim objFolder As Scripting.Folder

   Set objFSO = CreateObject("Scripting.FileSystemObject")
w = 0
m = 0
b = 0
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)

    With fd
    fd.Filters.Clear
     If fd.Show = -1 Then
     myTopFolderPath = fd.SelectedItems(1)
    Set objFolder = objFSO.GetFolder(myTopFolderPath)
    Dim arrSplitedDMC As Variant
    Dim arrSubTasks As Variant
        For Each objFile In objFolder.Files
        Debug.Print myTopFolderPath & "\" & objFile.Name
        If Right(objFile.Name, 4) = "html" And Len(objFile.Name) = 33 And Left(objFile.Name, 8) <> "V2500-00" Then
            Debug.Print myTopFolderPath & "\" & objFile.Name
            Workbooks.Open Filename:=myTopFolderPath & "\" & objFile.Name
            Debug.Print "Opened"

            lastrow = Cells(Rows.Count, 1).End(xlUp).Row
            taskCheckFlag = False
            myTemp = ""
            partNoFlag = False
            mySubTask = ""

            For i = 1 To lastrow
                txt = Cells(i, 1)
            Next i

My путь к папке и имена моих объектов, например:

C: \ Users \ ftk1187 \ Desktop \ V2500 - Copy \ V2500-00-70-72-02-00A-363A-D. html

Он не открывает мои. html файлы. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 01 февраля 2020

Код ниже фактически выполняется.

Option Explicit

Private Sub Test()

    Dim arrListATA() As String
    Dim arrListTaskNo() As String
    Dim arrListDesc() As String
    Dim arrIssueNo() As String
    Dim arrIssueDate() As String
    Dim arrPartNo() As String
    Dim arrDMC() As String
    Dim arrApplicability() As String
    Dim arrDMCModelCode() As String
    Dim DMCs As String
    Dim arrSubTask() As String
    Dim subTasks As String
    Dim subs() As Variant
    Dim subs1 As String
    Dim objFSO As FileSystemObject
    Dim Fd As FileDialog
    Dim objFile As Scripting.File
    Dim objFolder As Scripting.Folder
    Dim arrSplitedDMC As Variant
    Dim arrSubTasks As Variant
    Dim myTopFolderPath As String



    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set Fd = Application.FileDialog(msoFileDialogFolderPicker)
'    k = 0
'    w = 0
'    m = 0
'    b = 0

    With Fd
        .Filters.Clear
        If .Show = -1 Then
            myTopFolderPath = .SelectedItems(1)
            Set objFolder = objFSO.GetFolder(myTopFolderPath)
            For Each objFile In objFolder.Files
                Debug.Print myTopFolderPath & "\" & objFile.Name
                Debug.Print myTopFolderPath
                Debug.Print objFile.Name
                Debug.Print Right(objFile.Name, 4), Len(objFile.Name), Left(objFile.Name, 8)

'                If Right(objFile.Name, 4) = "html" And Len(objFile.Name) = 33 And Left(objFile.Name, 8) <> "V2500-00" Then
'                    Debug.Print myTopFolderPath & "\" & objFile.Name
'                    Workbooks.Open Filename:=myTopFolderPath & "\" & objFile.Name
'                    Debug.Print "Opened"
'
'                    lastrow = Cells(Rows.Count, 1).End(xlUp).Row
'                    taskCheckFlag = False
'                    myTemp = ""
'                    partNoFlag = False
'                    mySubTask = ""
'
'                    For i = 1 To lastrow
'                        txt = Cells(i, 1)
'                    Next i
            Next objFile
        End If
    End With
End Sub

Вы увидите, что я добавил Option Explicit вверху и несколько объявлений, которые отсутствовали. Переменные k, w, m и b также не объявлены, но если они являются числами, их значение должно быть уже 0 в этой точке кода. Согласно моим исследованиям, Excel должен иметь возможность открывать файл HTML, но мне интересно, что он может показать.

В качестве общего совета я бы порекомендовал вам создать свой код как один Main подпрограмма, которая вызывает другие подпрограммы и функции, каждая из которых не превышает 10-25 строк кода. В вашем коде вы уже превышаете это число в своих декларациях. Эффект - это конструкция, которую вы не можете контролировать.

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