Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.

Просмотр сообщений

Сообщения - YKR

#2
Добрый день! Интересует вопрос по теме:" Создание писем и подписи в Outlook средствами VBA".
Не отображаются картинки в подписи, созданной кодом VBA
Во вложении файл c подпрограммой.
Код создает письмо, с темой и содержимым, присоединяет файл и внешнюю подпись в формате htm.
Все работает как нужно, кроме подписи. Подпись создается и текстовая часть визуализируется, но картинки, которые есть в подписи не визуализируются.
Появляется прямоугольник, где должна бы отображаться картинка и внутри надпись - не удается отобразить картинку!

Подскажите, в чем может крыться причина не отображения картинок в подписи, создаваемой кодом VBA?
При этом, если непосредственно в Outlook создается письмо, то эта же подпись отображается корректно - и текст и вложенная картинка.
#3
Что было мне непонятно написано.  
Найти таблицы в документе, чтобы потом это использовать. Например,  знать номер или имя таблицы на нужной странице, чтобы потом можно было написать:
   Dim p As InlineShape
   Set p = ThisDocument.Tables(I).Rows(2).Cells(2).Range.InlineShapes.AddPicture("D:\файл.png", False, True)


Спасибо за помощь и хороших выходных!
#4
Спасибо,  так код работает. Он определяет есть ли на странице таблицы в принципе.
И если из несколько, то это не видно.

Получается, что нужен Алгоритм: цикл по всем таблицам в документе и их местоположения.  (какая таблица, на какой странице)
С указанием имени таблицы или номера таблицы в документе, чтобы было понятно как к таблице обратиться.
Подскажите как такой цикл сделать?  Пробую,  но пока в этом не преуспел.
#5

Дмитрий Щербаков(The_Prist),  спасибо,  код рабочий вполне.
Но у меня загвоздка, может не так понимаю....
Попадаю за заданную страницу,  на заданную позицию. 
А вот на строку не попадаю... т.е получается заказываю строку N, а попадаю на N+1 .
Это не проблема...., если это  так всегда работает... или что-то не так понимаю..., сорри!
#6
Дмитрий Щербаков(The_Prist),  согласен с вами, что есть свойства...
Получается найти закладку (скрытый текст) и вставить картинки, но по факту их нужно двигать (влено - вправо, вверх - вниз)  и даже частично накладывать друг на друга.
И это нужно подбирать опытным путем.
А двигать  не получается.  Такое впечатление, что картинка двигается на 200 единиц  не с  места установки  картинки , а отсчитывает от верхнего левого угла....
Shape_P.Left = 200     
Shape_P.Top = 100


Если позволите, я завтра пришлю упрощенный пример - файл с кодом и файлами вставки и там все видно.

Ниже код, вставки картинки к нижний колонтитул.  Все с нижним колонтитуклом получается корректно, если использовать  Selection.InlineShapes.AddPicture
(Но там используется свойство конца страницы.)

Word.ActiveDocument.Select
    Find_text "(|"
   
    jp = Selection.Information(wdActiveEndPageNumber)
    j1 = Selection.Range.Start
    j1k = Selection.Range.End
    'Selection.Range.Font.ColorIndex = wdRed
    Debug.Print jp, j1, j1k
     
    Word.ActiveDocument.Range(j1, j1 + 2).Select
   
    oShape as PictureFormat
    Set oShape = ActiveDocument.Shapes.AddPicture(FileName:="D:\ФАЙЛЫ\файл1.png")
    oShape.WrapFormat.Type = wdWrapFront
       
   
    'Selection.InlineShapes.AddPicture FileName:=" D:\ФАЙЛЫ\файл1.png"", _
    'LinkToFile:=False, SaveWithDocument:=True
   
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter '  переход к нижний колонтитул
'Selection.TypeText Text:="Тестовый текст"
Selection.TypeText Text:=""
   
Selection.InlineShapes.AddPicture FileName:=" D:\ФАЙЛЫ\файл1.png"", _      '  этим методом картинка вставляется в левый верхний угол.
LinkToFile:=False, SaveWithDocument:=True

Set Shape = Selection.InlineShapes.AddPicture(FileName:=" D:\ФАЙЛЫ\файл1.png"", _    ' этим методом картинка вставляется в  место определения скрытого текста "(|"
      LinkToFile:=False, SaveWithDocument:=True, Range:=Selection.Range).ConvertToShape
      Shape.WrapFormat.Type = wdWrapBehind
''      'Shape.Left = 200     
''      'Shape.Top = 100
       
      Shape.Left = wdShapeLeft
      Shape.Top = wdShapeBottom
      Shape.Left = ShapeLeft + 50
      Shape.Top = 785
   
      Shape.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
      Shape.RelativeVerticalPosition = wdRelativeVerticalPositionPage
   
      Shape.LockAnchor = False
      Shape.LayoutInCell = False
      Shape.WrapFormat.AllowOverlap = True
      Top_CM= Application.PointsToCentimeters(Shape.Top)
      Left_CM = Application.PointsToCentimeters(Shape.Left)
           
   ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument ' возврат с нижнего колонтитула
#7
Добрый день!   Спасибо за отклик,  более предметно ответил в другом посте.
код к сожалению выдает ошибку 424.... object recuired  на строке
Set rr = wd.Range(ls, Selection.GoTo(wdGoToBookmark, , , "\EndOfDoc").Start)
#8
Дмитрий Щербаков(The_Prist), Добрый день!  Спасибо  Вам за помощь и ответы.
Конечно самостоятельные попытки решить задачу были и есть  фрагменты кода. Просто решил получить независимые подходы и не путать всех своим кодом, а спросил  про идеи  и  объекты и методы VBA,
которые помогут решить эти задачи.
Задачи разбил на части ибо полная постановка тем более не найдет отклик у участников форума.
На этом и других форумах искал подобные задачи или их фрагменты,  на авторов которых ниже  есть ссылки.
И если задача тянет на коммерческую, как вы это заметили, то мы и это можем обсудить по почте без проблем. 

Идея, которая мною рассматривалась была следующая -  использовались  в тексте скрытые символы,  например "(|" или "!|"  и другие.  Что вообще-то далеко не всегда неудобно.
Эти скрытые символы,  размещались заранее  в тексте документа, в  нужных местах.
Например, где нужно  вставить  две картинки. Это могут быть например на последней странице документа подпись и печать.
Это может быть скрытый текст в колонтитулах или ячейках в  таблице. 
И также возможна вставка подписи или другой картинки к нижний колонтитул на каждой странице, кроме последней.

Далее код ищет скрытые символы и собственно в эти места вставляет  нужный текст и картинки.
На форумах нашел несколько схожих задач.
Например:
   ресурс ExcelWorld.ru,  участник форума ANVG  - использовал такой код для размещения картинки в ячейку талицы
  Dim p As InlineShape
   Set p = ThisDocument.Tables(1).Rows(2).Cells(2).Range.InlineShapes.AddPicture("d:\path\name.png", False, True)


'  также вопрос обсуждался с  Галиной (shanemac51), форума cyberforum.ru  и приемы через закладки как раз с ней и обсуждали.
'  vagiinalover – другой кейс на этом же форуме.,  вставить картинку в определенное место документа

Часть кода для размещения картинки по месту найденных  скрытых символов.
    Word.ActiveDocument.Select   
    Find_text "(|"  ' подпрограмма поиска скрытых символов
   
    jp = Selection.Information(wdActiveEndPageNumber)
    j1 = Selection.Range.Start
    j1k = Selection.Range.End
    Selection.Range.Font.ColorIndex = wdRed  ' выделение найденного красным цветом
    Word.ActiveDocument.Range(j1 + 4, j1 + 4).Select
    oShape as PictureFormat
    Set oShape = ActiveDocument.Shapes.AddPicture(FileName:="D:\ФАЙЛЫ\файл1.png")
    oShape.WrapFormat.Type = wdWrapFront
    'Рисунок перед текстом.
   
    ' или по другому
        Selection.InlineShapes.AddPicture FileName:="D:\ФАЙЫ\файл1.png", _
       LinkToFile:=False, SaveWithDocument:=True
   
    ' или через  Shape
    Dim Shapes_P as  Word.Shape
    Set Shapes_P = Selection.InlineShapes.AddPicture(FileName:="D:\ФАЙЛЫ\файл1.png", _
    'LinkToFile:=False, SaveWithDocument:=True, Range:=Selection.Range).ConvertToShape
      Shapes_P.WrapFormat.Type = wdWrapBehind  ' разместить картинку перед текстом
     'Shape_P.WrapFormat.Type =wdWrapFront   ' разместить картинку за текстом










#9
Как можно кодом VBA найти в вордовском документе рисунки и их координаты ?

И как их можно после найденных координат программно двигать ? (влево, вправо, вверх, вниз).
Устанавливая при этом свойство, нахождения рисунка перед текстом.
#10
Как кодом VBA найти в ворд документе имеющиеся таблицы ?
С указанием номеров страниц, где они есть?
И как к ним обращаться кодом? (через имя таблицы или через номер)

Если не в тот раздел форума поместил вопрос - подскажите в какой, спасибо?
YKR22 на форуме   
#11
Подскажите, как можно с помощью VBA реализовать вордовском файле программную навигацию по документу?
Например, перейти на 5-ой странице, на 15 строку и на 25 позицию в строке.
И как на это повлияет наличие таблицы в документе и в этом месте документа?
Какие есть идеи?
Яндекс.Метрика Рейтинг@Mail.ru