7.7 Выгрузка прайс-листа в Excel через OLE

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем kserg-2002, 28 окт 2011.

  1. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Пролопачено море информации.
    Стандартная документация Excel дала стандартную инфу.
    Остальное найдено на просторах Интернета.
    Методом научного тыка и затем поиска в сети выяснено, что
    записанный макрос в Экселе переносится в 1С нестандартно, а с заменой многих значений на цифры, в частности, выравние в ячейке.

    Выгружаю прайс-лист через OLE в Excel (2002, Office XP),
    выгружается текстовка и плюс в одном столбце фотография.
    В данный момент выгружаю фото методом
    Код:
    Лист.Cells(НомерСтроки,лНомерСтолбцаПоследнего).Select();
    Лист.Pictures.Insert(ПутьКФото+лКаталогФото+"�"+лИмяФайлаФото).Select();
    
    
    Нужно также в ячейку вставить картинку с отступами со всех сторон от краёв ячейки по пикселу, например, и в рамку саму ячейку.

    В ячейку гиперссылка вставляется, но мне нужно вставить Гиперссылку именно на саму фотографию, чтобы при нажатии на фото открылась на сайте большая фотография.
    Если гиперссылка в ячейке - не удается нажать, т.к. она находится за фотографией. Да и неудобно.

    Второе. Выгружаю в прайс мааааленькую картинку.
    Нужно сделать, чтобы при наведении мыши на картинку появилась картинка побольше.
    То есть, каким образом вставить картинку в комментарий?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Посмотреть код через запись макроса в EXEL не пробовали?
  3. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Как раз и пробовал, вроде, указал в первом посте.
    Код:
    ActiveSheet.Pictures.Insert("Фото.jpg").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:= _
    "ссылка.com"
    
    Не пойму, как вторую строку с гиперссылкой в 1С переделать.
  4. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    В тестовой пустой версии получилось добавить комментарий так:

    Код:
    лЯчейка=Лист.Cells(НомерСтроки,лНомерСтолбцаПоследнего);
    лЯчейка.Select();
    Лист.Pictures.Insert(Фото).Select();
    лЯчейка.AddComment();
    лЯчейка.Comment.Text("Текст");
    лЯчейка.Comment.Shape.Fill.UserPicture(Фото);
    
    Хорошо.
    Картинка методом Insert вставляется в верхний левый край ячейки.
    Каким образом картинку вставить в середину ячейки (у картинки определённые всегда фиксированные размеры), со всех сторон отступы по 2 пиксела сделать от ячейки до картинки?
  5. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Добавлена фотография в ячейку.
    В комментарий вставлена фотография.
    Только поскольку фотография полностью ячейку занимает - комментарий не показывается при наведении мышкой на эту ячейку.
    Как это исправить?

    Код:
    Лист.Pictures.Insert(ПутьКФото+лКаталогФото+"\"+лИмяФайлаФото).Select();
    лТекстСсылки="http://сайт..."+лКаталогФото+"/"+лИмяФайлаФото;
    Лист.Hyperlinks.Add(Лист.Application.Selection.ShapeRange.Item(1),лТекстСсылки,"","","Фото");
    лЯчейка.AddComment();
    лЯчейка.Comment.Text(лКаталогФото+"\"+лИмяФайлаФото);
    лЯчейка.Comment.Shape.Fill.UserPicture(ПутьКФото+лКаталогФото+"\"+лИмяФайлаФото);
    
  6. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Каким образом комментарий к ячейке сделать размером под вставленную в него фотографию?
  7. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    в свойствах примечания есть "Сброс", но в макросе он не отображается:
    видимо, в ручную задавать размер изображения..
    Имхо это неплохо, просто определись какое тебе нужно на всех (60х80) например и лепи всем. Ток пропорции сохраняй (Selection.ShapeRange.LockAspectRatio(-1))
  8. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    фобец, Спасибо!
    Но чего-то у меня этот LockAspectRatio=-1 не срабатывает.
    Код:
    лЯчейка.Comment.Shape.Fill.UserPicture(ПутьКФото+лКаталогФото+"\"+лИмяФайлаФото);
    Лист.Application.Selection.ShapeRange.LockAspectRatio = -1;
    
    Методом проб в самом Excel'е: формат примечания - цвета и линии - цвет - способы заливки - выбираем рисунок и ставим галочку "Сохранять пропорции рисунка" - Ок.
    Затем снова формат примечания - Размер - кнопка Сброс
    Только после этого примечание подгоняется под размер фотографии.
    Пробовал и макрос записать, но "Сохранять пропорции рисунка" - вроде, не записывается.
  9. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Почему-то нельзя отредактировать своё сообщение...

    Получилось добавить и изменить порядок:
    Код:
    лЯчейка.Comment.Shape.Height=100;
    лЯчейка.Comment.Shape.Width =100;
    лЯчейка.Comment.Shape.LockAspectRatio=-1;
    
    
    а если редактировать сообщение сразу, то есть кнопка "Изменить".

    Каким образом сделать отступы вставленной картинки от всех краёв ячейки по 1 пикселу?
  10. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    скорее всего не сделаешь, так как это сам по себе хитрый способ (заливка примечания рисунком)..
  11. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Отступы нужно сделать не в Примечании, а в самой ячейке.
    То есть в ячейку вставляется маааленькая картинка, а в примечание картинка побольше.
  12. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    дык, картинка вроде не к ячейке привязывается, а к листу.. Или тебе удалось вставить ее в ячейку?
  13. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Вставляется в ячейку:
    Код:
    лЯчейка=Лист.Cells(лСтрокаНомер,4+СдвигСтолбца);
    лЯчейка.Select();
    Лист.Pictures.Insert(ПутьКФото+лКаталогФото+"\"+лИмяФайлаФото).Select();
    
    Сдвигается относительно краев ячейки:
    Код:
    лКартинка.Shape.IncrementLeft(0.75);
    лКартинка.Shape.IncrementTop(0.75);
    
  14. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    А каким образом сделать комментарий/примечание над картинкой?
    То есть в ячейку командой Insert вставляю картинку, сдвинул её на 1 пиксел от края ячейки. И вставить примечание, чтобы при наведении мышкой над картинкой/ячейкой - появлялось примечание (картинка покрупнее).
    Если просто Примечание в ячейку вставлять, то картинка расположена над ячейкой - и примечание не выскакивает, т.к. курсор мыши над картинкой расположен, а не над ячейкой.
  15. TopicStarter Overlay
    kserg-2002
    Offline

    kserg-2002

    Регистрация:
    28 окт 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Пытаюсь завершить процесс 1С.
    Прописал ПриЗакрытии - завершение процесса.
    Код:
    Книга.Close();
    Эксель.Quit();
    Эксель="";
    
    Если вручную указывать название файла и желаемый путь сохранения, то файл сохраняется с этим именем по указанному пути.
    Код:
    Fileformat = -4143; //
    Password = ""; //
    Writerespassword = ""; //
    Readonlyrecommended = 0; //
    Createbackup = 0; //
    Эксель.Книга.SaveAs(ПутьКФайлу+ИмяФайла,Fileformat,Password,Writerespassword,Readonlyrecommended,Createbackup);
    
    Как сделать запрос на сохранение файла, чтобы в этом запросе был указан путь (пользователь может его изменить) и имя файла (пользователь может его изменить), и нажать Сохранить, например.
  16. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    ты можешь вообще оставить книгу открытой, как новую
    Код:
    Excel.Visible = 1; 
    Excel.Activate();
    
    
    а так,

    Код:
        ПолноеИмя = ПутьКФайлу+ИмяФайла;
    Если ВвестиСтроку(ПолноеИмя, "Укажите имя сохраняемого файла")<>1 Тогда
    Эксель.Книга.SaveAs(ПутьКФайлу+ИмяФайла,итакдалее);
    Иначе
    Эксель.Книга.SaveAs(ПолноеИмя,итакдалее);
    КонецЕсли;
    
    
    а еще правильнее наверное через ВыбратьФайл() с режимом Сохранение
  17. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Код:
        ФС.ВыбратьФайл(1,ИмяФайла,ПутьКФайлу,"Укажите имя сохраняемого файла","*.xls|*.xlsx"); //вроде должно всегда сохранять, если новое не задали значь по умолчанию сохранит
    Эксель.Книга.SaveAs(ПутьКФайлу+ИмяФайла,итакдалее); 
    
    

Поделиться этой страницей