Извлечение VBA из [закрытой] электронной таблицы Excel

Вы можете использовать метод replace для удаления ненужных ':

if int(spisok_cen.get_attribute('textContent').replace("'", ""))<=10 and int(spisok_cen.get_attribute('textContent').replace("'", ""))>=12000:
    print('anything')

Также вы можете найти решение с помощью locale здесь .

8
задан Community 9 July 2018 в 19:34
поделиться

5 ответов

Предыдущие версии Excel и Access (до 2003) поддерживал контроль версий исходного кода VBA через надстройку. Я очень эффективно использовал это в Office 2000.

Поддержка Visual SourceSafe (VSS) для VBA была упразднена с выпуском Office 2003 , но надстройка, поставляемая с Office XP Developer, очевидно работает с Office 2003 .

Статьи базы знаний Microsoft:

В противном случае вы можно использовать этот код для извлечения кода VBA (из здесь , но не было окончательной очистки объекта). Прочтите веб-страницу для предупреждений:

option explicit

Const vbext_ct_ClassModule = 2
Const vbext_ct_Document = 100
Const vbext_ct_MSForm = 3
Const vbext_ct_StdModule = 1

Main

Sub Main
    Dim xl
    Dim fs
    Dim WBook
    Dim VBComp
    Dim Sfx
    Dim ExportFolder

    If Wscript.Arguments.Count <> 1 Then
        MsgBox "As the only argument, give the FULL path to an XLS file to extract all the VBA from it."
    Else

        Set xl = CreateObject("Excel.Application")
        Set fs = CreateObject("Scripting.FileSystemObject")

        xl.Visible = true

        Set WBook = xl.Workbooks.Open(Trim(wScript.Arguments(0)))

        ExportFolder = WBook.Path & "\" & fs.GetBaseName(WBook.Name)

        fs.CreateFolder(ExportFolder)

        For Each VBComp In WBook.VBProject.VBComponents
            Select Case VBComp.Type
                Case vbext_ct_ClassModule, vbext_ct_Document
                    Sfx = ".cls"
                Case vbext_ct_MSForm
                    Sfx = ".frm"
                Case vbext_ct_StdModule
                    Sfx = ".bas"
                Case Else
                    Sfx = ""
            End Select
            If Sfx <> "" Then
                On Error Resume Next
                Err.Clear
                VBComp.Export ExportFolder & "\" & VBComp.Name & Sfx
                If Err.Number <> 0 Then
                    MsgBox "Failed to export " & ExportFolder & "\" & VBComp.Name & Sfx
                End If
                On Error Goto 0
            End If
        Next

        xl.Quit

        Set fs = Nothing
        Set xl = Nothing

    End If
End Sub
10
ответ дан 5 December 2019 в 13:01
поделиться

Другие ответы на этот вопрос решают эту проблему довольно хорошо, но если вы только начинаете писать код, посмотрите VSTO . Он предоставляет управляемый код для Office, и, что самое главное, вы можете делать это даже на C # или на любом другом языке .NET, который вам нравится. Он также работает с Excel 2003, что в вашем случае является преимуществом.

1
ответ дан 5 December 2019 в 13:01
поделиться

У вас уже есть отличный ответ, но позвольте мне добавить отступление.

Вполне возможно сохранить весь ваш код VBA в электронной таблице отдельно от электронной таблицы (таблиц), содержит данные. Если вы сделаете это, это может упростить сравнение.

0
ответ дан 5 December 2019 в 13:01
поделиться

Ответил то же самое в другой теме. Еще одна альтернатива, которую вы можете попробовать.

Экспорт кода VBA из нескольких документов Excel для включения в систему контроля версий

(есть ли способ связать эти темы и / или ответы?)

1
ответ дан 5 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: