Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Получить файлы картинок с названиями в виде кода - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Получить файлы картинок с названиями в виде кода (Формулы/Formulas)
Получить файлы картинок с названиями в виде кода
xavikz Дата: Среда, 09.09.2015, 13:21 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Собственно, дано:
Имеется таблица, с тремя колонками - номенклатура - код - модель ((колонка "номенклатура" по сути, несет чисто информационный характер)
Код в каждый строке уникальный, а вот модель может повторяться много много раз.
Есть так же папка с изображениями, имена которых в точности совпадают с именами в колонке "модель".
Что нужно:
Нужно получить файлы картинок с названиями в виде "кода". Причем, этих файлов станет естественно больше, т.к. уникальных картинок с наименованием моделей меньше.
Я не знаю, каким образом это проще сделать. Может имеет смысл сначала загрузить эти картинки в таблицу и потом вытягивать их построчно, выставляя соответствие со столбцом "Код" и сохраняя таким именем, либо делать это без импорта в эксель - другими методами....
Основная последующая цель:
Перерыл весь интернет в поиске способа импорта изображений из локальной папки в 1с по названию файла для реквизита "модель" - не нашел. Нашел только импорт по коду или артикулу. Но т.к. артикулы есть не у всех, решено было оставить импорт по коду.

Пример исходника и пример результата прикрепляю.
Очень прошу помочь. Рассмотрю любые варианты, предложения и конечно же решения
К сообщению приложен файл: test.zip (58.7 Kb)
 
Ответить
СообщениеСобственно, дано:
Имеется таблица, с тремя колонками - номенклатура - код - модель ((колонка "номенклатура" по сути, несет чисто информационный характер)
Код в каждый строке уникальный, а вот модель может повторяться много много раз.
Есть так же папка с изображениями, имена которых в точности совпадают с именами в колонке "модель".
Что нужно:
Нужно получить файлы картинок с названиями в виде "кода". Причем, этих файлов станет естественно больше, т.к. уникальных картинок с наименованием моделей меньше.
Я не знаю, каким образом это проще сделать. Может имеет смысл сначала загрузить эти картинки в таблицу и потом вытягивать их построчно, выставляя соответствие со столбцом "Код" и сохраняя таким именем, либо делать это без импорта в эксель - другими методами....
Основная последующая цель:
Перерыл весь интернет в поиске способа импорта изображений из локальной папки в 1с по названию файла для реквизита "модель" - не нашел. Нашел только импорт по коду или артикулу. Но т.к. артикулы есть не у всех, решено было оставить импорт по коду.

Пример исходника и пример результата прикрепляю.
Очень прошу помочь. Рассмотрю любые варианты, предложения и конечно же решения

Автор - xavikz
Дата добавления - 09.09.2015 в 13:21
AndreTM Дата: Среда, 09.09.2015, 20:23 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Странно, что вы захотели это сделать именно с помощью Excel... По сути, у вас вся работа - с файловой системой, зачем привлекать лишние приложения? :)
Для решения первой задачи могу предложить просто воспользоваться WSH (а чтобы не отвлекаться от темы - кодом на VBS).
Разверните архив, экспортируйте вашу таблицу из Excel в обычный текстовый CSV-файл под именем "Список.csv" (пример приложен), запустите на исполнение скрипт "Список.vbs"... и наслаждайтесь результатами. Если что поправить в коде - там по сути такой же VBA, параметры (имена каталогов и файлов) вынесены в начало файла.
[vba]
Код
' Credits to AndreTM, 2015

' Credits to EducatedFool
' Код импортированных функций LoadArrayFromTextFile и SaveTXTfile взят с
' http://excelvba.ru/code/TextFile2Array,' http://excelvba.ru/code/txt

Set FSO = CreateObject("scripting.filesystemobject")
cPath = FSO.GetParentFolderName(WScript.ScriptFullName) & "\"

cPathIn = cPath & ".\In\"
cPathOut = cPath & ".\Out\"
cFileData = "Список.csv"

if not FSO.FileExists(cPath & cFileData) then
     msgbox "Нет файла " & cFileData
     wscript.quit
end if
arr = LoadArrayFromTextFile(cPath & cFileData, 2, ";", vbNewLine)
cLog = "Создание набора файлов" & vbCrLf & Date & " " & Time & " Начало работы" & vbCrLf
counter = 0
for i = 1 to ubound(arr, 1)
     cKod = arr(i, 2)
     cModel = arr(i, 3)
     cFileIn = cModel & ".jpg"
     if not FSO.FileExists(cPathIn & cFileIn) then
         cLog = cLog & "rec. " & i & "  " & cFileIn & " - не найден исходный файл" & vbCrLf
     else
         if len(cKod) = 0 then
             cLog = cLog & "rec. " & i & " - нет кода" & vbCrLf
         else
             cFileOut = cKod & ".jpg"
             FSO.CopyFile (cPathIn & cFileIn), (cPathOut & cFileOut), True
             counter = counter + 1
         end if
     end if
next
cLog = cLog & Date & " " & Time & " Завершено: скопировано " & counter
SaveTXTfile (cPath & cFileData) & ".log", cLog

msgbox "Работа завершена, смотрите файл '" &  cFileData & ".log'"
[/vba]

PS Модераторы, перенесите, пожалуйста, тему в раздел "Excel и другие приложения"
К сообщению приложен файл: 2-19149-1.zip (12.7 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Среда, 09.09.2015, 20:43
 
Ответить
СообщениеСтранно, что вы захотели это сделать именно с помощью Excel... По сути, у вас вся работа - с файловой системой, зачем привлекать лишние приложения? :)
Для решения первой задачи могу предложить просто воспользоваться WSH (а чтобы не отвлекаться от темы - кодом на VBS).
Разверните архив, экспортируйте вашу таблицу из Excel в обычный текстовый CSV-файл под именем "Список.csv" (пример приложен), запустите на исполнение скрипт "Список.vbs"... и наслаждайтесь результатами. Если что поправить в коде - там по сути такой же VBA, параметры (имена каталогов и файлов) вынесены в начало файла.
[vba]
Код
' Credits to AndreTM, 2015

' Credits to EducatedFool
' Код импортированных функций LoadArrayFromTextFile и SaveTXTfile взят с
' http://excelvba.ru/code/TextFile2Array,' http://excelvba.ru/code/txt

Set FSO = CreateObject("scripting.filesystemobject")
cPath = FSO.GetParentFolderName(WScript.ScriptFullName) & "\"

cPathIn = cPath & ".\In\"
cPathOut = cPath & ".\Out\"
cFileData = "Список.csv"

if not FSO.FileExists(cPath & cFileData) then
     msgbox "Нет файла " & cFileData
     wscript.quit
end if
arr = LoadArrayFromTextFile(cPath & cFileData, 2, ";", vbNewLine)
cLog = "Создание набора файлов" & vbCrLf & Date & " " & Time & " Начало работы" & vbCrLf
counter = 0
for i = 1 to ubound(arr, 1)
     cKod = arr(i, 2)
     cModel = arr(i, 3)
     cFileIn = cModel & ".jpg"
     if not FSO.FileExists(cPathIn & cFileIn) then
         cLog = cLog & "rec. " & i & "  " & cFileIn & " - не найден исходный файл" & vbCrLf
     else
         if len(cKod) = 0 then
             cLog = cLog & "rec. " & i & " - нет кода" & vbCrLf
         else
             cFileOut = cKod & ".jpg"
             FSO.CopyFile (cPathIn & cFileIn), (cPathOut & cFileOut), True
             counter = counter + 1
         end if
     end if
next
cLog = cLog & Date & " " & Time & " Завершено: скопировано " & counter
SaveTXTfile (cPath & cFileData) & ".log", cLog

msgbox "Работа завершена, смотрите файл '" &  cFileData & ".log'"
[/vba]

PS Модераторы, перенесите, пожалуйста, тему в раздел "Excel и другие приложения"

Автор - AndreTM
Дата добавления - 09.09.2015 в 20:23
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Получить файлы картинок с названиями в виде кода (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!