VB6/VBA COM қондырмасын жүктеуге рұқсат бермейді

Менің VB6/VBA қосымшасы бар, оны Excel-ға қояды және жұмыс кітабын жүктейді. Ол көптеген жылдар бойы жақсы жұмыс істеп келеді. Біз енді Excel 2010 нұсқасына жаңарттық және кейбір мәселелерді шешіп алдық. Ақаулықтарды жоюдан кейін, егер PowerPivot COM қондырмасын өшірсем, процесте еш қиындықсыз жұмыс істей алатындай көрінеді. Мен дәл осы себептерді іздеп жүргенімде, мен бұл қосымшаны тек менің қосымшам үшін өшіре аламын ба деп көргім келді. Мен Excel-ге осылай жүктеймін:

 Set xlApp = CreateObject("Excel.Application")
 xlApp.Visible = False

Сынақ Excel жұмыс кітабында қондырмаларды тізімдеу үшін осы коды бар. Дегенмен, тек «Excel қондырмалары» тек тізімге енгізілген. «COM қондырмалары» тізімде жоқ.

Sub ListAddIns()
  Dim CurrAddin As Excel.AddIn
  Dim r As Long
  Dim ws As Excel.Worksheet

  Set ws = ActiveSheet
  Cells.Select
  Selection.ClearContents
  Range("A1").Select

  r = 1
  For Each CurrAddin In Excel.Application.AddIns
      ws.Cells(r, 1).Value = CurrAddin.FullName
      ws.Cells(r, 2).Value = CurrAddin.Installed
      ws.Cells(r, 3).Value = CurrAddin.Name
      ws.Cells(r, 4).Value = CurrAddin.Path
      ws.Cells(r, 5).Value = CurrAddin.progID
      ws.Cells(r, 6).Value = CurrAddin.CLSID

      r = r + 1
  Next CurrAddin

  MsgBox "Its done.", vbInformation
End Sub

COM қондырмасына сілтеме жасау әдісін тапқаннан кейін оны қолданбаның Excel нысанында жүктеуден сақтау керек. Кез келген көмек немесе ұсыныс қош келдіңіз.

Рахмет

3

2 жауаптар

Бұл жетістікке жетудің «жақсы» жолы бар-жоқтығын білмеймін, бірақ «лас» әдісі Excel бағдарламасын іске қоспас бұрын тіркелу параметрлерін өзгертпей қалады, сондықтан ол жүктелмейді. Бұл HKCU \ Software \ Microsoft \ Office \ Excel \ AddIns \\ LoadBehavior параметрін 0 (автоматты түрде жүктемеңіз) арқылы орнатуға болады. Дегенмен, бұл пайдаланушыға оны қабылдайтынына сенімді болмасаңыз, оны жасамауыңыз керек, сондықтан пайдаланушыға осы өзгерістерге келісесіз бе деп сұраңыз.

Сіз өзіңіздің кодыңызбен өте жақын болдыңыз, бару жолы келесідей:

Sub ListAddIns()
    Dim CurrAddin As **Office.COMAddIn**
    Dim r As Long
    Dim ws As Excel.Worksheet

    Set ws = ActiveSheet
    Cells.Select
    Selection.ClearContents
    Range("A1").Select

    r = 1
    For Each CurrAddin In **Excel.Application.COMAddIns**
        ws.Cells(r, 1).Value = CurrAddin.Description
        ws.Cells(r, 2).Value = CurrAddin.Application
        ws.Cells(r, 3).Value = CurrAddin.GUID
        ws.Cells(r, 4).Value = CurrAddin.Connect
        ws.Cells(r, 5).Value = CurrAddin.Creator
        ws.Cells(r, 6).Value = CurrAddin.progID
        r = r + 1
    Next CurrAddin
    MsgBox "Its done.", vbInformation
End Sub

COM қосылымын жүктеу және жүктеу үшін Connect сипатын пайдалануға болады.

1
қосылды
Кеңеске рақмет, бірақ сіз дұрыссыз, бұл өте маңызды. Бұл ішкі бағдарлама үшін, бірақ пайдаланушылардың тізбесін өзгерту туралы сенімсіздік.
қосылды автор sinDizzy, көзі
Мен де бұл туралы ойлаған емеспін. бұл атуды беремін.
қосылды автор sinDizzy, көзі
Excel 2007 және Excel 2010 бағдарламаларында жақсы сыналды және шебер сияқты жұмыс істеді. Мен нысанның осы түрі үшін барлық жерлерге қарап, оны таба алмадым. көмек үшін рақмет.
қосылды автор sinDizzy, көзі

Менде бірдей мәселе бар, бірақ оңай шешім бар. Мен жай ғана Powerpivot қондырмасын excel (оны ашыңыз) және оны қайта қосыңыз ... проблема тіркелген.

0
қосылды
Иә, бұл анық жауап. Мұнда бүкіл идея автоматтандырылған және түпкі пайдаланушыны қолмен жасауға тура келмейді.
қосылды автор sinDizzy, көзі