Форум программистов, компьютерный форум, киберфорум
CorelDRAW
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
8 / 3 / 0
Регистрация: 16.09.2014
Сообщений: 210
1

Координаты и размеры объектов в Clipboard

01.02.2020, 17:51. Просмотров 1030. Ответов 6
Метки нет (Все метки)

Привет всем!
Как можно макросом "вытащить" и "запихнуть" в Clipboard:
1) Круги: координаты центров и соответствующие радиусы/диаметры,
2) Прямоугольники/квадраты: координаты центров и размеры, или координаты вершин

цель - передать эту инфу в существующий Excel-макрос

Заранее благодарен!

Добавлено через 4 часа 10 минут
Вот, посидел час-два, накропал такое:
Visual Basic
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
Option Explicit
Dim shs As Shapes, sh As Shape
Dim ShapeWidth As Double, ShapeHeight As Double
Dim posX As Double, posY As Double
Dim Строка As String
 
Private Sub Form_Load()
 
ActiveDocument.Unit = cdrMillimeter
ActiveDocument.ReferencePoint = cdrBottomLeft
 
 
Set shs = Page.Shapes
 
Строка = ""
For Each sh In shs
    If sh.Type = cdrEllipseShape Then ' если Ellipse
       sh.GetBoundingBox posX, posY, ShapeWidth, ShapeHeight, False  ' получаем инфу об объекте
       If ShapeWidth = ShapeHeight Then Строка = Строка & "'" & posX & "'" & posY & "'" & ShapeWidth & "'" & ShapeHeight 'если круг (не эллипс)
    End If
Next sh
 
Строка = Right(Строка, Len(Строка) - 1) 'убираем первый знак - '
 
'Помещаем в Clipboard
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText Строка
.PutInClipboard
End With
 
End Sub
вроде работает, щас буду досконально каждую цифру результата проверять.
Может кто укажет на ошибки и/или корявость?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2020, 17:51
Ответы с готовыми решениями:

Класс Clipboard - ошибка «Requested Clipboard operation did not succeed»
Пытаюсь скопировать текст программно таким образом: Clipboard.SetText("something") Вместо...

Координаты и размеры окна
Доброго времени суток, у меня возникла такая проблема. Я написал программу (точнее начал писать) и...

Размеры и координаты modeless диалога
Всем привет! Подскажите пож-ста. Проблема такого рода - открывается modeless...

Ошибка при работе с Clipboard: "Сannot open clipboard. Отказано в доступе."
Хотел написать программу для автоматической замены текста в буфере обмена, но при обращении к...

6
178 / 177 / 30
Регистрация: 11.10.2016
Сообщений: 567
04.02.2020, 17:10 2
проще напрямую в ячейки записать нужную инфу, а Эксель-макросом ее оттуда считать
0
8 / 3 / 0
Регистрация: 16.09.2014
Сообщений: 210
14.02.2020, 11:25  [ТС] 3
shark я очень извиняюсь - уехал в деревню, а когда вернулся - тема уже выветрилась из моей головы, поскольку тот макрос, что я написал работал для меня и я уже не заглядывал на форум.

вы писали"напрямую в ячейки записать" - буду благодарен за пример записи в уже открытую книгу/лист, а то что-то я уже часа полтора не могу разобраться.
0
178 / 177 / 30
Регистрация: 11.10.2016
Сообщений: 567
15.02.2020, 12:16 4
Лучший ответ Сообщение было отмечено giaber как решение

Решение

в общих чертах код должен быть таким:

Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open("c:\book1.xls") 'открываем книгу
Set oSheet = oBook.Worksheets(1) 'первый лист

oSheet.Range("A1").Value = "Любые данные" 'адрес ячейки A1

все три вышеприведенные переменные должны быть объектного типа
1
8 / 3 / 0
Регистрация: 16.09.2014
Сообщений: 210
15.02.2020, 20:54  [ТС] 5
shark спасибо! Но не будете ли вы так добры написать аналогичный пример для уже открытой книги? Понимаю что такие элементарные моменты положено знать самому, но туплю моментами сильно и искать нормально не получилось - несколько часов искал по фразам типа "запись в Excel из стороннего приложения" и тому подобные фразы, но не смог прояснить себе вопрос. Можно даже не пример, а правильно построенную поисковую фразу, по которой в поиске выйдет информация по теме. Заранее благодарен.
0
178 / 177 / 30
Регистрация: 11.10.2016
Сообщений: 567
18.02.2020, 22:16 6
для уже открытой книги вам нужно всего лишь обратиться к нужному листу
Set oSheet = oBook.Worksheets("Лист1")

Вообще, могу посоветовать запустить Excel, там открыть тот же VBA и, как и в Кореловском VBA, можно по F2 посмотреть нужные функции. Та даже встроенный хелп есть с примерами. Я на Экселе не часто программирую, в основном больше по Корелу. Если у вас есть код, который в каком-то месте не работает, то могу подсказать что и как
1
8 / 3 / 0
Регистрация: 16.09.2014
Сообщений: 210
25.02.2020, 08:06  [ТС] 7
Спасибо большое, shark!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2020, 08:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Задать размеры и координаты формы при созданиии
Добрый день. Создаю форму динамически, нужно сделать так что бы она отображалась в определенном...

Как определить видимые размеры/координаты окна
я меняю размеры окна window.resizeTo(wdth,hdth) но это размеры всего окна со всякими toolbar,...

Самопроизвольно меняются размеры связанных объектов
Доброго времени суток! Помогите плиз! Ситуация следующая: в документ вставлены таблицы Excel со...

Как получить точные размеры объектов?
Доброго времени суток! Делаю диплом. Пишу аддон к Blender'у. Есть потребность получить точные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.