Excelの外部制御について質問です。

記載した作業を自動化したいと思っております。

ある特定のフォルダに日付が入ったファイルがあります。
(例:20151105.xls)
①そのフォルダから当日のファイル名を探します。
②特定シートをPDF化します。
(例:「作業〇〇」シート)
③PDF化したファイルを指定します。
(例:提出用.PDF)
④指定フォルダに格納します。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2015/11/06 22:14:42
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:jan8 No.1

回答回数456ベストアンサー獲得回数96

ポイント500pt

日付が入ったファイルと同じ場所に
"ファイル名.vbs"で保存してください。
要求と違うところがあれば教えてください。

Set objWShell  = WScript.CreateObject("WScript.Shell")
Set objShell   = WScript.CreateObject("Shell.Application")
Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject")
Set objExcel   = WScript.CreateObject("Excel.Application")

'コメントを取るとExcelがフォアグラウンドで開きます
'objExcel.Visible = True

strCurPath = objWShell.CurrentDirectory

on error resume next
'①そのフォルダから当日のファイル名を探します。
Set objXlsFile = objExcel.Workbooks.Open( strCurPath & "\" & Year(Now()) & Right("0" & Month(Now()), 2) & Right("0" & Day(Now()), 2) & ".xls" )
if Err.Number <> 0 then
	objExcel.Quit()
	Wscript.Echo Err.Description & vbCrLf & strCurPath
	Wscript.Quit()
end if
'③特定シートをPDF化します(シートを指定、指定しない場合、アクティブシートがPDF化される)
mySheetNumber = objXlsFile.Worksheets("作業○○").Index
if Err.Number <> 0 then
	objExcel.Quit()
	Wscript.Echo Err.Description & vbCrLf & strCurPath
	Wscript.Quit()
end if
'④指定フォルダに格納します(フォルダを指定、指定しない場合、同じフォルダに格納される)
Set objFolder = objShell.BrowseForFolder(0, "PDFファイル格納フォルダの指定(未指定時は現在のフォルダに格納します)", 0, "C:\")
if Err.Number <> 0 then
	objExcel.Quit()
	Wscript.Echo Err.Description & vbCrLf & strCurPath
	Wscript.Quit()
end if

If Not objFolder Is Nothing Then
    strCurPath = objFolder.Items.Item.Path
End If

on error goto 0

'②特定シートをPDF化します ④指定フォルダに格納します
Call objXlsFile.ExportAsFixedFormat(0 , strCurPath & "\提出用.pdf", xlQualityStandard, False, False, mySheetNumber, mySheetNumber, True )
'最後の"True"を"False"にすると、発行後にファイルがビューアーに表示されなくなります。

objExcel.Quit()

Set objWShell  = Nothing
Set objFileSys = Nothing
Set objExcel   = Nothing
Set objXlsFile = Nothing
Wscript.Quit 0
  • id:jan8
    シートをPDF化する機能のある
    Excel2007以降に限定しても宜しいですか?
  • id:jan8
    下記コードを改造すれば要求を満足するスクリプトが出来ると思います。
    http://logicalerror.seesaa.net/article/144750949.html

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません