SQLの窓

2017年12月25日


VBScript : 既存の Excel を PDF に変換する ( Excel 2007以降 )


2017/12/25 更新
Excel.Application を取得しているので、GetOpenFilename でファイルを選択できるようにしました。細かい詳細はソースコードにコメントに書き込んでいます

※ PDF は、Excel と同じ名前で拡張子を .pdf にしてスクリプトと同じフォルダに保存されます。
Excel 2007以降の Excelで名前を付けて保存で PDF に保存できますが、これはスクリプトで行うコードです。Excel 2007 を調べているとメソッド紹介されていたので、引数見た限り、 VBScriptでも動くだろうと試してみました。 ( プリンタが使える状態でないと動作しません ) ExportAsFixedFormat メソッド XlFixedFormatType 最近は、VBScript の単純コードである .vbs は Google Chrome での扱いが悪いので、.wsf で作成しています。もともと、.wsf のほうが簡単に外部ライブラリを参照したり、オブジェクトを最初から定義できるのでコードが簡潔になります。ここでは、Excel.Application 内で定義されている定数も参照して使えるようにしています。 Excel 側では、印刷設定により一行目のタイトルを常に表示するようにしたり、A4 横にして縮小したりしています。シートは二つありますが、PDF に変換すると全て出力されます。
<JOB>
<OBJECT id="Fso" progid="Scripting.FileSystemObject" />
<OBJECT id="ExcelApp" progid="Excel.Application" />
<REFERENCE guid="00020813-0000-0000-C000-000000000046" />
<SCRIPT language="VBScript">
' Wscript.Echo xlTypePDF,xlTypeXPS

' **************************************
' スクリプトのあるディレクトリの取得
' **************************************
strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

' 途中で異常終了すると、Excel がプロセスに残ってしまうので表示させています。
' マウス等で Excel 本体を操作しないで下さい。
' Excel を表示させたくない場合は、以下を削除または行頭に ' でコメントにして下さい
ExcelApp.Visible = True

Dim MyBook
Dim FilePath

' ここで Excel を参照するダイアログが開きます
FilePath = ExcelApp.GetOpenFilename("Excel ファイル (*.xlsx;*.xls), *.xlsx;*.xls", 1, "Excel ファイルの選択") 
if FilePath = "False" Then 
	MsgBox "Excel ファイルの選択がキャンセルされました"
	' スクリプト終了
	Wscript.Quit()
End If

' ここで Excel に読み込んでいます
on error resume next
' Workbook を取得( スクリプトと同じディレクトリ )
Set MyBook = ExcelApp.Workbooks.Open( FilePath )
if Err.Number <> 0 then
	' 終了( 開放 )
	ExcelApp.Quit()
	Wscript.Echo Err.Description & vbCrLf & FilePath
	' スクリプト終了
	Wscript.Quit()
end if
on error goto 0

Dim aPath
Dim strFileName
Dim aExt

' Excel の名前部分を取り出して、pdf の名前部分にします
aPath = Split(FilePath, "\")
strFileName = aPath(Ubound(aPath))
aExt = Split(strFileName,".")
strFileName = aExt(0)

' スクリプトと同じフォルダに保存されます
Call MyBook.ExportAsFixedFormat( xlTypePDF, strCurPath & "\" & strFileName & ".pdf" )

' 終了( 開放 )
ExcelApp.Quit()

' 終了確認
Wscript.Echo "処理が終了しました"

</SCRIPT>
</JOB>


Microsoft の記事

Application.GetOpenFilename メソッド

Microsoft の英文の記事

Saving Workbooks to PDF and XPS Formats in Excel 2007




タグ:VBScript EXCEL PDF
posted by lightbox at 2017-12-25 17:27 | VBS + オブジェクト | このブログの読者になる | 更新情報をチェックする

2017年12月20日


いまさらですが、『クリーンアップ』を管理者権限で起動して、Windows Update 関連やシステム関連の比較的大きなファイルを削除する

▼ 通常起動からも実行できますが、管理者権限で再起動するので二度手間です


通常起動では、Windows Update のクリーンアップは対象になりません。Windows の設定にもよるかもしれませんが、普通はそうです。そして、場合によったらギガ台に乗ってる巨大なファイルが必要も無いのにディスクに居座ってしまいます。しょっちゅうする必要も無い事ですが、実は管理者権限で実行するのは Windows7 と Windows 10 では違うようなので一応心に留めておく必要があると思います。

さらに、管理者権限の場合は『詳細オプション』というタブがあり、必要無いと思われる復元ポイント以前のリソースも削除できます(但し、トラブル時には復元ポイントが重要になるのでむやみに削除は禁物です )




Windows7 の場合



スタートメニューがあるので比較的簡単。メニューから『プログラムとファイルの検索』から『クリーン』と入力すればクリーンアップアプリが表示されて、CTRL+SHIFT+Enter で起動すると管理者権限による起動です。

地道にメニューから探すのであれば、アクセサリ > システムツール で『ディスク クリーンアップ』を右クリックしてポップアップメニューから『管理者として実行』すればいいです。近いうちにもう一回する予定があれば、そのまま右ドラッグしてショートカットをデスクトップに作成して、プロパティの詳細設定で『管理者として実行』にチェックしておけばいいです。

Windows10 の場合

Windows10 は、Creators Update がかかっていると、『コマンドプロンプト(管理者)』がメニューから消えています(設定で戻せます)。



かわりに Power Shell(管理者)があるので、その中で cmd と入力した後 cleanmgr と入力しましょう



あるいは、以下のように入力して、CTRL+SHIFT+Enter で管理者権限で実行できます


(clean だけでもいいですね)


で、いずれ(Windows 一般)にしても通常コマンドラインから実行したい場合(バッチファイルにしておけば簡単)は以下のようになります。
cmd "/c echo set o=CreateObject("Shell.Application"):o.ShellExecute "cleanmgr","","","runas",1 > %TEMP%\_.vbs & wscript.exe %TEMP%\_.vbs"




posted by lightbox at 2017-12-20 13:29 | Windows | このブログの読者になる | 更新情報をチェックする

2017年12月19日


Seesaa ブログの通常エディタで記事の先頭に Twitter カード用の meta 要素を挿入するブックマークレット

▼ ブックマークレットのリンク(ブックマークバーにドロップしてください)
Twitterカード用画像 : meta 要素挿入

Twitter カード用画像のリンクを propmpt で表示したダイアログに入力して実行します。キャンセルするとなにも実行されません。

リンクのコード
<a href="javascript:var%20a=prompt('画像URL','');if(a!=null){$('#article__body').val('&lt;meta name=&#34;twitter:image&#34; content=&#34;'+a+'&#34;&gt;'+&#34;\n&#34;+$('#article__body').val());}void(0);" onclick=" 
		alert('ブックマークバーにドロップしてください'); 
		if (window.navigator.appName.toLowerCase().indexOf('microsoft') > -1) { 
			event.returnValue = false; 
		} 
		event.preventDefault(); 
		event.stopPropagation();
	">Twitterカード用画像 : meta 要素挿入</a>

Seesaa 以外のブログシステムでも、jQuery が使用されておれば、$('#article__body') の部分を変更してどこでも使えると思います。

▼ Twitter の Card validator へのリンク





タグ:twitter
posted by lightbox at 2017-12-19 20:02 | ブックマークレット | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり