CopyFiles с использованием столбцов электронной таблицы для источника и назначения

У меня есть электронная таблица со столбцом "D" со списком путей к файлам, и в этом столбце содержится около 2500 файлов. В столбце "E" у меня есть список такого же размера с новым путем к файлу назначения. Я хочу скопировать все файлы в столбце D в места в столбце E. Я знаю, что это возможно с помощью макроса Python / Basic в LibreOffice, но я не могу понять, что это правильно.

Это код VBA, который я нашел при поиске, но, к сожалению, он не работает с LibreOffice Calc.

Sub Copy_Files()
    Dim cell As Range
    For Each cell In Range("D1", Range("D" & Rows.Count).End(xlUp))
        FileCopy Source:=cell.Value, Destination:=cell.Offset(, 1).Value
    Next cell
End Sub

Я не знаю Python, но если бы кто-то поставил меня на правильный путь, я мог бы решить это.

1 ответ

Для этой простой операции вам не нужен макрос.

Запишите формулу в ячейку F1

="cp" & D1 & "" & E1

Умножьте эту ячейку до конца списка файлов

Теперь у вас есть около 2500 команд копирования файлов.

Скопируйте их в буфер обмена (Ctrl+C), откройте терминал (Ctrl+Alt+T) и вставьте туда все эти команды (Ctrl+Shift+V).

Через несколько секунд (или несколько минут) работа будет выполнена

Я проверил следующее, и это сработало:

Sub Copy_Files()
    Dim cell As Range
    Dim fs As Object
    Set fs = CreateObject("Scripting.FileSystemObject")
    For Each cell In Range("D1", Range("D" & Rows.Count).End(xlUp))
        fs.CopyFile cell.Value, cell.Offset(0, 1).Value
    Next cell
End Sub

Я считаю, что вам просто нужно убедиться, что путь назначения также содержит имя файла. Также необходимо включить ссылку "Среда выполнения сценариев Microsoft" ("C:\windows\system32\scrrun.dll")

Другие вопросы по тегам