Имя: Пароль:
1C
 
Загрузка картинок из Экселя. Как?
0 J_Silver
 
19.03.09
23:31
Собственно сабж. Платформа 8.1.9
1 Новичок
 
19.03.09
23:37
(0) сто раз уже было...
Нужно поставить 4-й или 6-й парсер, а на итс 3-й
2 J_Silver
 
22.03.09
18:54
(1)Извиняюсь, но что то в поиске не нашел. Если можно поподробнее. Повторюсь, интересует именно загрузка картинок. Буду очень благодарен за ссылки.
3 prorokk
 
22.03.09
20:11
(0) Инфы по теме маловато...

http://www.gotdotnet.ru/Forums/Data/104311.aspx

Хоть и не про 1с... Но есть с чего начать)))
Удачи Друг...)))
4 prorokk
 
22.03.09
20:21
Проще сохраните этот документ как веб-страницу.
Все рисунки будут в папке "имя_страницы.files"  но вот как их прицепить к Строчке? х.з. Они ведь не в ячейку вставлены а просто "Координаты"...(((
5 prorokk
 
22.03.09
20:33
(1) а ты Вообще про что?
6 prorokk
 
22.03.09
22:30
и чего молим все?
7 prorokk
 
22.03.09
22:31
молчим)))
8 J_Silver
 
22.03.09
22:34
Нашел такой код

MyPath = "C:\1.xls";
MyList = "Лист1";
myOlApp = Новый COMОбъект ("excel.Application");
MyWo= myOlApp.Workbooks.Open(MyPath, , True);
MySheet=MyWo.Worksheets(MyList);
Для Каждого  MyPic Из MySheet.Pictures Цикл
MyShape=MySheet.Shapes(MyPic.Name);    
MyShape.CopyPicture();
Сообщить(Строка(MyPic.Name)+"  " + Строка(MyPic.BottomRightCell.Column) + "  " +Строка(MyPic.BottomRightCell.Row));    
КонецЦикла;
MyWo.Close(False);
9 J_Silver
 
22.03.09
22:35
Но как вытащить тип "Картинка". Непонятно...
10 prorokk
 
22.03.09
22:38
(8) а где нашел Ссылочку не дашь?
11 prorokk
 
22.03.09
22:42
(10) нашел)))
12 J_Silver
 
22.03.09
23:54
что толку. Как картинку получить то? У меня несколько вариантов. Либо как то копать через com объекты, либо как то по хитрому сохранить в файл. Может средствами потокового ввода-вывода... А может я уже загонять начинаю...
13 J_Silver
 
23.03.09
09:59
14 manyak
 
23.03.09
10:14
сохраняй в каталогвременных файлов - потом из него в 1с грузи
15 J_Silver
 
25.03.09
13:03
(14) Спасиб. Эт я догадался. Вопрос в том как средствами 1С сохранить картинку из экселя в файл. (Через буфер обмена у меня не получается)
16 J_Silver
 
25.03.09
22:12
17 H A D G E H O G s
 
25.03.09
22:14
Бери из Буфера напрямую.
18 H A D G E H O G s
 
25.03.09
22:17
В Нетленке это реализовано ©
Только по отзывам одного товарища, там когда больше 14 картинок - гляки какие-то.
Я этого смоделировать не смог :-(
19 viktorovichvadim
 
25.03.09
23:01
тебе поможет cClipBoardObject.dll. Однозначно
20 J_Silver
 
26.03.09
19:33
(17)Не помогает! Пробовал Нетленку.
Когда копирую/вставляю - пишет "В буфере нет картинки".
Тип того, что в буфере - не картинка. Именно потому, что копирую из экселя.
Пробовал скопировать из Экселя, втавить в Paint, тут же скопировать из paint в буфер и загрузить из него в 1С - все работает. Но напрямую - никак...
21 J_Silver
 
27.03.09
22:37
22 Ужас бухгалтера
 
27.03.09
23:11
(21) Можно Йокселем загрузить документ из Excel, а потом использовать метод ИзвлечьКартинки:
http://yoksel.net.ru/ComServer/Ob%27ekty/TablichnyjjDokument/ExtractPictures

Все внедренные картинки сохраняются в указанный каталог. Но, естественно, не остается никаких сведений об их расположении в документе.
23 Ужас бухгалтера
 
27.03.09
23:21
Хе, похоже, решение есть. Йокселем не извлекаем картинки, а сохраняем лист Excel в формате 1С 7.7. Далее открываем этот файл через штатный объект "ТабличныйДокумент" и через свойство "Рисунки" вытаскиваем все, что нужно. Там для каждой картинки есть ее координаты плюс есть возможность получить из нее стандартный объект "Картинка".
24 Ужас бухгалтера
 
27.03.09
23:27
Хм, хотя нет... Координаты у картинки совсем бесполезные... :((
25 J_Silver
 
31.03.09
13:27
Подсказали макрос, сохраняющий выделенную картинку в файл
Sub inFail()
Dim str As String, strFiNa As String, strShNa As String, lH As Long, lW As Long
Dim SStime As Long
   str = ActiveSheet.Name
   If TypeName(Selection) = "Picture" Then
       strFiNa = Application.GetSaveAsFilename(InitialFileName:="NewPicture", FileFilter:="GIF файл,*.gif,JPG файл,*.jpg")
       If strFiNa = "False" Then Exit Sub
       lH = Selection.Height
       lW = Selection.Width
       Selection.Copy
       Charts.Add
       ActiveChart.Location Where:=xlLocationAsObject, Name:=str
       strShNa = ActiveChart.Name
       strShNa = Trim(Replace(strShNa, str, vbNullString))
       ActiveSheet.Shapes(strShNa).Height = lH * 1.01
       ActiveSheet.Shapes(strShNa).Width = lW * 1.01
       DoEvents
       ActiveChart.Paste
       ActiveChart.Export Filename:=strFiNa, FilterName:=Right(strFiNa, 3)
       ActiveSheet.Shapes(strShNa).Delete
   End If
End Sub
(Спасибо, Г.Т.)


Слышал, что у Excel.aplication есть какой то метод Run() или что-то такое, который выполняет определенный макрос. Соответственно, если в качестве параметра макросу передавать по очереди каждую картинку (допустим координаты), он ее во временный файл, а из него в 1С. Тк код сохранения в файл уже есть, надо только присобачить к нему параметр, для передачи  картинки и разобраться, как его запускать под 1С. К сожалению "знания VBA" = 0. Очень надеюсь на Ваши подсказки.
26 viktorovichvadim
 
02.04.09
17:48
сказано же тебе, тебе поможет cClipBoardObject.dll. если хочешь мучиться дальше -вперед. загугли cClipBoardObject.dll и будет тебе счастье
27 J_Silver
 
03.04.09
13:49
(26) Загуглил. Гуглил долго и мучительно. Нашел.:)))
На выходных опробую. Спасибо за наводку.
28 J_Silver
 
05.04.09
23:25
(26)Блин. Устал от поисков.
Насколько я понял, этот файл входит в состав дополнения к QTP, называемого QT Plus. Из тех ссылок, что я нашел, говорится, что он должен быть в комплекте к основной поставке. Я уже перекачал на сайте НР все возможные версии и дополнения к ним. Там этого файла нет. Ссылок на упоминаемый "сайт mercury" не смог найти. Хотя и упоминается, что они должны быть.
Может руки не оттуда растут, но если кто поможет найти ClipBoardObject.dll - буду черезвычайно счастлив. Потому КАК использовать его - понятно.
29 Ужас бухгалтера
 
05.04.09
23:46
(28) Если не сложно, опиши, как должна решаться твоя задача в "идеальном" виде. Т.е. как должно выглядеть средство, решающее твою задачу.
30 J_Silver
 
06.04.09
00:25
Все. Нашел. http://infostart.ru/projects/2950/
Решение в идеальном виде.
В (28) сплошной гон. Я гуглил "ClipBoardObject.dll" , а оно "cClipBoardObject.dll".
Позволяет принимает картинки, скопированные из Экселя в буфер.
(Кстати если копировать не из него, а из paint - не работает)
Viktorovich'у респект.
Закон Брукера: Даже маленькая практика стоит большой теории.