Перейти из форума на сайт.


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

Открыть новую тему     Написать ответ в эту тему

RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Archimed
А вто так

Цитата:
 
Dim xlApp As Excel.Application  
Dim xlSheet As Excel.WorkSheet
Dim xlRange AS Exel.Range
 
Set xlApp = CreateObject("Excel.Application")
xlApp.Worbooks.Open('C:\FileExel.xls')
xlSheet = xlApp.WorkSheets('Лист1')
xlRange = xlSheet.UsedRange
 
 
For r=1 To xlRange.Rows.Count Do
For c=1 To xlRange.columns.Count Do
 
xlRange.Cells(r,c).Value
 
 

и т.д. в зависимости от поставленой задачи

Всего записей: 557 | Зарегистр. 05-04-2006 | Отправлено: 13:26 11-08-2006
Archimed



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RedPromo
Спасибо за ответ. Но...

Цитата:
xlSheet = xlApp.WorkSheets('Лист1')  

На этой строке выдает ошибку (Object variable or With block variable not set (Error 91)).
В чем может быть причина? Не подключены какие-то библиотеки.
 

Цитата:
For r=1 To xlRange.Rows.Count Do  
For c=1 To xlRange.columns.Count Do  

в этих строках тоже какая-то ошибка.
 Если не трудно прогони код на компе, а то у тебя есть ошибки по тексту.
Цитата:
Dim xlRange AS Exel.Range  

EXEL  и ' вместо ".

Всего записей: 731 | Зарегистр. 25-10-2002 | Отправлено: 15:48 12-08-2006
Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Archimed
Set xlSheet = xlApp.WorkSheets("Лист1")
Set xlRange = xlSheet.UsedRange
 
В For цикле Do не надо.

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 18:42 12-08-2006
RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Archimed
Да немного есть ошибок приношу извиннеия прост я писал с ходу  
да иногда неуспеваеш переключится на с одного языка на другой

Всего записей: 557 | Зарегистр. 05-04-2006 | Отправлено: 20:02 12-08-2006
mrdime



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, такой вопрос:
 
Все таблички в документе необходимо отформатить по одному образцу. Все бы хорошо, но надо, чтобы все ячейки в первой строке каждой таблицы форматировались по-горизонтали по-центру.  На следующий код получаю ошибку, что таблица содержит объединенные ячейки, поэтому опреация невозможна. Но, обьединенные ячейки находятся не в первой строке, в некоторых таблицах таких вообще нет. Как обойти эти грабли? Кроме того, если делать это "ручками" в Excel никакие объединения не мешают форматить ячейки как угодно.
Вот код:
 
Sub TableEdit ()
 
Dim oTable As Table
 
For Each oTable in ActiveDocument.Tables
     oTable.Rows(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next oTable
 
End Sub

Всего записей: 2613 | Зарегистр. 04-01-2005 | Отправлено: 21:54 22-08-2006
mrdime



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-то не работает эта ветка форума...
Разобрался сам. Если кого интересует - пишите - отвечу. Но суть в том, что ряды в Ворде не поддерживают свойство .ParagraphFormat.Alignment. Зато поддерживают ячейки. Через них я это и сделал: отформатил все ячейки с идексом 1.
 
For Each oTable in ActiveDocument.Tables  
     For I=1 To 3 'у меня по 3 колонки в таблицах
           oTable.Columns(I).Cells(1).ParagraphFormat.Alignment = wdAlignParagraphCenter  
     Next I
Next oTable  
 
Пишу по памяти, мож. где ошибка, но принцип такой.

Всего записей: 2613 | Зарегистр. 04-01-2005 | Отправлено: 19:56 02-09-2006
mrdime



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем,
 
Как я понял, эта ветка не слишком активна, мягко говоря, но может кто-то идейку подкинет...
 
Такая проблема. Есть код:
 
Sub Test()
Dim myTable As Table
Dim oCell As Cell
Dim myRange As Range
 
Set myTable = ActiveDocument.Tables(1)
 
Set myRange = ActiveDocument.Range( _
myTable.Cell(3, 1).Range.Start, _
myTable.Cell(4, 1).Range.End)
myRange.Cells.Merge
 
 
End Sub
 
Выдает ошибку:5941:"Запрашиваемый номер семейства не существует."
 
Если объединять ячейки из любого другого столбца, кроме 1-го, все выполняется без проблем. Но, мне необходимо объеденить несколько ячеек именно в первом столбце таблицы.
 
Буду благодарен, если кто-то подскажет решение проблемы, или хотя бы ресурс, где об этом можно поподробнее узнать (можно на английском или немецком). Мелкомягкие именно эту проблему в справке по ошибке с таким кодом не описывают.

Всего записей: 2613 | Зарегистр. 04-01-2005 | Отправлено: 13:47 04-09-2006
Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mrdime
Можно так:

Код:
...
myRange.Select
Selection.Cells.Merge

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 21:12 04-09-2006
mrdime



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yuk
 
Ух, Шайтан!
Большое спасибо, не ожидал, что так просто можно решить эту проблему.

Всего записей: 2613 | Зарегистр. 04-01-2005 | Отправлено: 10:19 05-09-2006 | Исправлено: mrdime, 10:20 05-09-2006
OrlangurStep



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как заставить выполнятся макрос при открытии любого дока?

Всего записей: 1392 | Зарегистр. 08-04-2006 | Отправлено: 14:52 12-11-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
OrlangurStep
Добавить его в шаблон всех документов (Normal.dot). Например,
Код:
Private Sub Document_Open()
  MsgBox "Привет"
End Sub



----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 14:58 12-11-2006
OrlangurStep



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TЕсть ще вопрос -  как проверить иня текущего дока на соответствие шаболону ????TMP.rtf ?

Всего записей: 1392 | Зарегистр. 08-04-2006 | Отправлено: 18:36 12-11-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
OrlangurStep

Цитата:
TЕсть ще вопрос -  как проверить иня текущего дока на соответствие шаболону ????TMP.rtf ?

Без регулярных выражений, не универсально
Код:
  If Len("????TMP.rtf") = Len(ActiveDocument.Name) Then
    If StrComp(Right(ActiveDocument.Name, Len("TMP.rtf")), "TMP.rtf", 1) = 0 Then
      MsgBox "Соответствует шаблону"
    End If
  End If

 
С использованием регекспов, универсально, но требует дополнительную библиотеку и знание синтаксиса регулярных выражений. Что то типа этого:
Код:
  Dim regEx
  Set regEx = New RegExp
 
  regEx.Pattern = "^(.{4})TMP\.rtf"
  regEx.IgnoreCase = True
 
  If regEx.Test(ActiveDocument.Name) = True Then
    MsgBox "Соответствует шаблону"
  End If



----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 20:13 12-11-2006
Phelicks

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ. Может кто поможет.
 
Есть таблица. Внутрь вставляю поле. Нужно чтобы при попытке Worda расширить таблицу по высоте, если текст не вписывается, уменьшить шрифт на 1 пт. И так пока не станет все пучком.
 
Помогите плз. !!!! Можно в приципе за webmoney или пива

Всего записей: 212 | Зарегистр. 28-04-2004 | Отправлено: 22:00 23-11-2006
Archimed



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Опять прошу помощи. В Userform добавляю новый Controls как Forms.Label.1. Как изменить размер и тип шрифта в добавленной метке. ...NewControls.Font ="Arial" не прокатывает. Короче, надпись не помещается в выделенное под нее поле. нужно уменьшить шрифт. Расширить Width не предлагать.
Вопрос снят. Нашел в Helpe как это можно сделать.

Всего записей: 731 | Зарегистр. 25-10-2002 | Отправлено: 14:04 23-12-2006 | Исправлено: Archimed, 09:23 24-12-2006
zeroandruxa



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ как програмно добраться до филдов (вставить поле в меню вставка), добавлять их заменять значениями в тексте?

Всего записей: 530 | Зарегистр. 02-11-2005 | Отправлено: 13:55 28-12-2006
VicFrag

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот, казалось бы,типичная задача. Хочу написать что-либо типа Wizard для формирования документа пользователем. Программа строит документ и периодически предлагает пользователю заполнить конкретным содержимым отдельные блоки: шапочку, таблички и т.д.. В эти блоки юзер может вставлять всё что душе угодно: графику, текст, формулы, OLE объекты. Казалось бы, выкинул пользователю пустую страничку и говори заполняй, как закончишь нажми такую-то кнопочку или комбинацию клавиш. Макрос всё это подсосёт и продолжит работу. Типичная задача. А вот решения не вижу. В своё время писал макрос для интерактивного построения сложных многоуровневых диаграмм. И там содержимое отдельных блоков должно было быть любым(см. выще). По ходу работы макроса пользователь строил диаграмму(выбирал тип: ветвление, цикл, условие), а для заполнения содержимого текущего блока выбрасывался пустой документ и он туда пихал всё что-нужно. Нажимал кнопарь и поехали дальше. Подобная задача была решена в WordBasic(был такой) при помощи жуткого извращения. В VBA я не вижу подобного решения. Word либо исполняет макрос, либо работает с пользователем. Может у кого есть решение этой в общем то типичной проблеммы?

Всего записей: 3 | Зарегистр. 04-01-2007 | Отправлено: 20:13 04-01-2007 | Исправлено: VicFrag, 20:15 04-01-2007
SGavrish

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если создать в Excel-е встроенный объект (несвязанный), например документ Word, то при его открытии в меню word-а нет команды "Сохранить", вместо нее "Обновить", изменены ряд других команд меню, заголовок окна, Document.Path="", и др. То есть word "знает", что документ был создан OLE-следствами, и соответственно им манипулирует. А вот как мне включить такой режим? Мне нужно создать документ из 1С v8, и сохранить его в 1С-ой базе. Как это сделать через временный файл понятно, а вот можно ли обойтись без файла? Куда word-у сохранять его по команде пользователя "Обновить"? Не понятен принцип такой работы, и описаловки нигде не могу найти
Подскажите пожалуйста.

Всего записей: 1 | Зарегистр. 12-03-2007 | Отправлено: 11:38 12-03-2007
TashaA



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Уважаемые! HELPните, плиз!
Как скопировать данные таблицы Excel и вставить их в таблицу Wordа?
т.е. полностью таблицу, а не одну ячейку.

Всего записей: 6 | Зарегистр. 30-05-2006 | Отправлено: 07:12 05-04-2007
apexfmm



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TashaA
только через импорт данных Excel

----------
-Если вы не испытываете желания преступить хоть одну из десяти заповедей - значит, с вами что-то не так
[WINXP SP3eng, Intel P75, CoreDuoE7400 2.8GHz, 2Gb DDR2, Radeon HD4830]

Всего записей: 782 | Зарегистр. 28-04-2005 | Отправлено: 03:34 06-04-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru