CopyFiles使用电子表格列作为源和目标

时间:2014-01-07 09:56:57

标签: python excel vba libreoffice libreoffice-basic

我有一个带有“D”列的电子表格,其中包含一个文件路径列表,此列中有大约2500个文件。在“E”列中,我有一个与新目标文件路径相同大小的列表。我想将D列中的所有文件复制到E列中的位置。我知道可以在LibreOffice中使用Python / Basic宏,但我似乎无法正确使用它。

这是我在搜索时找到的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,但如果有人让我走上正轨,我就可以解决它。

2 个答案:

答案 0 :(得分:0)

此简单操作不需要宏。

在F1单元格中编写公式

="cp" & D1 & "" & E1

将此单元格乘以文件列表的末尾

您现在有大约2500个文件复制命令。

将它们复制到剪贴板(Ctrl + C),打开一个终端(Ctrl + Alt + T),然后将所有这些命令粘贴到其中(Ctrl + Shift + V)。

将在几秒钟(或几分钟)内完成工作

答案 1 :(得分:-1)

我测试了以下内容,它起作用了:

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 Scripting Runtime”引用(“C:\ windows \ system32 \ scrrun.dll”)