Страницы: 1
RSS
VBA: действия над Word из Excel
 
Хелп ми плиз.Я понимаю что тема избитая, но не могу разобраться
Вот кусок работающего Вордового  макроса
Код
ActiveDocument.Range(Start:=ActiveDocument.Range.Start, End:=ActiveDocument.Range.End).Copy
Selection.EndKey Unit:=wdStory
Selection.InsertBreak Type:=wdPageBreak
Selection.Paste
ActiveDocument.Range(Start:=ActiveDocument.Range.Start, End:=ActiveDocument.Range.Start).Select
Selection.InsertBreak Type:=wdPageBreak

With ActiveDocument.Styles(wdStyleNormal).Font
        If .NameFarEast = .NameAscii Then
            .NameAscii = ""
        End If
        .NameFarEast = ""
    End With
    With ActiveDocument.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientLandscape
        .TopMargin = CentimetersToPoints(1.27)
        .BottomMargin = CentimetersToPoints(1)
        .LeftMargin = CentimetersToPoints(2.4)
        .RightMargin = CentimetersToPoints(0.95)

В экселе есть объекты
Код
Set objWordBill = CreateObject("Word.Application")
            objWordBill.Visible = True
            directory = fnShellBrowseForFolderVB1 & "\"
            objWordBill.Documents.Open (directory & fileName)
Set aDoc = objWordBill.ActiveDocument
но при попытки замены ActiveDocument на aDoc не работает. И ругается на CentimetersToPoints еще до запуска макроса

ПС. Ранее связывание решило проблему с CentimetersToPoint. И замена
ActiveDocument.Range(Start:=ActiveDocument.Range.Start, End:=ActiveDocument.Range.End).Copy
на
aDoc.Range(Start:=aDoc.Range.Start, End:=aDoc.Range.End).Copy работает
но замена Selection на aDoc не работает
Изменено: jfd - 14.08.2015 14:54:34
 
А Вы включили библиотеку Ворда в ВБА Екселя. Если галка не стоит, то он не понимает что нужно и ругается до запуска. Ну и на форуме есть макросы с работой в Ворде. Сейчас погляжу, ссылку сюда скину если найду.
 
alexthegreat,да, включил. буду премного благодарен.
я искал но именно связанных с форматированием документа я нашел
такая конструкция Set UNPBill = aDoc.Range(aDoc.Paragraphs(13).Range.Start, aDoc.Paragraphs(13).Range.End) у меня есть и она работает
 
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=5&TID=67649&TITLE_SEO=67649-sozdanie-t...
я там спрашивал, и выкладывал код, может поможет, посмотрите.
http://www.excelworld.ru/forum/
поглядите на соседнем ресурсе, там есть много чего по Ворду, может найдете или помогут, только сообщите там, что здесь тоже спрашиваете, по правилам форумов так, чтобы люди два раза не делали одно и то же.  
Изменено: alexthegreat - 14.08.2015 15:02:59
 
мне пока помогает Set objSelection = objWordBill.Selection и замена Selection.InsertBreak Type:=wdPageBreak на objSelection.InsertBreak Type:=wdPageBreak
с переопределением перед каждым использованием Selection
как это работает - представляю смутно. возможно это кривой костыль :)
 
jfd, wdPageBreak - это константа ворда и эксель её не знает, если я не ошибаюсь. Лучше заменять её на значение, в данном случае - это 7. (альт+эф11 в ворде, в окне immediate набираете:
? wdPageBreak
жмёте энтер и получаете значение - так для любой вордовской константы)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan,спасибо за совет. не знал про то что можно получить константу так, очень не хватало
Страницы: 1
Читают тему
Наверх