Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2009, 11:45   #1
DrManual
 
Регистрация: 12.02.2009
Сообщений: 4
По умолчанию Создание "уголка" на всех страницах

Здравствуйте, All!

Просьба. Помогите сделать следующее форматирование - на всех страницах в правом верхнем уголке должно быть пустое поле. Размер 1.0Х0.5см

Прилагаю конечный вид (сделано с помощью переноса вручную "надписи")




Спасибо заранее за терпимость к тупости.
DrManual вне форума Ответить с цитированием
Старый 06.04.2009, 13:13   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Штатными средствами это сделать не получится. Можно, конечно, поместить пустое текстовое поле в колонтитул, и оно будет отображаться на каждой странице. Но текст вокруг него обтекать не будет. Могу предложить такой макрос:
Код:
Sub InsertBlankFieldToTopRightConerOfEveryPage()
  Dim PagesCount%, i%, oRng As Range, iLeft#, DocUnit%
  'Определяем количество страниц в документе
  PagesCount = ActiveDocument.Content.ComputeStatistics(wdStatisticPages)
  Set oRng = ActiveDocument.Content
  'Переводим единицы измерения в точки
  DocUnit = Options.MeasurementUnit: Options.MeasurementUnit = wdPoints
  For i = 1 To PagesCount
    'Считаем положение правого верхнего угла страницы
    With oRng.Sections(1).PageSetup
      iLeft = .PageWidth - .LeftMargin - .RightMargin
    End With
    'Добавляем текстовое поле
    With ActiveDocument.Shapes.AddTextbox _
              (msoTextOrientationHorizontal, _
              iLeft - CentimetersToPoints(1), _
              0, _
              CentimetersToPoints(1), _
              CentimetersToPoints(0.5), _
              oRng)
      'Имя фигуры, чтобы можно было ее удалить не трогая другие.
      .Name = "Blank" & i
      'Убираем у поля границы
      .Line.Visible = False
      'Ставим привязку к странице
      .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
      .RelativeVerticalPosition = wdRelativeVerticalPositionPage
      'Устанавливаем обтекание текстом
      With .WrapFormat
        .AllowOverlap = True
        .DistanceBottom = 0: .DistanceLeft = 3: .DistanceRight = 0: .DistanceTop = 0
        .Type = wdWrapSquare: .Side = wdWrapLeft
      End With
    End With
    'Переходим на следующую страницу
    Set oRng = oRng.GoToNext(1) 'wdGoToPage
  Next i
  'Восстанавливаем единицы измерения.
  Options.MeasurementUnit = DocUnit
End Sub
Единственное требование: этот макрос нужно применять только после всех операций с текстом. Если количество страниц будет меняться или сметится первый абзац любой страницы, то все поля нужно будет удалить и запустить макрос снова.

Добавлено позже
После вставки строк, выделенных жирным, можно добавлять абзацы и поле смещаться не будет. Но при добавлении страницы, придется запустить макрос снова, предварительно удалив все уголки.

Добавлено еще позднее
А этот макрос удалит все наши фигуры.
Код:
Sub RemoveBlankFieldFromTheTopRightConerOfEveryPage()
  Dim i%
  For i = ActiveDocument.Shapes.Count To 1 Step -1
    If ActiveDocument.Shapes(i).Name Like "Blank*" Then _
      ActiveDocument.Shapes(i).Delete
  Next i
End Sub
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 06.04.2009 в 16:57.
viter.alex вне форума Ответить с цитированием
Старый 06.04.2009, 22:07   #3
DrManual
 
Регистрация: 12.02.2009
Сообщений: 4
По умолчанию

Работает ОБАЛДЕННО!
Спасибо!
DrManual вне форума Ответить с цитированием
Старый 24.02.2010, 19:24   #4
psa247
 
Регистрация: 24.02.2010
Сообщений: 5
По умолчанию

Привет !
Мне надо картинку поставить в определенное место в Ворде. С Left - разобрался. А как вычислить Тор. Я бы привязался бы к Тор какого-нибудь объекта. Но, к сожалению, здесь и остановился
psa247 вне форума Ответить с цитированием
Старый 24.02.2010, 22:05   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

А в чём проблема?
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 25.02.2010, 10:57   #6
psa247
 
Регистрация: 24.02.2010
Сообщений: 5
По умолчанию

Проблема:

У меня есть таблица из 3-х колонок с параметрами. Во 2 колонке нужно вставить рисунок. Left для фигуры-картинки я нашел как лево таблицы+ширину 1-го столбца. Тор у таблицы находится относительно последнего абзаца. (В свойствах таблицы так указано) Соответственно, чтобы закрыть этот вопрос осталось узнать Тор для последнего абзаца хоть в поинтах, чтоль ? Как - не знаю
psa247 вне форума Ответить с цитированием
Старый 25.02.2010, 11:10   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Зачем же вставлять картинку как Shape? Её нужно вставлять в текст. Тогда она будет жёстко привязана к абзацу. Смотри пример.
Вложения
Тип файла: doc radE1434.doc (36.5 Кб, 18 просмотров)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 25.02.2010, 12:10   #8
psa247
 
Регистрация: 24.02.2010
Сообщений: 5
По умолчанию

А как вставить картинку в текст с помощью ВБА ? Именно так, именно в эту таблицу ?
psa247 вне форума Ответить с цитированием
Старый 25.02.2010, 12:40   #9
psa247
 
Регистрация: 24.02.2010
Сообщений: 5
По умолчанию

Есть внешняя картинка, которую надо вставить в определенную ячейку таблицы. Я пошел другим путем. Вставлял, делал ее шейпом. Менял ZOrder и перемещал от краем документа. Уперся в Тор

Как получить таблицу - тоже знаю, но как вставить в нее картинку ?
psa247 вне форума Ответить с цитированием
Старый 25.02.2010, 12:53   #10
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Если курсор будет в таблице, то картинка вставится во второй столбец первой строки
Код:
Sub InsertPictureInTable()
  If Selection.Information(wdWithInTable) Then
    Selection.Tables(1).Cell(1, 2).Range.InlineShapes.AddPicture ("Путь к картинке")
  End If
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание "суб-меню" из файлов в заданном каталоге Abhorrer Общие вопросы Delphi 5 14.03.2009 21:47
Помогите!Срочно! "Составьте программу получения в порядке убывания всех делителей данного числа" koston Паскаль, Turbo Pascal, PascalABC.NET 2 26.03.2008 12:34
Одна "шапка" на всех листах Noor Microsoft Office Excel 2 30.07.2007 15:39
Как произвести замену всех двузначных чисел на "00число которое заменено" ВЯЧ Microsoft Office Excel 5 06.12.2006 01:02