Загрузите изображения из каталога CSV / XLS

EDIT: Я нашел этот код для загрузки изображений из файла xls. Источник: GET изображения с URL-адреса, а затем переименование изображения

Код:

Option Explicit Private Declare Function URLDownloadToFile Lib "urlmon" _ Alias "URLDownloadToFileA" (ByVal pCaller As Long, _ ByVal szURL As String, ByVal szFileName As String, _ ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long Dim Ret As Long '~~> This is where the images will be saved. Change as applicable Const FolderName As String = "C:\Temp\" Sub Sample() Dim ws As Worksheet Dim LastRow As Long, i As Long Dim strPath As String '~~> Name of the sheet which has the list Set ws = Sheets("Sheet1") LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row For i = 2 To LastRow '<~~ 2 because row 1 has headers strPath = FolderName & ws.Range("A" & i).Value & ".jpg" Ret = URLDownloadToFile(0, ws.Range("B" & i).Value, strPath, 0, 0) If Ret = 0 Then ws.Range("C" & i).Value = "File successfully downloaded" Else ws.Range("C" & i).Value = "Unable to download the file" End If Next i End Sub 

Он отлично работает с файлами xls, где «PIC NAME» и «URL» находятся в двух отдельных столбцах. У меня есть файл csv и, в отличие от xls, csv имеет его значения в одном столбце, разделенном на «|» (PIC NAME | URL). Таким образом, когда я был в кодировке noob, в качестве обходного пути я использовал «Текст для столбцов» в Excel, чтобы разделить строки на два отдельных столбца справа от разделителя «|», таким образом я могу использовать исходный код.

ВОПРОС: есть ли способ заставить код работать с файлом csv? Это позволит значительно быстрее и проще извлекать изображения из больших файлов csv с тысячами строк.

Поскольку VBA обеспечивает автоматизацию для Excel, все, что вы можете сделать вручную, также может быть автоматизировано VBA. В Excel есть встроенный макрокорректор, который автоматически преобразует все действия пользователя в код VBA. В этом ответе объясняется, как это работает: использование Macro-Recorder в Excel

Это можно использовать, чтобы увидеть, какой тип кода VBA генерирует функция Text to columns . Если вы немного очистите код, вы получите команду VBA:

 Selection.TextToColumns Destination:=Range("A1") _ , DataType:=xlDelimited _ , Other:=True _ , OtherChar:="|" 

Убедитесь, что вы заменили Selection на весь диапазон, который вы импортировали в Excel, или вы выбрали весь диапазон перед выполнением кода. Также замените Range("A1") на диапазон, в который вы хотите записать результат.

Следует отметить, однако, что не очень эффективно записывать материал в ячейки excel, чтобы потом разбирать эти ячейки. Более чистым решением вашей проблемы будет чтение загруженного файла по строкам и разбор каждой строки в соответствии с вашими потребностями.

К счастью, для этого уже есть решение: читать строки из текстового файла, но пропускать первые две строки

  • Обнаружить и выбрать изображение в ячейке с помощью VBA
  • Отображение текста на основе координат на изображении с помощью шаблонной системы Django
  • Скопировать изображение в Excel в тело Outlook
  • Экспортный диапазон как изображение
  • Объединение нескольких изображений с помощью VBA
  • Вставьте изображение в ячейку excel в MATLAB
  • VBA - добавление, положение и изменение размера изображения в виде фона графика
  • Excel VBA: копирование изображений с элементов управления изображением на объекты activeX
  • Генерация диаграммы Excel php
  • Заполните ArrayList значением RGB для каждого пикселя изображения
  • текст, скопированный в Excel, отображается как изображение
  • Interesting Posts
    Давайте будем гением компьютера.