|
"Вытащить" картинку с Shape (Word, VBA - есть знатоки?) | ☑ | ||
---|---|---|---|---|
0
e2e4
21.07.15
✎
21:40
|
Да знаю, что не про 1С - но может, кто по VBA тут хорошо шарит?)) а то как-то уныло на других форумах после мисты - задаешь вопрос и как в гробу; а тут, даже если никто не знает что сказать - так хоть морально поддержат, ну или постебаются дружно)))
Короче, у меня в документе много раз фигачится прямоугольник и заполняется картинкой: Код Visual Basic ActiveDocument.Shapes.AddShape(msoShapeRectangle, блабла).Select Selection.ShapeRange.Fill.UserPicture путь_к_картинке Потом эти картинки могут вручную смениться пользователем (через Формат автофигуры - Способы заливки - Рисунок); в конце концов мне надо посчитать, сколько раз каждая картинка встретилась в документе. Запускаю Sub Посчитать() Dim sh As Shape For Each sh In ActiveDocument.Shapes sh.Select Next End Sub смотрю в дебаггере и вижу, что sh.Fill.TextureName - <Application-defined or object-defined error>...Почему..??? Или вообще каким-то другим свойством надо воспользоваться? (Раскладчик керамической плитки творю, есличо:)) |
|||
1
Garykom
гуру
21.07.15
✎
21:44
|
(0) делать сразу в 1С и не вы...ся не предлагать?
|
|||
2
Garykom
гуру
21.07.15
✎
21:44
|
(1)+ потом экспорт в файлу Word'у если нуна
|
|||
3
Garykom
гуру
21.07.15
✎
21:46
|
||||
4
e2e4
21.07.15
✎
21:47
|
(1) вооот...я ж говорю - тут человека в беде не бросают))
Чем меня привлекли шейпы в Ворде -- ЛЮБОЙ пользователь ворда сможет вручную сделать с ними что захочет. То есть, поскольку раскладка плитки не формализуемый заранее на 100% процесс, то надо брать инструмент, позволяющий конечному пользователю в перспективе все, что угодно... |
|||
5
Garykom
гуру
21.07.15
✎
21:48
|
(3)+ попробовать добавить проверку
If sh.Fill.TextureType = msoTexturePreset Then sh.Fill.PresetTexture... Else sh.Fill.TextureName... End If |
|||
6
e2e4
21.07.15
✎
21:48
|
(5) дак я к этому и пришел - см. (0):
в дебаггере вижу, что sh.Fill.TextureName - <Application-defined or object-defined error>... |
|||
7
Garykom
гуру
21.07.15
✎
21:50
|
(4) ну да только если сразу в 1С сделать то оно автоматом кол-во нужных плиток подсчитает... с ценой за это извращение :)
(6) а чему равно в отладчике "sh.Fill.TextureType" ? |
|||
8
e2e4
21.07.15
✎
21:53
|
(7) msoTextureUserDefined
|
|||
9
Garykom
гуру
21.07.15
✎
21:54
|
(8) тогда галюны какие то...
|
|||
10
e2e4
21.07.15
✎
21:54
|
||||
11
Garykom
гуру
21.07.15
✎
21:57
|
(10) "PresetTextured" бери и юзай https://msdn.microsoft.com/en-us/library/office/aa172751(v=office.11).aspx
|
|||
12
e2e4
21.07.15
✎
21:59
|
(11) ну-кась, счас курну...
|
|||
13
Garykom
гуру
21.07.15
✎
21:59
|
и да picture и texture это немного разные вещи скажем...
|
|||
14
Garykom
гуру
21.07.15
✎
22:01
|
https://msdn.microsoft.com/en-us/library/office/aa209980(v=office.11).aspx
If .TextureType = msoTextureUserDefined Then If .TextureName = "C:\brick.bmp" Then .UserTextured "C:\stone.bmp" End If End If |
|||
15
e2e4
21.07.15
✎
22:07
|
(13) да, совсем разные....
но даже если отвлечься от того, что метод не так, как мне надо заполняет шейп - все равно, TextureName - <Application-defined or object-defined error> https://yadi.sk/i/Ns5gD9SxhztEt (я без проверок, напрямую вкорячил свой рисунок в шейп: .ShapeRange.Fill.UserTextured pic ) |
|||
16
e2e4
21.07.15
✎
22:08
|
(да: у меня 2007-й ворд)
|
|||
17
e2e4
21.07.15
✎
22:11
|
абыдна, в общем...ладно, хоть не буду теперь думать, что вообще не в ту сторону (TextureName) смотрел - не могут же два таких крутых мэна одновременно одинаково заблуждаться!))) =|_| |_|=
|
|||
18
Garykom
гуру
21.07.15
✎
22:12
|
а может туда нужно сначала присвоить? это "TextureName" = "" ?
|
|||
19
e2e4
21.07.15
✎
22:14
|
(18) Read-only String.
И к тому же - как юзер, пользуясь штатными методами редактирования, сделал бы такой финт?) |
|||
20
e2e4
21.07.15
✎
22:16
|
+(19) сам замысел такой: сделать 60-80% работы на автомате, потом человек доделывает нюансы, потом жмет Посчитать - и с учетом всех его изменений выдается кол-во всех разных плиток (==картинок)
|
|||
21
Garykom
гуру
21.07.15
✎
22:17
|
(20) моя бы в 1С делать... или вообще веб сервис...
у нас к примеру ворда не везде |
|||
22
e2e4
21.07.15
✎
22:25
|
(21) тогда сразу же вопрос: пользователь захочет подвигать автоматически вкоряченные плитки, заранее не предсказуемым образом. Порезать их. Как 1С это позволит?
Конечно, просто нарисовать MxN заданных плиток не проблема... |
|||
23
e2e4
21.07.15
✎
22:26
|
похоже, это свойство вообще только для PowerPoint работает нормально:
"What if your client wants a custom texture? Not to worry, PowerPoint provides a UserTextured method. This method takes one parameter, which is the fully qualified filename of a picture file to tile across the background. This filename is stored in the TextureName property (read-only). The TextureType property indicates which kind of texture is in use. The TextureType property returns msoTexturePreset (1) or msoTextureUserDefined (2)." http://portal.dfpug.de/dfpug/Dokumente/Partner/Hentzenwerke/Microsoft%20Office%20Automation%20with%20Visual%20FoxPro%20Chapter%2011.pdf |
|||
24
Garykom
гуру
21.07.15
✎
22:35
|
(22) как бы не проблема двигать то... на том же ТабДок'е картинки
(23) MSO и VBA, 2 больших г... |
|||
25
e2e4
21.07.15
✎
22:37
|
(24) (22) а может, и так...особо не задумывался, что 1С может дать нормальный редактор. Надо глянуть.
|
|||
26
Garykom
гуру
22.07.15
✎
00:02
|
(25) без опыта и знаний по возможностям "платформы 1с" тяжко это
на vba намного проще лабать, хотя и такие студенческие поделки в результате выходят которые совсем "не юзер френдли" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |