2

Adobe PhotoShop CS4 スクリプトを使用すると、JavaScript でFileおよびFolderクラスが提供されますが、これらのクラスを VBScript から使用する方法がわかりません。

現在、私は次のDoJavaScriptような関数を使用しています:

Set appRef = CreateObject("Photoshop.Application")
jsCode = Array(_
    "var inFolder = Folder.selectDialog('Select a folder to process');",_
    "if(inFolder != null){",_
    "  var fileList = inFolder.getFiles(/\.(jpg|jpeg|tif|)$/i);",_
    "  var outFolder = new Folder(decodeURI(inFolder) + '/Edited');",_
    "  if (outFolder.exists == false) outFolder.create();",_
    "  for(var i = 0 ;i < fileList.length; i++){",_
    "    var doc = open(fileList[i]);",_
    "    doc.flatten();",_
    "    var docName = fileList[i].name.slice(0,-4);",_
    "    var saveFile = new File(decodeURI(outFolder) + '/' + docName + '.png');",_
    "    SavePNG(saveFile);",_
    "    activeDocument.close(SaveOptions.DONOTSAVECHANGES);",_
    "  }",_
    "}",_
    "function SavePNG(saveFile){",_
    "  pngSaveOptions = new PNGSaveOptions();",_
    "  pngSaveOptions.embedColorProfile = true;",_
    "  pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;",_
    "  pngSaveOptions.matte = MatteType.NONE;",_
    "  pngSaveOptions.quality = 1;",_
    "  pngSaveOptions.PNG8 = false;",_
    "  pngSaveOptions.transparency = true;",_
    "  activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE);",_
    "}")
appRef.DoJavaScript(Join(jsCode, vbNewLine))

私の質問は: VB スクリプトから直接andクラスを使用できますか? FolderFile 何かのようなもの:

Set psFolder = appRef.Folder
inputFolder  = psFolder.selectDialog("Select a folder to process")

これを試すと、次のappRef.Folderエラーが返されます。

オブジェクトはこのプロパティまたはメソッドをサポートしていません

4

1 に答える 1

0

VBscript では、FileSystemObject を使用してフォルダーにアクセスできます。

'1.a - user browse for folder
Set objShell  = CreateObject( "Shell.Application" )
Set objFolder = objShell.BrowseForFolder( 0, "Select Folder", 0, myStartFolder )
'1.b - or use a fixed one
sFolder = "C:\foo\anyFolder\"
Set fs = CreateObject("Scripting.FileSystemObject")
Set objFolder = fs.GetFolder(sFolder)

'parse the content of the folder
Set oChildren = objFolder.SubFolders
ReDim aList(oChildren.Count)
For i = 1 To oChildren.Count
    aList(i) = oChildren.Item(i).Name
Next
于 2015-03-09T13:09:12.437 に答える