TOP > blog > VBSをドラック&ドロップ対応化で作業の効率化(2)
スクリプト
2018/03/12

VBSをドラック&ドロップ対応化で作業の効率化(2)

管理者用
blog

先に、VBSをドラック&ドロップ対応化で作業の効率化 と言う事で紹介しました。
この時のスクリプトを参考に以下のような効率化アップスクリプトを創って見ました。
使って見ると、こりゃあ便利!!
皆さんにもぜひ紹介したいと思います。

同業者のある印刷屋さんから名刺印刷をお受けしてます。
版は、拡張子.eps で、メールに添付して入稿されます。
イラストレータで作成しているとの事です。

弊社では、そのファイルをイラストレータで開きます。
そして、出力用のテンプレートにコピーして刷版用のプリンターに出力します。

もう少し作業を分解してお話しします。

1、スタート メールが来ている事を確認
2、メールの添付ファイルをディスクトップ上に保存
3、イラストレータの出力用のテンプレートを開く
  テンプレートは、名刺サイズで作られ、出力プリンター等の設定も出来てます。
5、ディスクトップ上のEPSファイル(入稿ファイル)も開く
6、名刺データ部分をコピー
7、テンプレートにペースト
8、プリント 印刷
9、テンプレートにペーストした部分を削除
10、裏面データ 6、~から繰り返す

11、テンプレートにペーストした部分を削除
12、次のデータに移り 5、から繰り返す

簡単な単純作業じゃないか!
しかし、こんな単純な作業でも、繰り返しは、きつい・・・・・・
そこで、先に紹介してました、ドラッグ&ドロップ VBSを使って
作業の効率化を行う事としました。

ディスクトップ上に .vbs ファイルを置いて、入稿の .eps ファイルをドラック

 

テンプレート作成

スクリプトを書く前に、テンプレートとなるインデザインファイルを事前に作っておきます。
インデザインドキメントを名刺サイズで作ります。
スクリプトでレイアウトするEPSファイルを取り込んで、製版用プリンターに出力を行います。
取り込んだ、EPSファイルを削除します。
このファイルに任意の名前を付けて保存します。
こうする事により、多くの設定が受け継がれます。
従って、設定されている部分に対する記述は必要有りません。
言い換えると、設定の記述が分らなくても良いのです。

スクリプト

スクリプト自身は、単純なものです。
最後にスクリプトを載せてますので参照してください。

メインルーチン(ドラック&ドロップのファイル受取リーチン)

以前に紹介した、PDFファイル取込み用のスクリプトの、ファイルの取り込み部分を書換えます。
PDFの記述をEpsに書き換えれば良いのです。

サブルーチン

ここの内容は、取り込んだEPSファイルをどうするのかの記述を行います。

1、インデザインを開く
2、インデザインテンプレートファイルを開く
3、EPSファイルを所定の場所に配置する
4、裏面が有る場合は、ページを追加して、裏面部分を配置する。
5、製版プリンターにプリントアウト
6、インデザインファイルを閉じる
7、インデザインを閉じる

こんな流れとなります。

処理ファイルが多い事も考慮すると、インデザインを閉じない方が良いかもしれません。
また、ドラックしたEPSファイルの内容を確認しないまま、出力して終わってしまうと言う事で、不安になります。
この様な場合は、プリントの部分は、自動から外し、手で操作した方が良いかもしれません。

ルール決め

今回の場合、たまたま、入稿データが、いつも同じパターンで出来ていたと言う事で、対応しました。
実際に、運用する場合は、レイアウト仕様の取り決めが必要です。
片面の場合、両面の場合の用紙に対する配置位置だけは、決めてきます。

 

スクリプトサンプル

メインのドラック&ドロップのファイル受取リーチンは、少し書換えるだけで、色々なファイルに対応可能です。

サブルーチンを、書換えて、色々な場面の効率化に使って見て下さい。

メインルーチン


'============================
Set objArgs = WScript.Arguments

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWSHShell = CreateObject("Shell.Application")

select case objArgs.Count

case 0
	msgbox "PDFファイルをドラック&ドロップしてください"
case 1
	myFileName = WScript.Arguments(0)
        Set objFiles = objFSO.GetFile(myFileName)
	if lcase(right(myFileName,3)) = "eps" then
		vret = msgbox("このepsファイル(" & objFiles.name & ")を取込みますか?",vbokcancel)
		if vret = vbok then
			Rem ここに処理を記述==================================
        		Call EPS_File_In(objFiles)   
			Rem ここ迄に処理を記述=================================
		else
			msgbox "中止しました。"
		end if
	else
		msgbox "ドロップしたファイルは(" & objFiles.name & ")",,"epsファイルでは無いようです。"
	end if
	Set objFiles = Nothing   
case else
	msgbox "ドラック&ドロッは、1ファイルだけにして下さい。"
end select

Set objParentFolder = Nothing   
Set objArgs = Nothing   
Set objFSO = Nothing   
WScript.Quit   

'=============================================================

サブプーチン


'=============================================================
Sub  EPS_File_In(objFiles)

	folder_kaiso = left(objFiles.path , len(objFiles.path) - len(objFiles.name) - 1) 
	FolderNAME = Split(folder_kaiso,"\")	'\フォルダー階層区切りの¥マークでSPLIT
	FolderRetu = UBound(FolderNAME) 'フォルダー階層数
	imgFilena  = FolderNAME(FolderRetu)'画像ファイルのフォルダー名を取得
	myFileName=  objFiles.path
	myFileNameEPS = objFiles.name
	Set myInDesign = CreateObject("InDesign.Application") 'インデザインを起動する
	'Set myDocument = myInDesign.Documents.Add 'ファイルを指定しない
	faill_mei = "C:\Users\sanei\Desktop\名刺出力テンプレート.indd"
	Set myDocument = myIndesign.Open(faill_mei)
	xm=12.8
	ym=12.8
	Set myTextFrame = myDocument.TextFrames.Add
	haichi_1_YS = 0 - ym
	haichi_1_XS = 0 - xm
	haichi_1_YE = 210 - ym
	haichi_1_XE = 298 - xm
	myTextFrame.GeometricBounds = Array(CStr(haichi_1_YS) + "mm", CStr(haichi_1_XS) + "mm", CStr(haichi_1_YE) + "mm", CStr(haichi_1_XE) + "mm")

	EPSFILMEI = folder_kaiso & "\" & myFileNameEPS
	myTextFrame.Place ( EPSFILMEI)
	myTextFrame.Fit (1718906723)'
	Eps_zahyo = myTextFrame.GeometricBounds
	xHaba = Eps_zahyo(3)- Eps_zahyo(1)
	yHaba = Eps_zahyo(2)- Eps_zahyo(0)
	xHabaCente = Eps_zahyo(1) + xHaba / 2
	Mov_xHabaCente = xHabaCente - (91 / 2)

	myTextFrame.Move Array(Cstr(Eps_zahyo(1)- Mov_xHabaCente) , Cstr(-12.8))
	'両面の場合
	if InStr(1, myFileNameEPS, "両面", 1) => 1 Then 'スペース検索
		myDocument.Pages.Add
		Set myTextFrame2 = myDocument.Pages.Item(2).TextFrames.Add
		myTextFrame2.GeometricBounds = Array(CStr(haichi_1_YS) + "mm", CStr(haichi_1_XS) + "mm", CStr(haichi_1_YE) + "mm", CStr(haichi_1_XE) + "mm")
		myTextFrame2.Place ( EPSFILMEI)
		myTextFrame2.Fit (1718906723)
		myTextFrame2.Move Array(Cstr(Eps_zahyo(1)- Mov_xHabaCente) , Cstr(-97.8))
	end if

	'myDocument.PrintOut False '自動でプリントの場合、コメントを外してください
	myDocument.Save "C:\Users\sanei\Desktop\名刺出力テンプレート2.indd" 'ダミーの書き出し
	'myDocument.close'自動でファイルを閉じる場合、コメントを外してください
End Sub   
'==================================

関連記事