--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

Спасите, нужен макрос.

FAQ
66
34
С друзьями на NN.RU
В социальных сетях
Поделиться
Всем привет.
Гении, помогите.
Есть файл в корел дроу, есть файл в эксель со столбцом и текстом в каждой ячейке столбца.
Нужно что бы на странице один в корел он вставил текст из первой ячейки в центр листа, создал страницу 2 в кореле, вставил туда текст из второй ячейки в центр листа и т.д.
Esik
10.10.2012
Насколько я знаком с VBA, напрямую он работает только в приложениях от MS.
Угу, а в Кореле, Автокаде и друих приложениях он работает накосую?
Вы макрос лучше напишите, плиз.:)

open c:/1.xls
copy a1
paste sheet1
new sheet
copy a2
paste sheet2
...
end
У меня нет Корела, но попробую.
За работоспособность не ручаюсь, но еду из холодильнка он не съест.

Sub Test()

Dim xlApp As Object
Dim xlSheet As Object
Set xlApp = CreateObject(″Excel.Application″)
xlApp.Visible = True
xlApp.Workbooks.Open ″C:\Book1.xls″, True, False
Set xlSheet = xlApp.Worksheets(1)

Dim t As String
Dim p As Page
Dim sh As Shape

For i = 1 To 65535
t = xlSheet.Cells(i, 1).Value
If t = ″″ Then Exit For
Debug.Print t

Set p = ActiveDocument.AddPages(1)
Set sh = p.ActiveLayer.CreateParagraphText(0, 0, 5, 5, t, Alignment:=cdrCenterAlignment)

Next i

End Sub
хе, неплохо)

я бы посоветовал вместо For i = 1 To 65535 сделать итерацию по UsedRange, очень удобная в екселе штука, когда не знаешь заранее количество заполненных ячеек (а практически никогда и не знаешь)
Не будет оно работать. ХОтя бы потому, что при вызове макроса ActiveDocument == ThisDocument
Вы сейчас про что говорите?
ActiveDocument - текущий кореловский документ.
Про какой ThisDocument вы пытаетесь сказать и что следует из того, что ActiveDocument == ThisDocument ?
ThisDocument в терминах ВБА - это екселевский документ в теле которого лежит выполняемый в данный момент макрос. Что бы запустить макрос, нужно активировать эксель. Иначе макрос, буде он даже привязан к шорткату, не запустить. Поэтому активдокумент - это все что угодно, но не текущий кореловский документ.
Нужно перебирать все Caption у окон, возвращаемых функцией FundWindow или как-то так, пока не будет найдено окно корел дро.
Извините, это бред.
Это макрос для Корел, т.е.макрос лежит в кореловском документе, и для него ActiveDocument = текущий кореловский документ.
Ссылку на справку для Corel VBA тут давали.

Если бы я писал макрос для Excel, то вот этого всего бы не было:
Dim xlApp As Object
Dim xlSheet As Object
Set xlApp = CreateObject(″Excel.Application″)

а было бы просто обращение к Worksheets.
тьфу, блин. я про эксель подумал
А где тут выбор нужного столбца? у меня начиная с b1 идёт
t = xlSheet.Cells(i, 1).Value
Да, не написал, что вышеприведенный макрос надо выполнять в Corel
См. справку как это сделать.

To invoke the Visual Basic Editor from inside CorelDRAW, click Tools - Visual Basic - Visual Basic Editor or press Alt+F11
ну эт понятно, завтра попробую.
Esik
10.10.2012
ХЗ. Усомнился, т.к. не сталкивался с этим.
Теперь буду знать, что он может работать и в программах, где нет VBA.
Или есть? Я лох в графических редакторах.
Esik писал(а)
Теперь буду знать, что он может работать и в программах, где нет VBA.

VBA ему в данном случае не нужен, т.е. макрос может вызвать любую виндовую функцию. Я могу показать, как макросом из VBA управлять MS Paint.
В Corel есть VBA, как и в AutoCAD.
VBA = Visual Basic for Application, что не равно VBMSO - Visual Basic for MS Office =)
Так что тут возможны 2 пути
- создавать VBA макрос в Corel, считывать в нем Excel файл в отдельный объект и делать все, что надо
- создавать VBA макрос в Excel, тогда все данные будут в текущем файле, но нам надо будет создать объект Corel.Application и использовать его методы.

И есть третий путь - искать окно Корела, посылать ему сообщения... но зачем?
Да-да, все верно. Просто знакомство многих людей с корелом закончилось на версии 10 - 11, когда еще никакого вба там и не было. А сейчас да, они здорово продвинулись.
десять лет назад корел предоставлял "наружу" рычажки и веревочки, за которые его можно дергать из, например, excel-я. OLE Automation.

Я какую-то печать этикеток делал вполне успешно)

Счас корела под рукой нету, помочь ТС-у не могу, сорри)

Шпаргалка тут apps.corel.com/partners_developers/csp/resources/dvba_pg.pdf
Спасибо. Но я VB не знаю. Корю себя. Знаю что надо знать его и bash!:((( научил бы кто.
Тихонечко (xeh yjufvb yt ,bnm), так предложу макрос записать в xStarter и вызвать его нанадцать раз. Окошки нужных приложений он на ура ищет, и кнопки сам нажимает и мышь умеет гонять.
*готовится пинать ПМ ногами*
какой разряд?
нулевой, никогда этим профессионально не занимался.
отлично, *приготовил (на всякий случай) свой электрошокер*
)))
кроссректально.
Посмотрю xStarter. Вообще я люблю автоматизаторы, но лучше потом в каждом действие разобраться.
Я сам к xStarter несколько раз подступался. Потом накачал готовых примеров, и только после этого понял, что эта программа может мне заменить кучу других и облегчить жизнь. А саму задачу можно легко потом дополнять новыми фишками.
Ещё прикольная штука: InqSoft Neo Sign 0f Misery 0.9.7 s0m.narod.ru/neos0m.html
полно примеров в поставке и есть встроенный мастер создания скрипта, прикольных вирусов можно насочинять. Компилированные приложения очень небольшие получаются.
avtonal
11.10.2012
Да. Присмотреться внимательнее к InqSoft Neo Sign 0f Misery я тоже советую. Очень интересная програмулька получилась. Мвленькая и сердитая.
Вот только В ЭТОЙ ЗАДАЧЕ БЕЗ СООТВЕТСТВУЮЩЕГО ОПЫТА И ИЗУЧЕНИЯ ПРОГРАММЫ ОНА СОВЕРШЕННО НЕ ЭФФЕКТИВНА.
И ещё я не понимаю, чем может помочь тот же xStarter при нетрадиционном копировании???
Вы уж везде-то подряд эту программу не советуйте!
Она вообще-то интересна только для определённых целей в качестве замены тому же шедулеру. Но она не предназначена для решения подобного рода задач. Увы...!
Её рационально использовать только в связке с какими-то скриптами или программами системного администрироования. Но для этого тоже есть более интересные решения.
Т.к. задача каждую строку из ячеек разместить в новом документе, то я бы сохранил все строки в текстовый файл. Затем задача читает его построчно в буфер обмена, и комбинацией горячих клавиш создаёт новые листы и туда пастит этот буфер. Упоминание про Эксель, просто запутывает пути решения.

В простых случаях, когда отчетливо виден один явно правильный вариант и один явно неправильный, часто разумнее выбрать неправильный, чтобы быстрее приступить к неизбежным исправлениям. (афоризм из законов Мэрфи)
avtonal
11.10.2012
Пал Михалыч!
После знакомства с вами я очень ценю это ваше программное умение выстраивать логику из набора любых имеющихся у вас в мозгу инструментов.
Это очень положительное качество.
И наверное при наличии таких качеств вы могли бы быть неплохим бухгалтером или даже экономистом.
Но... как и в любой другой ярко выраженной профессиональной технологичной направленности, у вас тоже присутствуют пробелы в логике, потому что вы любите опираться на форму, и часто отвлекаетесь от содержания.
Ну скажите... Зачем надо настаивать на вычислениях на калькуляторе, когда технический прогресс уже подарил нам интересные программные компьютерные решения??? ;)

"В простых случаях, когда отчетливо виден один явно правильный вариант и один явно неправильный, часто разумнее выбрать неправильный, чтобы быстрее приступить к неизбежным исправлениям. (афоризм из законов Мэрфи)"

Мэрфи - он может быть конечно и молодец.
Вот только я не понимаю, зачем мы должны замыкаться только на знании закона Мэрфи?! У нас есть масса других законов. И как вы наверное знаете, некоторые из них даже опровергают законы Мэрфи.
Как известно, ни один даже самый правильный Закон не описывает содержание тех или иных процессов. Любой современный закон служит только управлению. Он тоже описывает только форму. То есть сам по себе закон - это, конечно, уже хорошо. Но тупое его применение везде и всюду - это плохо. И это всегда сыграет плохую шутку.
Я о том, что когда кто-то видит только один правильный вариант, и в противовес ему только один неправильный - это уже плохо. И такое видение само по себе уже нуждается в коррекции.
Вот эту коррекцию я и позволил себе выссказать выше.


А что касается самой такой противопостановки одного правильного варианта против одного неправильного, то я в курсе, что это излюбленный приём любых манипуляторов.
Манипуляторы специально кидают в народ эти свои два варианта и смотрят на реакцию. Если народ поддаётся на эту провокацию противопоставления форм, они насчинают действовать дальше, но уже по отношению к содержанию.

Например...
Мы включаем ТВ, и слышим в новостях, как например, господин Удальцов (или даже Немцов) ругают действующую тупую и безнравственную власть. К чему привязаться, они, как сами бывшие участники этой руководящей свары, найдут всегда. И главное для них - просто сфокусировать акцент и натравить на этот акцент народ.
Но... Вслед за господином Удальцовым на экране тут же появляется лицо моего портрета. Нам показываются кадры присутствия Удальцова на приёме в Госдепе США, демонстрируются справки из налоговой, от ГИБДД и других органов, говорящие о том, какой господин Удальцов паразит.
Оно может и действительно всё так и есть.
Вот только само такое яркое заведомо запрограммированное противопоставление плохого и хорошего (каждый при этом сам волен выбирать плохую и хорошую сторону) для масс говорит только о том, что такими яркими противопоставлениями форм нас просто пытаются отвлечь от каких-то глубинных содержательных процессов.
Как это например было прошлой осенью... Когда Навальный с Немцовым водили хороводы по площадям, а господин Медведев в это время тихо подписал указ о дополнительном налогооблажении большого бизнеса.
И этот указ, нацеленный на то, чтобы окончательно добить промышленность в стране, намного более сильно ударил по гражданам страны, чем какие-то глупые фразы, которые эти два лагеря бросали в тот момент друг в друга на тивишных передачах или на площадях.
Треть страны при этом просто потеряли работу и как следствие, жизненные цели.
Вот оно какое страшное содержание-то оказалось...
А люди в это время, уподобившись баранам, продолжали ходить по площадям за обычным подставным козлом Навальным... Технология мясокомбината снова в действии.
Как результат, мы пожинаем сегодня огромную инфляцию.
А могли и можем ещё вообще развалить страну.
Вот оно - неуёмное желание толпы следовать двухбитной логике между хорошим и плохим, которую пропагандируют нынешние манипуляторы, убивающие нашу цивилизацию. А ведь мир вокруг - цветной. И мы все это знаем...
Но это же так заманчиво - обязательно всё представить только в противопоставлении чёрного белому.

К сожалению, мы сегодня живём в обществе именно манипуляторов во главе, и остаться в стороне от соблазна научиться тоже манипулировать сложно. Вот и вы туда же...
Хотя, если бы вы просто задались задачей найти более рациональное и правильное решение - я уверен, вы бы его с вашей логикой нашли бы точно. Но может быть не сразу и не так быстро.
Я ниже предложил только одно из таких решений.
Лучше в мои сообщения так подробно не вчитываться, т.к. их цель просто поддержать разговор, а решение чем воспользоваться примет топикстартер. Мои сообщения просто приближают потихоньку получение мною 7 уровня )))
avtonal
11.10.2012
Не надо эту задачу решать с помощью написания макросов на VBS и подобных.
Это неэффективно.
Достаточно смоделировать этот процесс в автоматизации действий оператора, и просто скормить соответствующей программе объектного макромоделирования.
Всё остальное автоматизируется или через PowerShell или через nnCron, или даже через тот же xStarter.
Всё! задача решена.
Если нужны более полные инструкции, стучитесь. Будем договариваться. И даже помогу всё настроить.
Причём скопировать ячейку и вставить её сможете в любую программу, а не только в Корел.
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем
Последние темы форумов
Форум Тема (Автор) Последний ответ Ответов
Сетевой фильтр APC Surge Arrest

Сетевой фильтр APC Surge Arrest для радиолюбителя.и не только Отправка в регионы после оплаты. ЦЕНА 3000 руб. В рабочем состоянии....
Цена: 3 000 руб.

Материнские платы на запчасти и не только

Материнские платы на запчасти и не только Материнские платы и другие комплектующие Отправка в регионы после оплаты. Транспортной...
Цена: 3 000 руб.

Оперативная память Corsair XMS3 CMX8GX3M2A1600C9

Оперативная память Corsair XMS3 CMX8GX3M2A1600C9 Отправка в регионы после оплаты. Продаются сразу обе. Цена за обе 2000 руб....
Цена: 1 000 руб.

Принтер лазерный HEWLETT PACKARD HP-6L

Принтер лазерный HEWLETT PACKARD HP-6L Отправка в регионы после оплаты. 3штуки БУ. Внешний вид из магазина простояли на складе...
Цена: 4 500 руб.