0

20k 以上の画像のメタデータ情報を含む Excel ファイルがあります。各行に関連する変数を使用して、Windows シェルで exiftool.exe (メタデータのバッチ編集に使用されるツール) でコマンドを実行するマクロを作成しようとしています。

たとえば、次のような列 B (「作成者」) から情報を取得する exiftool コマンドを反復処理したいと考えています。

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してマクロで使用しようとしています。

4

2 に答える 2

1

を使用するのはShellExecuteどうですか?

これを使用できるように、マクロで宣言する必要があるものは次のとおりです。

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hWnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

パラメータを String ( lpParameters) として渡すことができ、戻り値を取得して、何か問題が発生した場合に何が起こったかを理解するのに役立ち、一般に を使用するよりも汎用性がありShellます。

これに似たことができます(私が持っていないので、これはテストされていません。exiftool):

ShellExecute 0, vbNullString, "C:\exiftool\exiftool.exe", "-Author=""CELL B1 CONTENT""", vbNullString, 10 ' 10=SW_SHOWDEFAULT

要件に応じて作成者を設定させていただきます。

の詳細についてShellExecuteは、ここをクリックして MSDN を参照してください。

于 2014-07-16T00:51:48.777 に答える