Кнопка с макросом в Excel - PullRequest
0 голосов
/ 18 июня 2020

путем программирования (не вручную) Я импортирую макрос и форму в электронную таблицу с помощью кнопки, которая выполняет этот макрос. Когда я делаю это в Excel 2007, я открываю электронную таблицу и нажимаю кнопку без проблем. Но в Excel 2010 я фокусирую макрос кнопки, но с неправильным путем (добавляю подпапку к исходному пути) и не могу найти макрос. Буду признателен, если кто-нибудь поможет мне с этим. Ура

1 Ответ

0 голосов
/ 19 июня 2020
ok BigBen, Here I put code for Export and Import macro code from Excel:

Sub ExportModules(FullPathFile As String) Dim bExport As Boolean Dim wkbSource As Excel.Workbook Dim szSourceWorkbook As String Dim szExportPath As String Dim szFileName As String Dim cmpComponent As VBIDE.VBComponent Dim wb As Workbook

Set wb = Workbooks.Open(FullPathFile)
Set wkbSource = Application.Workbooks(wb.Name)

szExportPath = "C:\valq\VBAProjectFiles\"

For Each cmpComponent In wkbSource.VBProject.VBComponents

    bExport = True
    szFileName = cmpComponent.Name

    Select Case cmpComponent.Type
        Case vbext_ct_ClassModule
            szFileName = szFileName & ".cls"
        Case vbext_ct_MSForm
            szFileName = szFileName & ".frm"
        Case vbext_ct_StdModule
            szFileName = szFileName & ".bas"
        Case vbext_ct_Document
            ' This is a worksheet or workbook object.
            ' Don't try to export.
            bExport = False
    End Select

    If bExport Then
        cmpComponent.Export szExportPath & szFileName
    End If

Next cmpComponent

wb.Close
End Sub

Sub ImportModules(FullPathFile As String)

Dim wkbTarget As Excel.Workbook
Dim objFSO As Scripting.FileSystemObject
Dim objFile As Scripting.File
Dim szTargetWorkbook As String
Dim szImportPath As String
Dim szFileName As String
Dim cmpComponents As VBIDE.VBComponents
Dim szSourceWorkbook As String
Dim wkbSource As Application
Dim wb As Workbook

Set wb = Workbooks.Open(FullPathFile)
szTargetWorkbook = wb.Name
Set wkbTarget = Application.Workbooks(szTargetWorkbook)

szImportPath = "C:\valq\VBAProjectFiles\"

Set objFSO = New Scripting.FileSystemObject
If objFSO.GetFolder(szImportPath).Files.Count = 0 Then
   MsgBox "There are no files to import"
   Exit Sub
End If

Set cmpComponents = wkbTarget.VBProject.VBComponents

For Each objFile In objFSO.GetFolder(szImportPath).Files

    If (objFSO.GetExtensionName(objFile.Name) = "cls") Or _
        (objFSO.GetExtensionName(objFile.Name) = "frm") Or _
        (objFSO.GetExtensionName(objFile.Name) = "bas") Then
        cmpComponents.Import objFile.Path
    End If

Next objFile

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