2016-03-23 3 views
1

У меня есть файл шаблона слова, который извлекает данные из файла excel для заполнения формы.Обновление кода Word VBA для 2013

код выглядит примерно так:

Dim myXL As Object 
Set myXL = Getobject("myfile.xls") 
myXL.Application.Visible = True 
myXL.Parent.Windows(1).Visible = True 

Этот код отлично работает в Office 2010 и 2007, но когда я пытаюсь его в 2013 году, это дает run time error 9 который является array subscript error. Когда я проверяю массив Windows, он имеет нулевые элементы, поэтому ошибка правильная.

Как достичь такого же результата в 2013 году?

Следующий фрагмент кода пытается получить доступ к Worksheets("mysheet"), и если я пропустить Visible = True линии с доступом лист дает runtime error 1004.

Любая помощь с фиксируя это было бы весьма признателен.

ответ

1

Чтобы сделать код работать на Office 2013. Я добавил строку myXL.Activate, прежде чем пытаться сделать окно видимым , Таким образом, код становится следующим:

Dim myXL As Object 
Set myXL = Getobject("myfile.xls") 
myXL.Application.Visible = True 
myXL.Activate 
myXL.Parent.Windows(1).Visible = True 

Это фиксировало ошибку времени выполнения, и код вернулся к нормальной работе.

+0

Прохладный Я рад, что это сработало для вас – 0m3r

1

Для извлечения данных из Excel

Пример бы ...

Option Explicit 
Sub ExcelData() 
    Dim xlApp As Object ' Application 
    Dim xlBook As Object ' Workbook 
    Dim xlSht As Object ' Worksheet 
    Dim FilePath As String 

    FilePath = "C:\Temp\Book1.xlsx" 

    Set xlApp = CreateObject("Excel.Application") 
    Set xlBook = xlApp.Workbooks.Open(FilePath) 
    Set xlSht = xlBook.Sheets("Sheet1") 

    With ActiveDocument 
     .Content = xlSht.Range("A1").Value 
    End With 

    xlApp.Visible = True 

    Set xlApp = Nothing 
    Set xlBook = Nothing 
End Sub 
+1

Спасибо за образец кода, интересно, насколько он отличается от кода, с которым я возился. Последняя строка, чтобы получить лист в моем коде: Установите myWS = myXL.Application.Worksheets («Sheet1»), и после этого все выглядит похоже, хотя в конце концов он делает myXL.Quit, а не меняет видимость. – Jules

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