我有一个包含20k+图像元数据信息的Excel文件。我尝试编写一个宏,它在Windows Shell上使用exiftool.exe(一种用于批量编辑元数据的工具)执行命令,并使用与每行相关的变量。
例如,我想遍历exiftool命令,这些命令从B列(“Author”)获取信息,例如:
C:\exiftool\exiftool.exe -Author="CELL B1 CONTENT"
C:\exiftool\exiftool.exe -Author="CELL B2 CONTENT"
...不断重复
这是我迄今为止所尝试的:
Sub EnterMetadata()
For Each Cell In Range("C1:C20000")
Shell("c:\Exiftool\exiftool.exe -o I:/Photos/ & ActiveCell.Offset(0, -2).Value) & " -Author=" & ActiveCell.Offset(0, -1).Value)
Next
End Sub
请注意,列A
包含原始文件的路径。B
列包含作者姓名。我试图从列A
和B
中检索信息以在宏中使用。
2条答案
按热度按时间dy2hfwbg1#
未测试:
如果您的任何命令行参数可能包含空格,那么您应该将其引用(在VBA字符串中,引号通过加倍进行转义)
bbmckpt72#
如何使用
ShellExecute
?这是你需要在宏中声明的内容,这样你就可以使用它了:
您可以将参数作为String(
lpParameters
)传递给它,获取返回值以帮助理解如果出现错误会发生什么,并且通常比使用Shell
更通用。你可以做类似的事情(* 这是没有测试,因为我没有
exiftool
.*):我会让你根据你的要求填充作者。
有关
ShellExecute
、click here的完整信息,请访问MSDN。