2014-01-21 4 views
1

Я могу запускать свои макросы вручную на листе excel без ошибок, однако, когда я запускаю код через VB, я получаю ошибку «429» ActiveX , который связан с ссылкой Outlook 15.0. У меня есть объектная библиотека outlook 15.0, на которую ссылаются как в VB, так и в файле Excel. Не уверен, что делать дальше. Вот код в VB:Запуск макроса excel через VB, возвращает ошибку времени выполнения '429'

Imports System 
Imports System.Threading 
Imports System.IO 
Imports Microsoft.Office.Core 
Imports System.Runtime.InteropServices 
Imports Microsoft.Office.Interop 

Module module1 

Sub Main() 
    Dim bloomberg As String 
    Dim xlApp 
    Dim wkbk As String 
    Dim macro As Strign 
    Dim oWorkBook 
    Dim boolexists As Boolean 

    oWorkBook = Nothing 


    bloomberg = "C:\blp\API\Office Tools\BloombergUI.xla" 

    xlApp = CreateObject("Excel.Application") 
    'ReloadXLAddins(xlApp) 
    'I want to see what happens 
    xlApp.Visible = True 
    ''Loading in the Bloomberg add-in 
    xlApp.Workbooks.Open(bloomberg) 

    ' Disable Excel UI elements 
    xlApp.DisplayAlerts = True 
    xlApp.AskToUpdateLinks = True 
    xlApp.AlertBeforeOverwriting = True 

    ' Iterate through the list by using nested loops. 
    Dim i As Integer 

    For i = 1 To 5 

     Select Case i 
      Case 1 
       wkbk = "E:\Screening\IPO Lockup" 
       macro = "ipolockup" 
      Case 2 
       wkbk = "E:\Screening\UsBuybacksQ" 
       macro = "UsBuybacksQ" 
      Case 3 
       wkbk = "E:\Screening\UsBuybacksY" 
       macro = "UsBuybacksY" 
      Case 4 
       wkbk = "E:\Screening\GlobalBuybacksQ" 
       macro = "GlobalBuybacksQ" 
      Case 5 
       wkbk = "E:\Screening\GlobalBuybacksY" 
       macro = "GlobalBuybacksY" 
     End Select 


     oWorkBook = xlApp.Workbooks.Open(wkbk) 
     oWorkBook = xlApp.ActiveWorkbook.VBProject.References.AddFromGuid("{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}", 0, 0) 
     oWorkBook = xlApp.ActiveWorkbook.VBProject.References.AddFromGuid("{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}", 0, 0) 
     Thread.Sleep(Seconds(7)) 

     On Error Resume Next 
     ' Run the macro 
     xlApp.Run(macro) 
     If Err.Number <> 0 Then 
      ' Error occurred - just close it down. 
      MsgBox("run macro Error occurred") 
     End If 
     Err.Clear() 
     On Error GoTo 0 
     Thread.Sleep(Seconds(20)) 
     ' Clean up and shut down 
     oWorkBook.Close() 
     oWorkBook = Nothing 
    Next 
    ' Don’t Quit() Excel if there are other Excel instances 
    ' running, Quit() will shut those down also 
    If xlApp.Workbooks.Count = 0 Then 
     xlApp.Quit() 
    End If 
    xlApp.Quit() 
    xlApp = Nothing 

    MsgBox("Completed Email Draft Creation Succesfully") 

End Sub 

Private Function Seconds(ByVal value As Integer) As Integer 
    Return value * 1000 
End Function 

и вот фрагмент кода в макросе я пытаюсь работать в Excel:

Sub refreshed() 
Dim rng As Range 
Dim i As Integer 
Dim OutApp As Object 
Dim OutMail As New Outlook.Application 


With Application 
    .DisplayAlerts = False 
    .Calculate 
End With 

i = Sheets("IPO").Range("numberofipo").Value 
Sheets("IPO").Range("IPO").Select 

Set rng = Nothing 
Set rng = ActiveCell.Resize(i + 1, 16) 

Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 

On Error Resume Next 
With OutMail 
    .To = "" 
    .CC = "" 
    .BCC = "" 
    .Subject = "Monthly IPO Data" 
    .HTMLBody = RangetoHTML(rng) 
    .Save 
End With 
On Error GoTo 0 

Set OutMail = Nothing 
Set OutApp = Nothing 

ThisWorkbook.Saved = True 

End Sub 

Ошибка возникает на линии:

Set OutApp = CreateObject ("Outlook.Application")

, который заставляет меня верить, что это относится d в библиотеку объектов Outlook 15.0.

+0

Возможно, это не связано, но следующая строка также даст вам ошибку, если вы не «Dim OutMail as Object» или «Outlook» .MailItem' –

+0

Спасибо за головы! – Hughberto

+0

Узнайте, помогает ли [ЭТО] (http://support.microsoft.com/kb/828550). –

ответ

1

кажется, что при запуске VB в качестве администратора появляется сообщение «429». Не уверен, почему это проблема, но когда я запускаю ее без прав администратора, ее работы! - Hughberto

Смежные вопросы