Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Вывод таблицы с данными по координатам, Вывод таблицы с данными по координатам
 
Извиняюсь, присылал не эксель а только код. Вот сам файл.
Вывод таблицы с данными по координатам, Вывод таблицы с данными по координатам
 
Здравствуйте.
Я не программист, но есть вопрос. У меня есть макросв excel, его задача взять данные из таблицы в excel и перенести их в шаблон word. Проблема в том, что если данных на одну страницу, то всё нормально, Таблица рисуется в Word по заданным координатам. А вот если данных в excel на две страницы, то в шаблоне word на первой странице таблица с данными рисуется по заданным координатам, а на второй и следующих страницах я задать координаты вывода таблицы с данными не могу.
Как задавать координаты вывода таблицы с данными в шабоне word на второй и прочих страницах?
Файлы макроса приложил
Медленная работа в microsoft excel 2010
 
Здравствуйте AndreTM
Вы оказались правы, действительно 2010 эксель создавал объект в 2007 ворде, поэтому и рисовалось быстрее. По поводу попробовать написать макрос в ворде - это я подумаю.
Но мне так и не понятно, почему в 2007 ворде рисуется быстрее,  чем 2010 или тут такое абстрактное объяснение типа потому что 2010 ворд.
Может кто знает, что изменилось в 2010 ворде или надо забыть и плюнуть на попытку найти причину?
Медленная работа в microsoft excel 2010
 
Я вот так понимаю проблему.
Когда я устанавливаю 2007 эксель в довесок к 2010, он какие-то свои библиотеки или ещё что-то устанавливает. И эксель 2010 этим пользуется и тогда макрос выполняется быстро.
Вот меня и интересует что это такое эксель 2007 делает, что ускоряет работу.
Вопрос на форуме я и задаю, может кто знает, что такое делают версии экселя ниже 2010, что заставляет макрос ускорятся не только в версиях ниже, но и в версии 2010?
Медленная работа в microsoft excel 2010
 
Антон
Печать из экселя не получится, так как рамки имеют строгий стандарт по размерам, а эксель не приспособлен к рисованию рамок и штампов по госту.(это мне объяснили на этом же форуме), поэтому я и делаю в экселе.
Понятно что можно что-то ускорить переписав код, но у меня вопрос состоит в следующем.  
Почему на компьютерах где установлен только эксель 2010 рисуется пять страниц около 5 часов, но если на этот же комп поставить 2007 эксель, то тотже самый макрос в 2010 экселе (ничего не меняю, ничего кроме экселя 2007 не устанавливаю, не меняю не одной настройки в винде и эксела) рисуется за 15 минут.
Почему макрос в версиях более низкой версии работает быстрее, чем в 2010 и начинает работать быстро в 2010, если на компьютер установить дополнительно версию ниже (2003,2007)?
Медленная работа в microsoft excel 2010
 
Здравсвуйте Антон.
1) По поводу буффера обмена ничего не скажу. Просто непонятно почему добавив только версию ниже, макрос начинает нормально работать.
2) Макрос наверняка написан нерационально с точки зрения программирования, но по другому не смог.
3) Нет я его не закрываю и не открываю постоянно
4) Может и куча настроек, но после того как я поставил 2007, то всё заработало нормально.
5) Когда я писал макрос то у меня стояли все эксели и макрос во всех работал быстро. Потом я решил его испробовать на другом компьютере, на котором был изначально установлен только эксель 2010.(другие версии экселя не устанавливались). И на этом компьютере макрос показал свою тормозную работу.  Когда я на этот комп поставил дополнительно эксель 2007, то макрос стал работать быстро и в 2007 и в 2010.
6) Идея написать макрос в ворд была, но мне надо переносить данные из экселя, поэтому писал в экселе.( Идея шаблона присутствовала, наверное позже я её реализую, но сейчас пока так.)

P.S. Таблиц будет потом много, а руками копировать напрягает
Изменено: Slaventy - 13.01.2014 12:30:28
Медленная работа в microsoft excel 2010
 
Здравствуйте
Столкнулся с такой проблемой. Написал макрос в экселе, который создаёт документ ворд, и переносит данные из таблицы эксель в документ ворд и при этом рисует таблицу в ворде. И в эту таблицу вставляет данные. Писал макрос в 2003 экселе и заполнение 5 страниц занимало около 15 минут. Когда попробовал этот макрос в 2007, время построения не изменилось. А вот когда попробывал в 2010, то всё сразу затормозило и на эти же 5 страниц надо около 5 часов. (пробывал макрос на новом компе, на котором установлен был только 2010 и другие версии не устанавливались)  После того как я поставил на комп 2007 эксель, то на построение стало тратится снова 15 минут. Причём как в 2007 экселе, так и в 2010.
Скажите в чём может быть причина и как сделать так, чтобы не устанавливая эксели более старые (2003, 2007) макрос работал быстрее в 2010?
Как макросом из excel перейти на 2 стр. Word
 
Спасибо. Буду искать решение.
Как макросом из excel перейти на 2 стр. Word
 
Вручную я просто нажимаю Enter. Я так понимаю мне предлагают просто добавить пустой параграф.
Код
objDoc.Activate  
objWord.Selection.TypeParagraph 
Если я прав то пожалуйста скажите мне.
И ещё вопрос.
И ещё небольшой вопрос. (я конечно ещё по форуму посмотрю, но если не трудно будет подсказать, буду благодарен)

я добавляю таблицу
Код
    For i = 1 To 11

     objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(2), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(3), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
     objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(5), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(4), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
     objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(9), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(6), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
     objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(15), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(2), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
    Next i 
Вот вычитал
Код
' Перемещаемся в конец Word-документа 
objDoc.Activate 
objWord.Selection.EndKey Unit:=6 ' 6 = wdStory 
 
Но у меня почему-то не переходит на конец таблицы. И когда я добавляю параграфы, то идёт и смещение таблицы.
Как перейти на конец таблицы, чтобы добавляя параграфы не смещать её?
Как макросом из excel перейти на 2 стр. Word
 
Антон вашим способом не получается.
Я так понимаю функция GoTo может перейти на уже существующие страницы, а у меня существует только одна страница и мне каким-то образом надо её создать и потом перейти.
Либо ещё как-то это сделать.

Я создал документ ворд
Код
    Dim objWord As Object
    On Error Resume Next
    Application.ScreenUpdating = False
    Set objWord = GetObject(, "Word.Application")
    If Err Then Set objWord = CreateObject("Word.Application")

    Set objDoc = objWord.Documents.Add()
    objDoc.ActiveWindow.ActivePane.View.Zoom.Percentage = 100
 
    With objDoc
        .PageSetup.PaperSize = 8   '
        .PageSetup.Orientation = 1 '
        .Parent.Visible = True
    End With
 

вывел десять строк
Код
    For i = 1 To 11

        objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(2), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(3), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
        objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(5), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(4), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
        objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(9), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(6), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
        objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(15), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(2), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
    Next i
 
А теперь мне надо перейти на вторую страницу и там вывести следующие 10 строк.

Вопрос. Как перейти на вторую страницу документа ворд, если из макроса экселя создался документ имеющий одну страницу?
Как макросом из excel перейти на 2 стр. Word
 
Здравствуйте
Возникла проблема. Я копирую таблицу из excel в Word. Так как у меня в Excel большая таблица, то мне надо в Word копировать таблицы по 10 строчек на страницу. Я на первую страницу могу скопировать, но как перейти на вторую и начать там делать не знаю. Мне кажется где-то на форуме я встречал что-то подобное, но никак не могу найти.
Я вначале думал строкой
Код
   objDoc.Application.Visible = True
   objDoc.Selection.MoveDown Unit = 5, count = 5 
Но не получилось. Я могу перейти в конец документа, но перейди на вторую не получилось
Подскажите как переходить на вторую страницу в Word?

P.S. (приложил файл моего кода, если кому-то надо глянуть на код, того что я делаю)
Внутренние поля TextBox
 
Спасибо.
Понял.
Внутренние поля TextBox
 
Спасибо большое.
Оказалось дел на 1 секунду.
И хотел на будущее спросить ввиду моей неграмотности про
Цитата
P. S. На будущее, не забываем объявлять кросс.
Что имелось ввиду?
Внутренние поля TextBox
 
Здравствуйте
Вопрос покажется кому-то простым, но накрыл ступор.
Из эксела переношу данные в ворд. Там рисую TextBox
Код
    With objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(2), Application.CentimetersToPoints(0.5), Application.CentimetersToPoints(2), Application.CentimetersToPoints(0.5)).TextFrame
        .TextRange.Text = "Test"
        .TextRange.Font.Size = 12
    End With
Но вот вопрос. Текст выводится, но мешают "внутренние поля"[img]d:\1111.png[/img] .
Картинка в приложенном файле.

Помогите установить поля в ноль или выровнять текст по рамке.
(какое это свойство)
Изменено: Slaventy - 19.12.2013 15:41:10
Как "разметка страниц" подогнать под формат А4, Надо распечатать прямоугольник 287 мм на 200 мм, а он не соответствует "разметке страниц"
 
Вопрос-то всё равно остаётся. Если я применю
Код
Selection.ShapeRange.Item("lllqqq").Top = ActiveSheet.[a1].Top
Selection.ShapeRange.Item("lllqqq").Left = ActiveSheet.[a1].Left 
Это я начну рисовать из левого верхнего угла, но это я разобрался. Я сам там отступ ставил.
Но вот проблема, прямоугольник 297мм на 210 мм, но когда я смотрю на него в "разметке страниц" я вижу что он выходит за поля печати и в предварительном просмотре получается две страницы и там явно видно что прямоугольник размер имеет больше чем 297х210.
В свойствах прямоугольника указан размер 297х210, и если я увеличиваю высоту на 1,08 то тогда тоже прямоугольник вылазит и по оси X за пределы и по оси Y за пределы
С коэффициентами конечно интересно, надо будет попробовать. Но тогда, может кто скажет этот коэффициент или он для каждого компа индивидуален? (индивидуальные коэффициенты не подходят - это плохой вариант)

Поэтому вопрос остаётся.
1. Как прямоугольник размера 297x210 вписать в один лист А4.? (можно прямоугольник 295x208 - должна получиться рамка с отступом в 2 мм или с одной стороны в 4 мм)
2. По какой формуле подбирается размер в эксель и в предварительном просмотре?
Как "разметка страниц" подогнать под формат А4, Надо распечатать прямоугольник 287 мм на 200 мм, а он не соответствует "разметке страниц"
 
Спасибо за ответSergei_A , но почитав форум я немного подправил свой вопрос.  На форуме пишут что есть такая проблема и от разрешения это не зависит.  Но ещё раз спасибо.
Как "разметка страниц" подогнать под формат А4, Надо распечатать прямоугольник 287 мм на 200 мм, а он не соответствует "разметке страниц"
 
Здравствуйте.
У меня эта тема возникла из темы "Автофигуры- линия-длинна, Не могу разобраться как задать длину лиинии"
Я научился задавать в см линии, но когда начал печатать рамку для чертёжного листа А4, то возникла проблема.
Приложил файл  пример.

Опишу проблему.
Я установил поля
Код
With Worksheets(NameActivList).PageSetup 
.LeftMargin = Application.InchesToPoints(0) 
.RightMargin = Application.InchesToPoints(0) 
.TopMargin = Application.InchesToPoints(0) 
.BottomMargin = Application.InchesToPoints(0) 
.HeaderMargin = Application.InchesToPoints(0) 
.FooterMargin = Application.InchesToPoints(0) 
End With 
Но когда нарисовал прямоугольник 297 на 210
Код
Worksheets(NameActivList).Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(0.5), Application.CentimetersToPoints(0.5), Application.CentimetersToPoints(2), Application.CentimetersToPoints(5)).Name = "lllqqq" '.TextFrame.Characters.Text = "Test Box111111"
Worksheets(NameActivList).Shapes("lllqqq").Select
Selection.ShapeRange.Item("lllqqq").Fill.Transparency = 1#
Selection.ShapeRange.Item("lllqqq").Height = Application.CentimetersToPoints(29.7)
Selection.ShapeRange.Item("lllqqq").Width = Application.CentimetersToPoints(21)

он почему-то не вписывается в границы печати, причём если по оси Y область печати больше примерно на 1.1 см, то по оси X область печати
меньше на 2.5 см. Я понимаю что за счёт изменения ширины последнего столбца можно область печати увеличить, но не на много, всё равно
прямоугольник будет больше. Если я область печати возьму по нарисованному прямоугольнику, тогда размеры изменятся и если в экселе это
будет рамка по госту (все размеры совпадут), то вписав в область печати, госты у рамки измениться и она будет меньше, а это уже не подходит.
(я специально взял прямоугольник по формату А4) (принтер по умолчанию doPDF v7 - печать в файл pdf)
Читаю форум, такие темы попадаются. Там пишут про квадраты в основном, а у меня прямоугольник. Поэтому и интересуюсь.
1.  Написано высота строки  = ширина столбца * 1,08 ,  а как перенести это на автофигуры?
Изменено: Slaventy - 15.12.2013 17:07:18
Автофигуры- линия-длинна, Не могу разобраться как задать длину лиинии
 
Спасибо за помощь, но только мне пришлось использовать функцию CentimetersToPoints(X) для перевода сантиметров в точки. Но вот возник ещё один вопрос.
Как я писал выше -  устанавливаю

Код
With Worksheets(NameActivList).PageSetup 
.LeftMargin = Application.InchesToPoints(0) 
.RightMargin = Application.InchesToPoints(0) 
.TopMargin = Application.InchesToPoints(0) 
.BottomMargin = Application.InchesToPoints(0) 
.HeaderMargin = Application.InchesToPoints(0) 
.FooterMargin = Application.InchesToPoints(0) 
End With 
 
Но нарисовав прямоугольник размерами 297x210 он почему-то не вписывается в границы печати, причём если по оси Y область печати больше примерно на 1.1 см, то по оси X область печати меньше на 2.5 см. Я понимаю что за счёт изменения ширины последнего столбца можно область печати увеличить, но не на много, всё равно прямоугольник будет больше.   Если я область печати возьму по нарисованному прямоугольнику, тогда размеры изменятся и если в экселе это будет рамка по госту (все размеры совпадут), то вписав в область печати, госты у рамки измениться и она будет меньше, а это уже не подходит.
Скажите почему область для печати отличается от размеров нарисованных объектов? (я специально взял прямоугольник по формату А4)
(принтер по умолчанию doPDF v7 - печать в файл pdf)
Автофигуры- линия-длинна, Не могу разобраться как задать длину лиинии
 
Спасибо. Но проблема в том, что расчёты ведутся в экселе и каждый раз руками приделывать штамп - это я думаю проблема. Если бы это надо было сделать один раз, то это конечно. Но учитывая, что это надо делать достаточно часто, то возникает проблема ручного прикручивания штампов. Поэтому и хочется набрать таблицу, нажал кнопку и она тебе сформировала страницу в экселе с рамками и штампами. Следовательно штампы и рамки из других программ это тупиковый вариант. Тем более количество строк и столбцов может быть разное и иногда получается по несколько  страниц. Иногда приходиться удалять лишнии строки. Надоело каждый раз в ручную всё это делать. Возникла идея автоматизировать. Упёрся в проблему.
Вопрос остаётся тот же. Как нарисовать линию по оси X определённой длинны в см или мм?

Спасибо за ВедомостьПокупныхИзделий.xls но это не подходит. Сейчас примерно такой же файл существует.  
Автофигуры- линия-длинна, Не могу разобраться как задать длину лиинии
 
Большое спасибо за пример текстбокса, но всё равно нужна линия, так как ещё нужно нарисовать рамку по 5 мм от стороны листа и тут текстбексом не отделаешься. Поэтому и требуется линия. А делать рамку из текстбоксов конечно выгоднее, так как текст писать внутри всё равно надо, но чтобы нарисовать рамку, приходиться прибегать к линиям. Текстбокс формата А4 скорее всего закроет все ячейки собой и данные не будет видно.
Поэтому вопрос всё таки остался.
Как нарисовать линию определённой длинны по оси X в мм или см?
Автофигуры- линия-длинна, Не могу разобраться как задать длину лиинии
 
Прошу поподробнее, как записать в сантиметрах длину линии по оси x. через рекордер. Можно хотябы грубый пример

Текстбоксы не подойжут наверное, точнее можно, но это как ещё один вариант создание. Но он мне кажется более трудоёмкм. Получается я всю рамку должен  сделать из текстбоксов. Я подумаю над этим вариантом.
Автофигуры- линия-длинна, Не могу разобраться как задать длину лиинии
 
Помогите, наведите на путь истинный. Я уже по моему кучу форумов перечитал, но так понимания и нет. Мне надо написать макрос, который строит ЕСКД штамп. Читаю кучу форумов, многие делают через длину  и ширину ячеек, но так как я могу уплотнять или расширять ячейки, то решил делать рамку через автофигуры, чтобы просто накладывать. Но вот как это сделать не пойму..
Я установил поля в 0

With Worksheets(NameActivList).PageSetup
   .LeftMargin = Application.InchesToPoints(0)
   .RightMargin = Application.InchesToPoints(0)
   .TopMargin = Application.InchesToPoints(0)
   .BottomMargin = Application.InchesToPoints(0)
   .HeaderMargin = Application.InchesToPoints(0)
   .FooterMargin = Application.InchesToPoints(0)
End With


потом рисую линии, но вот тут-то и возникает главная ошибка.
Вертикальные линии вроде понятно
Worksheets(NameActivList).Shapes.AddLine(10, Application.CentimetersToPoints(1.5), 10, Application.CentimetersToPoints(5.5)).Name = "stampgorizont1"
Я так понимаю это линия по вертикали будет 4 см и Excel говорит, что 4 см, но вот по оси X я немного не понимаю как считать.
В форумах пишут что всё зависит от разрешения экрана, но как привязать к расчётам я не понимаю Подскажите пожалуйста как рассчитывается X в миллиметрах или сантиметрах. Как увязать с разрешением. Или дайте те форумы где описано, я тогда задам корректирующие вопросы..
Страницы: 1
Loading...