Не работает таблица в ворде
Репутация: нет
Всего: нет
Добрый день!
Пытаюсь формировать договор Word посредством запуска процедуры Excel (шаблоны не использую) - не получается вставить таблицу, почему - не знаю. Подскажите, что не так.
Код |
Public Sub DocWrite(sNomerDog As String) |
Dim oWord As Word.Application
Dim oDoc As Word.Document
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents.Add()
oWord.Visible = True
oDoc.Activate
With oWord.Selection
.Font.Name = "Times New Roman"
.Font.Size = 14
.Font.Bold = wdToggle
.TypeText "ДОГОВОР №" & sNomerDog
'.Style = "Заголовок 1"
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Font.Name = "Times New Roman"
.Font.Size = 14
.TypeText "на выполнение работ"
'.Style = "Заголовок 2"
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.TypeText vbCrLf
.TypeText vbCrLf
' Нужно вставить таблицу в конец документа (туда где курсор) - не работает
Dim Table1 As Table
Set Table1 = ActiveDocument.Add(Range:=Selection.Range, NumRows:=5, NumColumns:=3)
Exel "Ругается" на строку вызова процедуры Call ThisWorkbook.DocWrite(sNomerDog)
Репутация: 7
Всего: 7
Цитата(kashemirny @ 21.10.2009, 14:11 ) |
' Нужно вставить таблицу и заполнить ее - не работаетDim Table1 As TableSet Table1 = ActiveDocument.Add(Range:=Selection.Range, NumRows:=5, NumColumns:=3) |
Код |
Dim Table1 As Word.Table Set Table1 = oDoc.Tables.Add(Range:=oword.Selection.Range, NumRows:=5, NumColumns:=3) |
Цитата(kashemirny @ 21.10.2009, 14:11 ) |
Set oWord = CreateObject("Word.Application") |
Репутация: нет
Всего: нет
ViterAlex, спасибо , помогло, теперь снова не получается вставить данные, уже в ячейки таблицы:
Код |
Dim Table1 As Word.Table Set Table1 = oDoc.Tables.Add(Range:=oWord.Selection.Range, NumRows:=1, NumColumns:=3) Table1.Cell(1, 1).Range.InsertAfter "Исполнитель" ' слово Исполнитель нужно подчеркнуть. |
' не работает перевод строки:
'oWord.Selection.TypeParagraph
'и так не работает:
'oWord.Selection.TypeText vbCrLf
Приложу картинку документа чтобы было понятней. как сделать похожее форматирование границ в таблице? Подскажите, очень нужно!
Репутация: 7
Всего: 7
Посмотри пример, как можно заполнить первую ячейку, а остальное сделай сам. Неразрывные пробелы ты, конечно, можешь не ставить, но хуже от них еще никому не было.
Код |
'Заполняем первую ячейку With Table1.Cell(1, 1).Range .Font.Underline = wdUnderlineSingle .Font.Bold = True .ParagraphFormat.FirstLineIndent = 0 .ParagraphFormat.Alignment = wdAlignParagraphLeft .InsertAfter "Исполнитель:" .InsertParagraphAfter 'Убираем подчеркивание у последнего абзаца в ячейке .Paragraphs(.Paragraphs.Count).Range.Font.Underline = wdUnderlineNone 'Вставляем текст с правой (код 187) и левой (код 171) угловыми кавычками .InsertAfter "ОАО" & Chrw(171) & Chrw(160) & "Стройтехпрогресс" & Chrw(187) .InsertParagraphAfter 'Убираем жирный шрифт у последнего абзаца в ячейке .Paragraphs(.Paragraphs.Count).Range.Font.Bold = False 'Вставляем текст. 160 — это код неразрывного пробела .InsertAfter "220114 г." & Chrw(160) & "Минск, ул." & Chrw(160) & "Ф." & Chrw(160) & "Скорины, 21 Р/счет 3012800000214 " _ & "в ОАО" & Chrw(160) & Chrw(171) & "СББеларусбанк" & Chrw(187) & ", филиал №510, г." & Chrw(160) & "Минск, ул." & Chrw(160) _ & "Куйбышева, 18, код 603 УНП 100950748, ОКПО 02071702" .InsertParagraphAfter .InsertAfter "Тел./Факс 267 81 70" .InsertParagraphAfter .Paragraphs(.Paragraphs.Count).Range.Font.Bold = True .InsertAfter "Тел. 266 33 61" End With |
Репутация: 7
Всего: 7
Добавлю, что если бы этот договор формировал я, то все разное форматирование я бы разнес по разным ячейкам с невидимыми границами. Вот так, например:
Границы у ячеек невидимые, поэтому на печати это никак не скажется, зато я смогу быть точно уверенным, что слова «Заказчик» и «Исполнитель» всегда будут на одном уровне, как и остальные части текста
Репутация: нет
Всего: нет
спасибки за код, но все же кое в чем не разобрался: почему в данном коде не работает подчеркивание слова "Исполнитель" и не возможно убрать "жирность" в начертании):
Код |
With Table1.Cell(1, 1).Range .ParagraphFormat.LineSpacingRule = wdLineSpace1pt5 .Font.Underline = wdUnderlineSingle '.ParagraphFormat.FirstLineIndent = 0 ' что это и для чего - так и не понял . .ParagraphFormat.Alignment = wdAlignParagraphLeft .Font.Name = "Times New Roman" .Font.Size = 12 .Font.Bold = False ' эту строчку можно было не писать, по умолчанию жирности нет. но текст все равно жирный. даже явно указав - ' не помогает .InsertAfter "Исполнитель:" .InsertParagraphAfter .Font.Bold = True ' 2й абзац |
но и это не все - есть еще 2 проблемы:
1. при старте записи макроса Word возникает нечто вроде курсора-смайлика, при этом невозможно выделить текст, нажать правую кнопку мыши (контексное меню) - это глюк или я чего-то не понимаю? (сильно не пинайте )
2. необходимо сделать ширину ячейки 8,45 см. знал бы что не так в пункте 1 - записал бы "Свойства таблицы"
p.s. по поводу занесения реквизитов в таблицу - не стоит того, имхо. вот представь - если имя заказчика очень длинное, не помещающееся в 1 строку возникнет проблема "пустой строки" в исполнителе, что юридически неверно.
Репутация: 7
Всего: 7
kashemirny, блок With говорит нам, что все, что мы задаем дальше, относится ко всей ячейке. Соответственно, когда ты пишешь
Код |
.ParagraphFormat.FirstLineIndent = 0 'Убирает отступ первой строки. Читай справку :) |
Если ты внимательнее посмотришь на мой код, то начертание шрифта я задаю не для всей ячейки, а для последнего абзаца в ней:
Код |
'Убираем жирный шрифт у последнего абзаца в ячейке .Paragraphs(.Paragraphs.Count).Range.Font.Bold = False |
Далее, при записи макроса контекстное меню можно вызвать нажав клавишу на клавиатуре рядом с правым Ctrl, а выделить текст клавишами ←↑→↓ Но, чтобы задать ширину ячейки, это не обязательно:
Код |
Table1.PreferredWidthType=wdPreferredWidthPoints 'Указываем, что ширину таблицы мы определяем точно Table1.Cell(1,1).PreferredWidth=CentimetersToPoints(8.45) 'Задаем ширину отдельной ячейки |
Вот как раз если имя заказчика очень длинное и не помещается в одну строку, то очень удобно, чтобы оно находилось в одной ячейке. Две ячейки всегда будут расположены на одном уровне, что нельзя сказать об абзацах в этих ячейках. Плавали — знаем. Тогда и весь последующий текст будет выровнен
Репутация: нет
Всего: нет
ViterAlex, вроде во всем разобрался, спасиб . единственное, не понял, как после таблицы написать обычный текст (т.е. выйти из ячеек таблицы, перевести курсор в новую строку)?
пишу текст после блока [With Table1.Cell(х, х).Range - End With] - все равно попадаю в ячейку
Репутация: 7
Всего: 7
Репутация: нет
Всего: нет
нет, не совсем меня правильно понял: 1. шел текст договора, после него - 2. таблица, после таблицы - 3. снова текст. не получается пункт 3. - текст почему-то вписывается в таблицу.
Репутация: 7
Всего: 7
Репутация: нет
Всего: нет
Код |
'. Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents.Add() oWord.Visible = True oDoc.Activate With oWord.Selection |
.TypeText " Hello, world!"
Репутация: 7
Всего: 7
Вот именно, через Selection, что не есть гуд. Ну да ладно. У тебя Selection куда ссылается? На таблицу, потому что таблицу ты вставлял в Selection.Range
Код |
Set Table1 = oDoc.Tables.Add(Range:=oWord.Selection.Range, NumRows:=1, NumColumns:=3) |
Чтобы вводить дальше текст, тебе нужно выделить то, что находится за таблицей, и тогда можно опять писать через Selection. Чтобы выделить абзац за таблицей, нужно использовать то, что я писал двумя постами раньше:
Репутация: нет
Всего: нет
Репутация: 7
Всего: 7
Пожалуйста, но если будешь в дальнейшем работать c Word, то научись обходиться без Selection. В 95% можно все сделать без него. Это очень положительно сказывается на быстродействии программы.
1. Публиковать ссылки на вскрытые компоненты
2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
- Несанкционированная реклама на форуме запрещена
- Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
- Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
- Оставляйте свои записи в "Книге отзывов о работе администрации"
- А вот тут лежит FAQ нашего подраздела
Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
[ Время генерации скрипта: 0.1749 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Бытует мнение, что таблицы Microsoft Word — самая неприятная часть текстового редактора. Они неуклюжи, ими трудно управлять, их тяжело форматировать. После прочтения этой статьи у вас не останется таких предубеждений.
Предвзятое отношение к таблицам имеет свои глубокие корни. Чего греха таить, дюжину лет назад таблицы в Word не могли похвастаться удобством из-за несовершенства программы в целом. Но с тех пор прошло много времени. Microsoft прекрасно поработала над своими ошибками и сделала всё возможное для удобства пользователей. Жаль, конечно, что многие из тех самых пользователей об этом не знают и до сих пор работают в 2003-й редакции офисного пакета. Историю про ёжиков и кактусы не напоминает? :)
Всем застрявшим в прошлом просто по-человечески рекомендую обновиться как минимум до 2013-й версии Microsoft Office, а лучше — сразу до свежей, 2016-й. Поверьте, вам только кажется, что вы работаете в ставшей классикой среде, на самом деле она уже давно поросла мхом и плесенью.
Используйте шаблоны
Офисные будни полны однообразных документов, в том числе и таблиц. Берём одну электронную бумажку, вырезаем её часть, вставляем в новый документ и правим детали. Хорошая методика, но, как мне кажется, работа с шаблонами немного проще и быстрее. К слову, в самом Word шаблоны величают экспресс-таблицами.
Кликните по закладке «Вставка», щёлкните по «Таблице» и перейдите к «Экспресс-таблицам». Обратите внимание на пункт «Сохранить выделенный фрагмент в коллекцию».
Здесь вы найдёте несколько вполне полезных вариантов и, что самое главное, сможете сохранить в качестве шаблона любую другую таблицу или её фрагмент, в том числе и собственного производства.
Рисуйте таблицы
Помните медведя, который в детстве прошёлся по вашим ушам и рукам в безудержном цыганском танце? Именно с тех пор вы не любите пение и кисточки и именно с тех пор вы упорно игнорируете опцию «Нарисовать таблицу» в Word. Встряхнись, взрослый человек! Пора подавить мохнатое чудовище! Это проще, чем кажется.
Кликните по закладке «Вставка», щёлкните по «Таблице» и перейдите к пункту «Нарисовать таблицу».
И не бойтесь совершить промах: под рукой всегда найдётся ластик. Порой карандаш и стиралка существенно упрощают создание сложных таблиц с мелкими элементами.
Вставляйте строки и столбцы быстро
Начиная с Word 2013 добавление строк и столбцов из зубодробительной пытки превратилось в увлекательную забаву. Не подумайте, архаичные «Вставить столбцы слева/справа» и «Вставить строки сверху/снизу» никуда не делись, но о них теперь можно забыть.
Наведите курсор на пространство между строками или столбцами за пределами таблицы и нажмите на появившийся плюс.
В будущем хотелось бы видеть что-то похожее и для функции удаления.
Применяйте линейку
У каждого человека есть любимые и отталкивающие цифры, которые он без разбору использует или избегает в своей жизни. Даже в параметрах своих таблиц. Знаю таких. :)
Если вы привыкли точно выставлять значения отступов, ширину и высоту ячеек через свойства таблицы, попробуйте альтернативу — линейку.
Наведите курсор на границу столбцов или строк, схватите её, зажмите клавишу Alt и пользуйтесь удобством сантиметровой линейки.
Такой же трюк можно провернуть и с маркерами отступов и выступов. Наведите на них курсор и зажмите всё ту же клавишу Alt.
Используйте горячие клавиши
Будь я разработчиком программного обеспечения, я бы нарёк горячие клавиши душевными кнопками. Ведь порой так и хочется обняться с ноутбуком только потому, что они есть. Что же касается таблиц Word, я наиболее часто использую тройку комбинаций:
- Alt + Shift + «Вверх/Вниз» быстро перемещает текущую строку на одну позицию выше или ниже (просто незаменимая вещь).
- Ctrl + Shift + A мгновенно превращает прописные буквы в заглавные, что очень полезно для заголовков.
- Ctrl + Tab добавляет табуляцию в ячейке, в то время как обычный Tab переносит курсор на следующую ячейку.
Преобразуйте текст в таблицу
Немного магии, которой можно прихвастнуть на глазах у изумлённой публики. Вместо того чтобы создавать таблицы привычным способом, попробуйте парочку других, более изощрённых, вариантов:
- Массивы ячеек, скопированные из Excel, вставляютcя в Word как таблица с невидимыми границами.
- Хорошо структурированный текст легко преобразуется в таблицу штатными средствами Word.
Выделите текст, кликните по закладке «Вставка», щёлкните по «Таблице» и выберите пункт «Преобразовать в таблицу».
Обратите внимание на вспомогательные параметры: качество преобразования зависит от них напрямую.
Контролируйте размеры ячеек
Хочешь узнать человека, подкинь ему таблицу с текстом-самодуром. Немного свободная интерпретация известного мнения, конечно, но бьёт в точку. Только взгляните на скриншот, а точнее на первую колонку и слово «филологический» — безобразное бельмо.
По моим наблюдениям, в таких случаях люди сначала неприлично выражаются, а затем прибегают к не самому оптимальному выходу — уменьшают размер шрифта. Но лучше вместить текст другим путём.
Щёлкните в ячейке правой клавишей, выберите пункт «Свойства таблицы», переключитесь на закладку «Ячейка», перейдите к «Параметрам» и проставьте галочку в графе «Вписать текст».
Word поднатужится и вернёт убежавшую букву на место, а в мире снова воцарится мир. К слову, для наглядности «вписанный» текст будет подчёркиваться голубой линией.
А ещё, бывает, позаимствуешь чью-то таблицу и довольно напеваешь себе под нос: «Только ты, рыба моей мечты»! Хорошая работа чужими руками! Начинаешь заливать её своими данными, и тут происходит неконтролируемая чертовщина: одни столбцы расползаются за счёт похудения других. Голова отрезвляется, и реальность перестаёт радовать. Как быть?
Щёлкните в любой из ячеек правой клавишей мыши, выберите пункт «Свойства таблицы», перейдите к «Параметрам» и снимите галочку в графе «Автоподбор размеров по содержимому».
Эта же опция спасёт вашу таблицу от коллапса, если вам необходимо заполнить некоторые ячейки изображениями: они впишутся в виде миниатюры вместо полномасштабного размера.
Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.
Аннотация
В статье описываются способы выявления поврежденных документов в программе Word 2007 и ее более поздних версиях. Кроме того, в статье содержатся рекомендации по восстановлению текста и данных, содержащихся в выявленных поврежденных документах.
Данная статья рассчитана на начинающих пользователей компьютера и пользователей со средним уровнем подготовки. Для удобства выполнения описанных действий рекомендуется начать с распечатки этой статьи.
Обновление Microsoft Office и Windows
Многие проблемы с программным обеспечением могут быть решены путем обновления программ Microsoft Office и Windows.
Поврежденный документ или проблема с программным обеспечением?
Документ Word может быть поврежден по нескольким причинам, которые помешают вам открыть его. Такое поведение может быть вызвано повреждением документа или шаблона, на котором основан документ. Ниже перечислены некоторые типы такого поведения:
В некоторых случаях повреждение документа не является причиной подобного поведения. Важно определить, поврежден ли документ или проблема связана с программным обеспечением. Для устранения этих факторов выполните следующие действия.
- Убедитесь, что подобное поведение не наблюдается при работе с другими документами. Попробуйте открыть другие документы Word, чтобы увидеть, возникает ли та же проблема. Если они открываются правильно, то проблема может быть с документом Word.
- Убедитесь, что подобное поведение не наблюдается при использовании других программ Microsoft Office. Если это так, то проблема может быть с другим приложением или операционной системой.
Если при выполнении какого-либо из этих действий будет выявлено, что проблема заключается не в документе, необходимо устранить проблему с Word, набором Office или установленной на компьютере операционной системе.
Действия при невозможности открытия поврежденного документа
Попробуйте способы в указанном порядке. Если один не работает, попробуйте следующий.
Способ 1. Откройте поврежденный документ в черновом режиме без поврежденных ссылок.
Шаг 1. Настройка Word
- Запустите Word.
- На вкладке Вид в группе Представления выберите Черновик.
- Выберите меню «Файл», затем щелкните Настройки и Дополнительно.
- В разделе Отобразить содержимое документа отметьте пункты Использовать шрифт черновика в режимах отображения «Черновик» и «Разметка» и Показывать замещающие рамки рисунков.
- Прокрутите вниз до раздела Общее, снимите флажок с Автоматически обновлять связи при открытии, нажмите OK и закройте Word.
Шаг 2. Откройте поврежденный документ
- Запустите Word.
- Выберите меню «Файл», затем Открыть.
- Щелкните поврежденный документ, затем выберите Открыть.
Если документ открыть невозможно, закройте его, затем снова откройте с помощью способа 6 и восстановите документ. В противном случае перейдите к способу 2.
Способ 2: Вставьте документ как файл в новый документ.
Шаг 1. Создание нового документа
Шаг 2. Вставьте поврежденный документ в новый документ
На вкладке Вставка нажмите Вставка объекта, затем выберите Текст из файла.
В диалоговом окне Вставка файла найдите и выберите поврежденный документ. Затем выберите Вставить.
Может потребоваться повторно применить форматирование к последнему разделу нового документа.
Способ 3: Создание ссылки на поврежденный документ
Шаг 1. Создание нового документа
- В Word откройте меню Файл, затем выберите Создать.
- Выберите Новый документ, затем Создать.
- В новом документе введите «Это проверка».
- Выберите меню «Файл», затем Сохранить.
- Введите «Ссылка спасения», затем Сохранить.
Шаг 2. Создание ссылки
- Выберите текст, введенный на шаге 1-3.
- На вкладке Главная в группе Буфер обмена щелкните Копировать.
- Выберите меню «Файл», затем Создать.
- Выберите Новый документ, затем Создать.
- На вкладке Главная в группе Буфер обмена щелкните стрелку рядом с кнопкой Вставить, затем выберите Специальная вставка.
- Щелкните Вставить связь, затем Форматированный текст (RTF).
- Нажмите OK.
Шаг 3. Изменение ссылки на поврежденный документ
Щелкните связанный текст правой кнопкой мыши, выберите команду Объект связанного документа, затем Связи.
В диалоговом окне Связи выберите имя файла связанного документа и нажмите Изменить источник.
В диалоговом окне Изменить источник выберите документ, который не удается открыть, и нажмите Открыть.
Нажмите OK, чтобы закрыть диалоговое окно Связи.
В новом документе должны появиться сведения из поврежденного документа, если в нем находились данные или текст, которые можно было восстановить.
Щелкните связанный текст правой кнопкой мыши, выберите Объект связанного документа, затем Связи.
В диалоговом окне Связи нажмите кнопку Разорвать связь.
Способ 4: Использовать конвертер «Восстановление текста из любого файла»
У конвертера "Восстановление текста из любого файла" есть свои ограничения. Например, он не сохраняет форматирование документа. Кроме того, теряются все нетекстовые данные (рисунки, поля, графические объекты и прочие элементы). Поэтому верхние и нижние колонтитулы, сноски и текст полей сохраняются в виде обычного текста.
- В Word откройте меню «Файл», затем Открыть.
- В поле Тип файлов выберите Восстановление текста из любого файла(.).
- Выберите документ, текст которого необходимо восстановить.
- Выберите Открыть.
После восстановления документа с помощью конвертера «Восстановление текста из любого файла» некоторые двоичные данные не преобразовались. В основном это текст начала и конца документа. Необходимо удалить эти двоичные данные перед сохранения файла в качестве документа Word.
В пользовательском интерфейсе Word 2007 отсутствует кнопка «Файл». Вместо нее используйте кнопку Office и затем выполняйте необходимые указания.
Действия по устранению проблем, если поврежденный документ можно открыть
Способ 1. Скопируйте все содержимое, за исключением последнего знака абзаца, в новый документ.
Шаг 1. Создайте новый документ
- В Word откройте меню Файл на ленте и выберите пункт Создать.
- Выберите Новый документ, затем Создать.
Шаг 2. Откройте поврежденный документ
- Выберите меню «Файл» на ленте и выберите пункт Открыть.
- Щелкните поврежденный документ, затем выберите Открыть.
Шаг 3. Скопируйте содержимое документа и вставьте его в новый документ
Если документ содержит разрывы разделов, копируйте только текст между разрывами. Разрывы разделов не следует копировать, так как они могут повредить новый документ. При копировании и вставке между документами необходимо изменить вид документа на черновой режим, чтобы избежать переноса разрывов разделов. Для перехода в черновой режим на вкладке Вид в группе Представления документа щелкните Черновик.
- В поврежденном документе нажмите сочетание клавиш CTRL+END, затем нажмите сочетание клавиш CTRL+SHIFT+HOME.
- На вкладке Главная в группе Буфер обмена щелкните Копировать.
- На вкладке Вид в группе Окно щелкните Переключение окон.
- Щелкните новый документ, созданный в шаге 1.
- На вкладке Главная в группе Буфер обмена щелкните Вставить.
Если неисправность сохраняется, перейдите к способу 8.
Способ 2: Замените используемый документом шаблон
Шаг 1. Определите используемый документом шаблон
- Откройте поврежденный документ в приложении Word.
- Выберите меню «Файл» на ленте и выберите пункт Параметры.
- Выберите пункт Надстройки.
- В окне Управление щелкните Шаблоны в области Просмотр и управление надстройками Office.
- Выберите Выполнить. В окне Шаблон документа появится список шаблонов документа. Если отображенные шаблоны помечены как Обычный, перейдите к шагу 2. В противном случае перейдите к выполнению действия 3.
Шаг 2. Переименуйте общий шаблон (Normal.dotm)
- Закройте приложение Word.
- Нажмите Пуск.
- В своей операционной системе найдите normal.dotm. Этот шаблон обычно находится здесь: %userprofile%\appdata\roaming\microsoft\templates
- Щелкните правой кнопкой файл Normal.dotm и выберите Переименовать.
- Введите «Oldword.old» и нажмите клавишу ВВОД.
- Закройте проводник.
- Запустите приложение Word и откройте документ.
Шаг 3. Измените шаблон документа
Шаг 4. Проверьте изменение шаблонов.
- Запустите Word.
- Выберите меню «Файл» на ленте и выберите пункт Параметры.
- Щелкните поврежденный документ, затем выберите Открыть.
Если неисправность сохраняется, перейдите к способу 3.
Способ 3: Запустите программу Word с параметрами по умолчанию.
Для запуска Word с параметрами по умолчанию вы можете использовать параметр командной строки /a. При использовании параметра /a Word не загружает никакие надстройки. Кроме того, Word не использует имеющийся шаблон Normal.dotm. Перезапустите Word с помощью параметра /a.
Вариант 1. Запуск Word с параметром /a
Закройте приложение Word.
Нажмите Пуск и выберите пункт «Выполнить». В диалоговом окне «Выполнить» введите:
Этап 2. Открытие документа
- В Word откройте меню «Файл» на ленте и выберите пункт Открыть.
- Щелкните поврежденный документ, затем выберите Открыть.
Если неисправность сохраняется, перейдите к способу 4.
Способ 4: Изменение драйверов принтера.
Шаг 1. Попробуйте заменить драйвер принтера
- Найдите в вашей операционной системе меню «Устройства и принтеры».
- Нажмите Установка принтера.
- В диалоговом окне Установка принтера щелкните Добавить локальный принтер.
- Выберите Использовать существующий порт и нажмите кнопку Далее.
- В списке Изготовитель выберите Microsoft.
- Выберите Средство записи XPS-документов Microsoft и нажмите кнопку Далее.
- Выберите пункт Использовать уже установленный драйвер (рекомендуется) и нажмите кнопку Далее.
- Установите флажок Использовать в качестве принтера по умолчанию и нажмите кнопку Далее.
- Выберите Готово.
Шаг 2. Убедитесь, что изменение драйверов принтера привело к разрешению проблемы
- Запустите Word.
- Выберите меню «Файл» на ленте и выберите пункт Открыть.
- Щелкните поврежденный документ, затем выберите Открыть.
Если странное поведение не было устранено, перейдите к шагу 3.
Шаг 3. Переустановите исходный драйвер принтера.
Windows 10 и Windows 7
В своей операционной системе найдите «Принтеры».
Щелкните правой кнопкой мыши значок принтера по умолчанию и выберите команду Удалить.
Если система запросит пароль администратора или подтверждение, введите пароль или нажмите кнопку Продолжить.
Если будет предложено удалить все файлы, связанные с принтером, нажмите кнопку Да.
Щелкните Добавить принтер или сканер и следуйте инструкциям Мастера установки принтера для переустановки драйвера принтера.
Шаг 4. Убедитесь, что изменение драйверов принтера привело к разрешению проблемы
- Запустите Word.
- Выберите меню «Файл» на ленте и выберите пункт Открыть.
- Щелкните поврежденный документ, затем выберите Открыть.
Если неисправность сохраняется, перейдите к способу 5.
Способ 5. Попытка принудительного восстановления файла в Word.
Шаг 1. Восстановление документа
В Word откройте меню «Файл» на ленте и выберите пункт Открыть.
- В диалоговом окне Открыть выберите нужный документ Word.
- Щелкните стрелку рядом с кнопкой Открыть и выберите команду Открыть и восстановить.
Шаг 2. Убедитесь, что восстановление документа привело к разрешению проблемы
Убедитесь, что странное поведение больше не возникает. Если неисправность сохраняется, перезагрузите Windows и перейдите к способу 6.
Способ 6. Изменение формата документа с последующим преобразованием документа обратно в формат Word.
Шаг 1. Откройте документ
- Запустите Word.
- Выберите меню «Файл» на ленте и выберите пункт Открыть.
- Щелкните поврежденный документ, затем выберите Открыть.
Шаг 2. Сохраните документ в другом формате
- Откройте меню «Файл» на ленте и выберите пункт Сохранить как.
- Выберите Другие форматы.
- В списке Сохранение файла выберите Rich Text Format (*.rtf).
- Выберите Сохранить.
- Откройте меню «Файл» на ленте и выберите пункт Закрыть.
Шаг 3. Откройте документ, затем сконвертируйте его обратно в формат Word
- В Word выберите Файл, затем Открыть.
- Щелкните конвертированный документ, затем выберите Открыть.
- Выберите Файл, затем команду Сохранить как.
- Выберите Документ Word в поле Сохранить как.
- Переименуйте файл и нажмите Сохранить.
Шаг 4. Убедитесь, что конвертация формата файла решила проблему
Убедитесь, что странное поведение больше не возникает. Если проблема не устранена, попробуйте сохранить файл в другом формате. Повторите шаги 1 – 4, затем попробуйте сохранить файл в других форматах в следующем порядке:
- Веб-страница (.htm; .html)
- в любом другом формате обработки текста;
- в формате обычного текста (TXT).
При сохранении файлов в формате Обычный текст (.txt) вы можете устранить повреждение документа. Однако все форматирование документа, все макросы и рисунки при этом теряются. При сохранении файлов в формате обычного текста (.txt) необходимо повторно форматировать документ. Поэтому формат Обычный текст (.txt) необходимо использовать только в том случае, если другие форматы не разрешают проблему.
Если неисправность сохраняется, перейдите к способу 7.
Способ 7. Скопируйте неповрежденные части поврежденного документа в новый документ.
Шаг 1. Создайте новый документ
- В Word выберите Файл и щелкните пункт Создать.
- Выберите Новый документ, затем Создать.
Шаг 2. Откройте поврежденный документ
- Выберите Файл, затем Открыть.
- Щелкните поврежденный документ, затем выберите Открыть.
Шаг 3. Скопируйте неповрежденные части поврежденного документа, а затем вставьте их в новый документ
Если документ содержит разрывы разделов, копируйте только текст между разрывами. Разрывы разделов не следует копировать, так как они могут повредить новый документ. При копировании и вставке между документами необходимо изменить вид документа на черновой режим, чтобы избежать переноса разрывов разделов. Для перехода в черновой режим на вкладке Вид в группе Представления документа щелкните Черновик.
- В поврежденном документе найдите и выделите неповрежденню часть содержания документа.
- На вкладке Главная в группе Буфер обмена щелкните Копировать.
- На вкладке Вид в группе Окно щелкните Переключение окон.
- Щелкните новый документ, созданный в шаге 1.
- На вкладке Главная в группе Буфер обмена щелкните Вставить.
- Повторите шаги 3a – 3e для всех неповрежденных частей документа. Необходимо воссоздать поврежденные части документа.
Способ 8. Переключите представление документа и удалите поврежденное содержимое
В обрезанных документах, в которых отображаются не все страницы, можно переключить представление и удалить поврежденное содержимое.
Определите номер страницы с поврежденным содержимым, из-за которого документ обрезается.
- В Word выберите Файл, затем Открыть.
- Щелкните поврежденный документ, затем выберите Открыть.
- Прокрутите документ до той страницы, после которой он обрезается. Запомните содержимое этой страницы.
Переключите представление документа и удалите поврежденное содержимое.
- На вкладке Вид в группе Представления документа выберите элемент Веб-документ или Черновик.
- Прокрутите документ и найдите содержимое, после которого он обрезается.
- Выделите и удалите следующий абзац, таблицу или объект.
- На вкладке Вид в группе Представления документа выберите элемент Режим разметки. Переключайте представления и удаляйте содержимое до тех пор, пока документ не отобразится в полном виде в представлении Режим разметки.
- Сохраните документ.
Способ 9: Откройте документ с помощью блокнота
Если документ поврежден и ни один из предыдущих способов не работает, попробуйте восстановить его содержимое, открыв документ с помощью блокнота.
Используя этот метод, вы потеряете все форматирование. Целью является восстановление содержимого.
- Найдите поврежденный документ с помощью проводника Windows.
- Щелкните документ правой кнопкой мыши и выберите Открыть с помощью.
- Выберите Блокнот:
Документ откроется в Блокноте с дополнительным кодом и текстом вокруг содержимого.
Возможно, вам придется изменить тип файла с Текстовые документы (.txt) на Все файлы (.*).
Очистите текст, удаляя все или большинство дополнительных знаков.
Выберите Файл, затем Сохранить как. . Переименуйте документ, чтобы гарантировать, что вы не перезаписали поврежденный.
Вернитесь к Word и откройте новый документ. Как только документ открыт в Word, вы можете очистить его и попытаться повторно применить утерянный формат.
Очень многие в своей работе сталкиваются с необходимостью формировать отчёты, сводки, обобщающие документы на основе каких-то вычислений, расчетов, таблиц с исходными данными и их анализа. И часто для выполнения этих задач приходится прибегать к комбинации таких программных продуктов как Word (где формируется итоговый отчет для дальнейшей распечатки или пересылки кому-либо) и Excel (в котором собираются и обрабатываются исходные данные для отчета).
Если разовые задачи не вызывают особых вопросов, то формирование периодических отчетов порой доставляет немало проблем. Рутинное копирование одних и тех же табличек или графиков (с немного изменившимися данными) в одни и те же документы крайне утомляет. Но этот процесс можно автоматизировать. Как это сделать - читайте ниже.
Создание связи между Word и Excel
Самый быстрый и эффективный способ создать связи между файлами - скопировать нужную информацию из одного и вставить в другой, воспользовавшись инструментом "Специальная вставка" . Для этого нужно выделить таблицу, ячейку или диаграмму в Excel, перейти в Word, поставить курсор в нужную часть документа и:
- нажать правую кнопку мыши и выбрать пиктограмму с нужным способом вставки
- или выбрать на вкладке "Главная" команду "Вставить" (нажать на стрелочку под иконкой) и в появившемся списке выбрать "Специальная вставка", либо воспользоваться сочетанием клавиш "CTRL+ALT+V" . В появившемся окне необходимо активировать пункт "Связать" , выбрать вариант вставки и нажать ОК.
В результате вставленный объект будет связан с тем файлом, откуда он был скопирован, и при обновлении исходных данных можно будет быстро обновить связи в документе Word.
Выбор способа вставки данных
Как видно на рисунке 2, есть несколько способов вставки данных в документ. В повседневной работе придется выбирать, по сути, между двумя вариантами - вставить таблицу как картинку (без возможности ее форматирования) или как текст (а значит, с возможностью вносить изменения). Для диаграмм вариант всего один - картинка.
Кроме того, важно отличать связанные объекты от внедренных. Внедрение - операция, которая не рассматривается в этой статье. Суть ее в том, что в документ Word внедряется объект Excel, который позволяет работать с данными в табличном процессоре прямо из документа Word. При этом исходный файл и текстовый документ никак не связаны. Внедрение используется редко, так как сильно увеличивает размер файла.
В большинстве случаев при выборе способа вставки таблицы следует выбирать текстовый вариант, чтобы иметь возможность настроить форматирование под себя. Картинки можно вставлять, если форматирование в исходном документе Excel Вас полностью устраивает.
Бывают ситуации, когда приходится вставлять не всю таблицу, а данные из отдельных ячеек. Например, когда нужно вставить в предложение какую-то цифру или текст, которые есть в файле Excel и будут изменяться, или же когда таблица в Word составляется из нескольких разрозненных ячеек Excel (из разных таблиц, листов или даже книг). В таких случаях копируем данные ячеек в нужное место и выбираем способ вставки "Неформатированный текст".
Настройка способа обновления связей и работа с диспетчером связей
Вставленные связи можно обновлять несколькими способами. Например, если на вставленном объекте кликнуть правой кнопкой мыши, то в меню будет кнопка "Обновить связь", нажатие которой приведет к обновлению выбранной связи.
Можно задать параметры обновления сразу для всех объектов. Для этого нужно вызвать диспетчер связей документа. Проходим по пути "Файл"-"Сведения"-"Изменить связи с файлами" (данная команда доступна, когда в документе есть как минимум одна связь, а сам документ сохранен).
В диспетчере показаны все связи файла. В группе "Способ обновления связи" можно выбрать тот вариант, который более предпочтителен или вообще отключить обновление связей. Также для каждой связи можно задать настройку "Сохранять формат при обновлении". Она отвечает за то, чтобы выбранное Вами форматирование не слетало, когда вы обновите связь.
В этом же диспетчере можно разорвать связи, открыть или изменить источник.
Работа со связями через коды полей Word
По своей сути каждая связь представляет собой специальное поле Word. Если в документе со связями Вы нажмете ALT+F9 , то увидите, что вместо вставленных данных отобразятся коды этих полей.
Работа с ними открывает возможности, которые не предоставляет стандартный диспетчер связей. И хотя коды полей Word - широчайшая тема, выходящая далеко за рамки данной статьи, пару примеров их полезного использования мы приведем:
1) Изменение ссылок на документы сразу во всех связях
Связи с исходными документами осуществляются через прямые ссылки. Если Вы переложили исходный файл, то нужно будет переподтянуть все связи. В диспетчере связей придется делать это для каждой связи отдельно (даже если выбрать несколько - диспетчер будет по очереди предлагать заменять каждую ссылку). Если же вы перейдете в режим отображения кодов полей ( ALT+F9 ), то старые ссылки можно поменять на новые простой заменой ( CTRL+H или "Главная-Заменить" ), указав старый адрес и новый.
2) Использование именованных диапазонов для вставки таблиц
Если вы вставляете в Word таблицу из Excel, то ссылка на нее будет содержать конкретный диапазон ячеек. То есть, если вы добавите в таблицу строки или столбцы - то данные обновятся только в пределах жестко указанного диапазона. Диспетчер связей позволяет изменить диапазон вручную. Автоматическое же изменение можно настроить, задав в Excel именованный динамический диапазон (урок здесь и здесь , не разберетесь - пишите нашему боту в Telegram, поможем), а в файле Word в режиме правки кодов полей после этого нужно будет заменить прямые ссылки на ячейки на название именованного диапазона. Теперь при изменении размера исходной таблицы в Excel документ в Word обновится корректно.
Другие полезные тонкости работы с офисными программами всегда можно узнать здесь .
Ваши вопросы по статье можете задавать через нашего бота обратной связи в Telegram: @KillOfBot
Репутация: нет
Всего: нет
Добрый день!
Пытаюсь формировать договор Word посредством запуска процедуры Excel (шаблоны не использую) - не получается вставить таблицу, почему - не знаю. Подскажите, что не так.
Код |
Public Sub DocWrite(sNomerDog As String) |
Dim oWord As Word.Application
Dim oDoc As Word.Document
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents.Add()
oWord.Visible = True
oDoc.Activate
With oWord.Selection
.Font.Name = "Times New Roman"
.Font.Size = 14
.Font.Bold = wdToggle
.TypeText "ДОГОВОР №" & sNomerDog
'.Style = "Заголовок 1"
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Font.Name = "Times New Roman"
.Font.Size = 14
.TypeText "на выполнение работ"
'.Style = "Заголовок 2"
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.TypeText vbCrLf
.TypeText vbCrLf
' Нужно вставить таблицу в конец документа (туда где курсор) - не работает
Dim Table1 As Table
Set Table1 = ActiveDocument.Add(Range:=Selection.Range, NumRows:=5, NumColumns:=3)
Exel "Ругается" на строку вызова процедуры Call ThisWorkbook.DocWrite(sNomerDog)
Репутация: 7
Всего: 7
Цитата(kashemirny @ 21.10.2009, 14:11 ) |
' Нужно вставить таблицу и заполнить ее - не работаетDim Table1 As TableSet Table1 = ActiveDocument.Add(Range:=Selection.Range, NumRows:=5, NumColumns:=3) |
Код |
Dim Table1 As Word.Table Set Table1 = oDoc.Tables.Add(Range:=oword.Selection.Range, NumRows:=5, NumColumns:=3) |
Цитата(kashemirny @ 21.10.2009, 14:11 ) |
Set oWord = CreateObject("Word.Application") |
Репутация: нет
Всего: нет
ViterAlex, спасибо , помогло, теперь снова не получается вставить данные, уже в ячейки таблицы:
Код |
Dim Table1 As Word.Table Set Table1 = oDoc.Tables.Add(Range:=oWord.Selection.Range, NumRows:=1, NumColumns:=3) Table1.Cell(1, 1).Range.InsertAfter "Исполнитель" ' слово Исполнитель нужно подчеркнуть. |
' не работает перевод строки:
'oWord.Selection.TypeParagraph
'и так не работает:
'oWord.Selection.TypeText vbCrLf
Приложу картинку документа чтобы было понятней. как сделать похожее форматирование границ в таблице? Подскажите, очень нужно!
Репутация: 7
Всего: 7
Посмотри пример, как можно заполнить первую ячейку, а остальное сделай сам. Неразрывные пробелы ты, конечно, можешь не ставить, но хуже от них еще никому не было.
Код |
'Заполняем первую ячейку With Table1.Cell(1, 1).Range .Font.Underline = wdUnderlineSingle .Font.Bold = True .ParagraphFormat.FirstLineIndent = 0 .ParagraphFormat.Alignment = wdAlignParagraphLeft .InsertAfter "Исполнитель:" .InsertParagraphAfter 'Убираем подчеркивание у последнего абзаца в ячейке .Paragraphs(.Paragraphs.Count).Range.Font.Underline = wdUnderlineNone 'Вставляем текст с правой (код 187) и левой (код 171) угловыми кавычками .InsertAfter "ОАО" & Chrw(171) & Chrw(160) & "Стройтехпрогресс" & Chrw(187) .InsertParagraphAfter 'Убираем жирный шрифт у последнего абзаца в ячейке .Paragraphs(.Paragraphs.Count).Range.Font.Bold = False 'Вставляем текст. 160 — это код неразрывного пробела .InsertAfter "220114 г." & Chrw(160) & "Минск, ул." & Chrw(160) & "Ф." & Chrw(160) & "Скорины, 21 Р/счет 3012800000214 " _ & "в ОАО" & Chrw(160) & Chrw(171) & "СББеларусбанк" & Chrw(187) & ", филиал №510, г." & Chrw(160) & "Минск, ул." & Chrw(160) _ & "Куйбышева, 18, код 603 УНП 100950748, ОКПО 02071702" .InsertParagraphAfter .InsertAfter "Тел./Факс 267 81 70" .InsertParagraphAfter .Paragraphs(.Paragraphs.Count).Range.Font.Bold = True .InsertAfter "Тел. 266 33 61" End With |
Репутация: 7
Всего: 7
Добавлю, что если бы этот договор формировал я, то все разное форматирование я бы разнес по разным ячейкам с невидимыми границами. Вот так, например:
Границы у ячеек невидимые, поэтому на печати это никак не скажется, зато я смогу быть точно уверенным, что слова «Заказчик» и «Исполнитель» всегда будут на одном уровне, как и остальные части текста
Репутация: нет
Всего: нет
спасибки за код, но все же кое в чем не разобрался: почему в данном коде не работает подчеркивание слова "Исполнитель" и не возможно убрать "жирность" в начертании):
Код |
With Table1.Cell(1, 1).Range .ParagraphFormat.LineSpacingRule = wdLineSpace1pt5 .Font.Underline = wdUnderlineSingle '.ParagraphFormat.FirstLineIndent = 0 ' что это и для чего - так и не понял . .ParagraphFormat.Alignment = wdAlignParagraphLeft .Font.Name = "Times New Roman" .Font.Size = 12 .Font.Bold = False ' эту строчку можно было не писать, по умолчанию жирности нет. но текст все равно жирный. даже явно указав - ' не помогает .InsertAfter "Исполнитель:" .InsertParagraphAfter .Font.Bold = True ' 2й абзац |
но и это не все - есть еще 2 проблемы:
1. при старте записи макроса Word возникает нечто вроде курсора-смайлика, при этом невозможно выделить текст, нажать правую кнопку мыши (контексное меню) - это глюк или я чего-то не понимаю? (сильно не пинайте )
2. необходимо сделать ширину ячейки 8,45 см. знал бы что не так в пункте 1 - записал бы "Свойства таблицы"
p.s. по поводу занесения реквизитов в таблицу - не стоит того, имхо. вот представь - если имя заказчика очень длинное, не помещающееся в 1 строку возникнет проблема "пустой строки" в исполнителе, что юридически неверно.
Репутация: 7
Всего: 7
kashemirny, блок With говорит нам, что все, что мы задаем дальше, относится ко всей ячейке. Соответственно, когда ты пишешь
Код |
.ParagraphFormat.FirstLineIndent = 0 'Убирает отступ первой строки. Читай справку :) |
Если ты внимательнее посмотришь на мой код, то начертание шрифта я задаю не для всей ячейки, а для последнего абзаца в ней:
Код |
'Убираем жирный шрифт у последнего абзаца в ячейке .Paragraphs(.Paragraphs.Count).Range.Font.Bold = False |
Далее, при записи макроса контекстное меню можно вызвать нажав клавишу на клавиатуре рядом с правым Ctrl, а выделить текст клавишами ←↑→↓ Но, чтобы задать ширину ячейки, это не обязательно:
Код |
Table1.PreferredWidthType=wdPreferredWidthPoints 'Указываем, что ширину таблицы мы определяем точно Table1.Cell(1,1).PreferredWidth=CentimetersToPoints(8.45) 'Задаем ширину отдельной ячейки |
Вот как раз если имя заказчика очень длинное и не помещается в одну строку, то очень удобно, чтобы оно находилось в одной ячейке. Две ячейки всегда будут расположены на одном уровне, что нельзя сказать об абзацах в этих ячейках. Плавали — знаем. Тогда и весь последующий текст будет выровнен
Репутация: нет
Всего: нет
ViterAlex, вроде во всем разобрался, спасиб . единственное, не понял, как после таблицы написать обычный текст (т.е. выйти из ячеек таблицы, перевести курсор в новую строку)?
пишу текст после блока [With Table1.Cell(х, х).Range - End With] - все равно попадаю в ячейку
Репутация: 7
Всего: 7
Репутация: нет
Всего: нет
нет, не совсем меня правильно понял: 1. шел текст договора, после него - 2. таблица, после таблицы - 3. снова текст. не получается пункт 3. - текст почему-то вписывается в таблицу.
Репутация: 7
Всего: 7
Репутация: нет
Всего: нет
Код |
'. Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents.Add() oWord.Visible = True oDoc.Activate With oWord.Selection |
.TypeText " Hello, world!"
Репутация: 7
Всего: 7
Вот именно, через Selection, что не есть гуд. Ну да ладно. У тебя Selection куда ссылается? На таблицу, потому что таблицу ты вставлял в Selection.Range
Код |
Set Table1 = oDoc.Tables.Add(Range:=oWord.Selection.Range, NumRows:=1, NumColumns:=3) |
Чтобы вводить дальше текст, тебе нужно выделить то, что находится за таблицей, и тогда можно опять писать через Selection. Чтобы выделить абзац за таблицей, нужно использовать то, что я писал двумя постами раньше:
Репутация: нет
Всего: нет
Репутация: 7
Всего: 7
Пожалуйста, но если будешь в дальнейшем работать c Word, то научись обходиться без Selection. В 95% можно все сделать без него. Это очень положительно сказывается на быстродействии программы.
1. Публиковать ссылки на вскрытые компоненты
2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
- Несанкционированная реклама на форуме запрещена
- Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
- Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
- Оставляйте свои записи в "Книге отзывов о работе администрации"
- А вот тут лежит FAQ нашего подраздела
Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
[ Время генерации скрипта: 0.1581 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Читайте также: