ブログ4
 
 
VBScript
 
32145035 木村涼
2022/09/30

  はじめに

 突然だが、最近私のブログの更新頻度が高いと感じていないだろうか?この理由は…皆さんのご想像にお任せしよう。(苦笑)こんなくだらない理由はさておき、これまでの各回内容を振り返ってみると本や、地元のことばかりで全くというほど情報学部味がない。そこで、今回と次回の2回は少しでも情報学部生らしいブログというものを書いてみようと思う。拙い部分が多々あり見苦しいかもしれないがご愛嬌ということにしていただきたい。



   VBScript

 

皆さんはVBScriptというものをご存じだろうか?VBSctiptとは、Visual Basicの構文をまねて作られたWindowsのスクリプト言語である。Visual BasicとはMicrosoftが1990年代に開発したプログラミング言語、処理系のことであり、さまざまな種類のアプリケーション開発に用いられる。また、VBScriptは一般的なプログラミング言語と比べて、利用できる機能が限られている。VBScriptは、スクリプトとして動作するための最低限の制御構文や変数、クラスなどの仕組みを提供し、ファイルの入出力やデータベースとの接続機能などは、「OLE」と呼ばれる、Windows独自のアプリケーション間の連携技術を利用し、外部プログラムを呼び出してオブジェクトとして生成して操作している。つまりVBScript自体は、OLEサーバーと連携しながら処理を実装する設計思想がために、機能が制限されて少なく非常にシンプルな言語になっているのである。VBScript自体の開発は既に終了しており、ときたま「枯れた言語」と揶揄されることもある。Windowsでしか利活用できないという点や、複雑・規模の大きなプログラムをも作るのが難しい点を含めてマイナスな意見を持つ人が多いが、作業の効率化や簡易なプログラムを作る際には十分な性能を発揮することができる。他にも利用できる機能が限られており新たな開発による仕様の変更の恐れがないため初心者であっても使いやすい言語の1つであるともいえる。HTML文書内にコードを埋め込むことも可能だがWindowsでしか起動することができない、かつ、Windows10以上でのEdgeではうまく作動させることができない。という問題点もあるため一部の業務の効率化などには適しているが大きく複雑なことにはうまくさせずらいといえる。以下のプログラムは現在時刻を表示させるだけという簡単なものであるが現環境で実行できるかぜひ試していただきたい。Google Chromeや、その他のVBScriptの対応していないツールで実行するとただただソースコードが表示されるだけになってしまう。その場合はソースコードをコピーしてメモ帳などに張り付け、端子を.vbsとして保存・実行してみるとうまく実行できるかもしれない。(Windowsをお使いでない方は今回はご縁がなかったということで…)

時刻表示

この夏、私は大量のPowerPointを一括で楽にPDFに変換できないか悩んでいた。というのも、私は今夏に実施していたスマホ教室でつかう資料を作っていたのだが、昨年度よりも受講者の満足度を高めるため今年度はスマホの使用頻度ごとの「未所持者クラス」、「初心者クラス」、「中級者クラス」の3つに分けて教室を行った。これにより昨年度より資料の作る手間は大きく膨れ上がり、資料を作製している私からするとほんの少しでも楽にする方法を模索していたのである。そこではじめに取り掛かったのが今回の「大量のpptxファイルを一括でPDFに変換する」という課題であった。そこで私が目を付けたのがVBScriptである。別にPythonやC言語などを使ってもよかったのだが、せっかくの夏休みだったので新しいことに取り組んでみることにした。今回私が用いたソースコードは以下のようなものである。


Option Explicit

Dim f, gf, n, nstring, pp, pt, so, IngMon, IngDay

Set so = CreateObject("Scripting.FileSystemObject")
Set gf = so.GetFolder(so.GetParentFolderName(WScript.ScriptFullName))
Set pp = CreateObject("PowerPoint.Application")
For Each f In gf.Files
If LCase(so.GetExtensionName(f.Name)) = "pptx" Then
n = so.GetBaseName(f.Name)
nstring = Right(n, 4)
IngMon = Right("0" & Month(Now), 2)
IngDay = Right("0" & Day(Now), 2)
Set pt = pp.Presentations.Open(gf & "\" & f.Name,,, 0)
n = replace(n, nstring, IngMon & IngDay)
pt.SaveAs gf & "\" & n &".pdf", 32
pt.Close
Set pt = Nothing
End If
Next
pp.Quit
Set pp = Nothing
Set gf = Nothing
Set so = Nothing
MsgBox("Finished!")
	 
実行結果  簡単にこのプログラムを説明すると、このプログラムが入っているフォルダの中にあるpptxファイルを見つけ、pdfファイルにエキスポートするというものである。またpdfファイルとして保存する際にファイルの名前の最後にファイルを作成した日の日付を書き加えるという処理を途中にはさんでいる。今回の事案sではファイル名に作成日時を入れる必要があるためこの処理を入れている。この部分のやり方は多少強引であるが、「しっかりと動けばいい」と思って作ったので改善点などがあれば教えていただければ幸いである。(よろしくお願いします!)
 このプログラムを実際に実行させると写真にあるようにフォルダ内のpptxファイルが順番にpdfファイルとして新規作成される。作られたPDFファイルを見るとわかるがファイル名の最後の4桁の数字は保存した日付が記録されるようになっており、pptxファイルは8月に作られたものであるがpdfファイルではしっかりとファイル名がpdf化した日付に変えることができている。





  最後に

 今回は私が夏休み中にかじったVBScriptについて簡単に紹介した。使うことのできる範囲は他と比べるとものすごく小さいがWindowsを使っている限りでは、かゆいところに手が届くようなプログラムを作りやすいプログラム言語だと私は感じた。一つ注意点として、プログラム内に日本語を入れたい場合は文字コードをUTF-8からShift JISに変更する必要がある。私はこのことになかなか気づくことができず、かなりの時間頭を抱えていたので皆さんはこんなことが起きないように注意していただきたい。
 次回もプログラムに関することを書く予定だが、今のところあまりいいものができていないので正直なところ少し焦っている。プログラムやブログでこんなに焦らなくていいよう後期は一生懸命頑張っていきたい。


  参考文献

VBScriptでできることは?

https://www.sejuku.net/blog/115320

VBScript集

https://www.toolsbox.biz/nonsense/VBScript/index.html

VBScriptの基礎編

https://tracpath.com/works/development/vbscript_basic/

VBScript初心者入門講座

http://vbscript.pgtop.net/article/318269716.html