2016-01-11 7 views
0

Мне действительно нужна помощь. Я искал решение почти месяц (не постоянно), но я не мог найти способ заставить его работать.Mac Office 2011 VBA Word ссылается на уже открытую книгу Excel

Прежде всего это код, я должен открыть книгу, которая работает отлично:

Private Sub OpenExcelDatabase() 

    Dim oxl As Object 
    Set oxl = CreateObject("Excel.Application") 

    Dim xlPath As String 
    xlPath = "OSX:Users:" & GetUserName.GetUserName & ":Documents:Rechnungen:" 

    Dim xlFile As String 
    xlFile = "Database_Rechnungen.xlsm" 

    oxl.Workbooks.Open (xlPath & xlFile) 
    Application.ActiveWindow = ActiveDocument 

    Dim xlWB As Object 
    Set xlWB = oxl.Workbooks.Open(xlPath & xlFile) 

    xlWB.Application.Run "connectSQL" 

End Sub 

Теперь мне нужно получить некоторые данные из этой книги для 2-х различных UserForms, которые расположены в новом документ. В VBA-меню я уже активировал Object-Library for Excel, но проблема в том, что, хотя он, кажется, знает функции (он показывает все параметры, которые мне нужны), он не может их запустить. Дело в том, что мне нужно запустить макрос, который находится в рабочей книге, как только нажимается командная кнопка из Userform в Word.

Может быть, разъясняют вещи:

У меня есть слово-шаблон, который используется для записи счета-фактуры. Существует 2 (важных) Userforms - SearchCompany и SearchPerson. В этих двух UserForms пользователь может ввести строку, и эту строку нужно искать в ячейках excel-database. Если эта строка существует в одной из найденных ячеек, она возвращает всю информацию этой компании обратно в UserForm. То же самое с человеком. В моем учебнике у меня есть лист с компаниями и один лист с людьми, которые работают в компаниях.

Эти коды я уже пытался обратиться к открытому Workbook или запустить макрос в этом учебном пособии:

1. xlWB.Application.Run "SearchFirma" 

2. Excel.Application.ActiveWorkbook.Application.Run "SearchFirma" 

3. Excel.Workbooks("Database_Rechnungen.xlsm").Application.Run "SearchFirma" 

4. Set xlWB = GetObject("Database_Rechnungen.xlsm") 

5. Set xlWB = oxl.Workbooks("Database_Rechnungen.xlsm") 

6. Set xlWB = Excel.Workbooks(1) 
  1. Ошибка выполнения «424»: требуется объект
  2. Run -time ошибка «91»: переменная объекта или переменная блока не установлен
  3. ошибка выполнения «51»: Внутренняя ошибка
  4. ошибка выполнения «424»: требуется объект
  5. Ошибка выполнения «424»: Требуется объект «Может быть, это„51“
  6. Ошибка выполнения„424“: Требуется объект» Может быть, это „51“

Если бы я использовал учебные пособия .Open-Method снова я получаю сообщение об ошибке, что эта рабочая книга уже открыта ... Проблема в том, что для возвращения информации к слову мне также нужно будет обратиться к открытому, но не названному или сохраненному слову, документ («документ1»).

Независимо от того, что я пробовал, не получилось. Я искал половину Google для решения, но никто никогда не сталкивался с такой проблемой ... Как только большинство людей активировали библиотеки объектов, все сработало. Почему он не работает со мной? Есть еще что мне нужно проверить? (Объектная библиотека существует) Функция getObject не работает на Mac, но, возможно, кто-то знает обходной путь? Я был бы невероятно благодарен всем, кто пытается помочь мне в этом, так как я начинаю очень отчаянно пытаться найти решение этой проблемы.

ответ

0

Я нашел способ сделать это:

Private Sub Document_New() 
    xlPath = "OSX:Users:" & GetUserName.GetUserName & ":Documents:Rechnungen:" 
    xlFile = "Database_Rechnungen.xlsm" 

    Call OpenExcFileWithApp(xlPath, xlFile, "connectSQL") 
    UFFirmaSearch.Show 

End Sub 

И это функция:

Public oxl As Object 
Public xlWB As Object 

Public xlPath As String 
Public xlFile As String 

Public FSearchText As String 
Public FResult As ListBox 

Function OpenExcFileWithApp(Path As String, File As String, RunMacro As String) 

    Dim FileFullName As String 
    FileFullName = Path & File 

    Set oxl = CreateObject("Excel.Application") 
    Set xlWB = oxl.Workbooks.Open(FileFullName) 

    If RunMacro <> "" Then 
     xlWB.Application.Run RunMacro 
    End If 
End Function 

С этим каждый раз я использую xlWB в своем слове-модулях, это относится к открытой книге. :)

Спасибо Kiroshiro, как вы принесли мне на идею :)

0

Добавить ссылку на «Библиотека объектов Microsoft Excel 14.0» в WBA-редакторе. Это даст вам доступ к модели объекта excel.

Тогда вы могли бы сослаться на заявление и учебные пособия, как это:

Sub test() 

    Dim ex As New Excel.Application 
    Dim wb As Workbook 

    Set wb = ex.Workbooks.Open("C:\TestVAs\TestBook.xlsx") 

End Sub 

Тогда вы можете вызвать макрос из приложения Excel.

ex.Run "YourWorkbookNameAndPath!YourMacroToCall" 
+0

я уже активировал библиотеку объектов, эти ошибки-кода, которые я получаю после включения библиотеки объектов .... Это большая проблема у меня есть. Также не хочу ли я повторно открывать книгу, но искать данные, соответствующие данным, введенным в пользовательской форме в слове. – Kathara

+0

Хорошо, понял. Объект «workbbok» не имеет процедуры «Выполнить». Это объект приложения. – kiroshiro

+0

в моей OpenExcelWorkbook-Sub xlWB.Application.Run "работает отлично. так что это не может быть проблемой .... – Kathara

0

Объект "workbbok" не имеет процедуры "Run".

  1. xlWB.Application.Run "SearchFirma" < - Это может быть неправильно, потому что объект workbbok не имеет свойства "Применение"

  2. Excel.Application.ActiveWorkbook.Application.Run "SearchFirma" < - Возможно, это неправильно, потому что объект «Рабочая книга» не имеет свойства «Приложение».

  3. Excel.Workbooks («Database_Rechnungen.xlsm»). Application.Run «SearchFirma» < - Возможно, это неправильно, потому что объект «Workbbok» не имеет свойства Application.

  4. Set xlWB = GetObject ("Database_Rechnungen.xlsm") < - Это неправильно, но я не знаю почему.

  5. Комплект xlWB = oxl.Workbooks ("Database_Rechnungen.xlsm") < - Это неправильно.

  6. Set xlWB = Excel.Workbooks (1)

Ваш вызов должен выглядеть следующим образом:

Sub Test() 
    Dim Ex as New Excel.Application 
    Dim WB as Workbbok 
    Dim Sh as Worksheet 
    Dim Data as variant 

    ' to a open workbook and read, write or delete data. 
    ' Now you could manipulate the data with the "WB" variable. 
    Set WB = Ex.Workbboks.Open("YourWorkbbokPathAndName") 
    Set Sh = WB.Sheets("YourSheetName") 
    ' recieve the data 
    Data = Sh.cells.value 

    ' do your stuff with Data 

    ' write back data 
    Sh.cells.value = data 

    ' run a macro inside a workbbok 
    ' This is the Application object. NOT a Workbook! 
    Ex.Run "YourWorkbookPathAndName!YourMacroToCall" 
End Sub 
Смежные вопросы