Здравствуйте. Хорошие ребята (пользователь: aap77) с сайта http://wordexpert.ru/ дали мне код, который копирует строки текущего файла .docx в массив. Всё бы хорошо, но мне надо использовать этот код в файле 1.xlsm. Я импортировал библиотеку Microsoft Word 12.0 Object Library в файл .xlsm и теперь хочу производить операции над 1.docx с помощью этого кода:
Код
Public lst() As Variant
Public Function CopyToArray() As Variant
Dim AWind As Window
Dim APane As Pane
Dim Pages As Pages
Dim Page As Page
Dim Rect As Rectangle
Dim LineCount As Long
'Dim lst() As Variant
Dim Line As Line
Set AWind = Application.ActiveWindow
Set APane = AWind.ActivePane
Set Pages = APane.Pages
'---------------------------------------------------------------------
For Each Page In Pages
If Page.Rectangles.Count = 1 Then
Set Rect = Page.Rectangles(1)
Else
Set Rect = Page.Rectangles(2)
End If
LineCount = LineCount + Rect.Lines.Count
Next Page
LineCount = LineCount - 1
'---------------------------------------------------------------------
ReDim Preserve lst(0 To LineCount)
'---------------------------------------------------------------------
i = -1
For Each Page In Pages
If Page.Rectangles.Count = 1 Then
Set Rect = Page.Rectangles(1)
Else
Set Rect = Page.Rectangles(2)
End If
For Each Line In Rect.Lines
i = i + 1
lst(i) = Line.Range.Text
Next Line
Next Page
'---------------------------------------------------------------------
'CopyToArray = lst
End Function
Public Sub Macros1()
CopyToArray 'копировать все строки в массив lst, внимание индексация начинается с 0
MsgBox (lst(2)) 'вывести на экран 3-ю строку
End Sub
Мои эксперименты с адаптацией кода под 1.xlsm не увенчались успехом!!! Как грамотно адаптировать этот код, чтобы он работал в 1.xlsm файле? Зараннее спасибо!
Не вижу ни строчки, обозначающей обращение именно к Word-у. И VBA не видит, поэтому пытается обратиться к Excel. Почитайте статью для начала: Как из Excel обратиться к другому приложению
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Не The_Prist, Вы меня неправильно поняли я читал Вашу статью недавно, и с её помощью научился работать с файлами .docx из Excel, я пробовал использовать Ваш код:
Код
Dim objWrdApp As Word.Application
Dim objWrdDoc As Object
Set objWrdApp = CreateObject("Word.Application" ;)
'objWrdApp.Visible = True
Set objWrdDoc = objWrdApp.Documents.Open(ThisWorkbook.Path & "\" & "1.docx")
'---------------------------------------
'здесь должен быть код word vba
'--------------------------------------
objWrdDoc.Close True
objWrdApp.Quit
Set objWrdDoc = Nothing: Set objWrdApp = Nothing
Но я же говорю:
Цитата
Мои эксперименты с адаптацией кода под 1.xlsm не увенчались успехом!!!