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

Posted

技术标签:

【中文标题】CopyFiles 使用电子表格列作为源和目标【英文标题】:CopyFiles using spreadsheet columns for source and destination 【发布时间】:2014-01-07 09:56:57 【问题描述】:

我有一个包含文件路径列表的“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,但如果有人让我走上正确的道路,我可以解决它。

【问题讨论】:

【参考方案1】:

这个简单的操作不需要宏。

在单元格 F1 中写公式

="cp" & D1 & "" & E1

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

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

将它们复制到剪贴板 (Ctrl+C),打开终端 (Ctrl+Alt+T) 并将所有这些命令粘贴到那里 (Ctrl+Shift+V)。

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

【讨论】:

【参考方案2】:

我测试了以下内容,并且成功了:

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”)

【讨论】:

对我不起作用,它说“基本语法错误。未知数据类型范围”。目标路径确实包含文件名。我忘了包括我在 ubuntu 上使用 libre calc。

以上是关于CopyFiles 使用电子表格列作为源和目标的主要内容,如果未能解决你的问题,请参考以下文章

谷歌电子表格查询:我可以删除列标题吗?

如何使用电子拷贝文件

Pentaho/PDI/Kettle:如何用 Excel 电子表格中的值填充“插入/更新”?

计算/电子表格:组合/分配/迁移列

smratbi电子表格加序号

LibreOffice Calc电子表格中怎么快速输入数据?