駆け出しエンジニアの気ままにブログ

このブログでは、駆け出しエンジニアの私が興味をもったトピックについて不定期に発信しています。

スポンサーサイト  

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

category: スポンサー広告

tb: --   cm: --

スクリプト初心者のためのVBS「超」入門(3)~ゆっくりにニュースを読んでもらう~  

tv_yukkuri

VBS第3回目は、前回宣言した『ゆっくりにニュースを読んでもらう』VBSをつくっていきます。

・・・前回から1ヶ月以上間が空いてしまいました。すみません。(― ―;)

さて、気を取り直して・・・

ゆっくりにニュースを読んでもらうための手順は
1)Webから、ニュースの文章をテキストファイルへ出力する
2)出力したテキストファイルの内容をゆっくりに読んでもらう(※)
という2つの手順で実現していきます。
※ゆっくりに読んでもらうためには、Softalkをインストールしておく必要があります。詳しくはコチラ


ちなみにVBS(Visual Basic Script)とは・・・
Windowsで動くとても便利なスクリプトです。
例えば、会議室の予約確認やデータのダウンロードなど、日常業務には決まりきった作業がつきものですよね。
こんな時、VBSを組んでおくことで作業を完全に自動化できちゃいます。
しかも、
・ソフトのインストールやセットアップが不要で、
・Windowsが入っていればできますので(基本的に)
誰でもすぐに出来るようになります。

尚、VBSを実行するときの手順は、以下の通りです。
 手順1)新規テキストドキュメントを作成します。メモ帳でOK。
 手順2)スクリプトをコピペします。
 '(ココから)
 '――すくりぷと――
 '(ココまで)
 手順3)上書き保存した後、ファイル名を"progXXX.vbs"とします。拡張子を”.vbs”にすればOKです。
 手順4)作成したファイルのアイコンをダブルクリックして起動してみてください。
 ※再編集する場合は、”プログラムから開く”を選択してメモ帳などで編集します。

まずは、Webからニュースをテキストファイルへ書き出す部分をつくってみましょう。

対象のニュースはYahoo!ニュース、読売オンラインでも何でも良いのですが、今回はこのブログの『一週間ニュースまとめ』の記事(※)を対象とします。
※http://kazufumi1984engineer.blog.fc2.com/blog-category-6.html

1)Webから、ニュースの文章をテキストファイルへ出力する(prog004.vbs)

例)指定したWebページの文章をnews_temp.txtファイルに保存するスクリプト
 '(ココから)

 '変数など明示的に表現することを宣言します。
 Option Explicit

 '変数を宣言します。
 Dim objIE		'IEオブジェクト用
 Dim objFSO 		'FileSystemObject
 Dim objFile		'ファイル書き込み用
 Dim txt_temp,txt_main	'文章の一次保存用
 Dim p_start, p_end	'開始場所、終了場所

 'ファイルシステムにアクセス、IEアクセス用のオブジェクトを作成
 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 Set objIE = CreateObject("InternetExplorer.Application")

 'IEオブジェクトに、このブログの「ニュース纏め」のURLを設定
 objIE.Navigate "http://kazufumi1984engineer.blog.fc2.com/blog-category-6.html"
 objIE.Visible = True
 WScript.sleep 1000

 '指定したWebページから指定した範囲のテキストを取り出す
 'txt_tempにウェブページのinntertext部分を一次保存
 txt_temp = objIE.document.body.innertext
 '取り出したいテキストの開始場所の行を設定
 p_start = InStr(txt_temp, "今週も、先週の")
 '取り出したいテキストの終了場所の行を設定
 p_end = InStr(p_start, txt_temp, "m(_ _)m")
 'txt_tempから、取り出したいテキストの範囲を指定してtxt_mainに保存
 If (p_start > 0) And (p_end > 0) Then
      txt_main = Mid(txt_temp, p_start, p_end - p_start)
 Else
      WScript.Echo "エラー: " & Err.Description
 End If

 'txt_mainに保存した文章をファイルnews_temp.txtに保存する
 If Err.Number = 0 Then
     'テキストファイルオブジェクトを作成します。
     Set objFile = objFSO.OpenTextFile("news_temp.txt", 2, True)
     If Err.Number = 0 Then
         'オブジェクトに文字列を書き込みます。
         objFile.Write(txt_main)
         objFile.Close
     Else
         WScript.Echo "ファイルオープンエラー: " & Err.Description
     End If
 Else
     WScript.Echo "エラー: " & Err.Description
 End If
 On Error Resume Next
 WScript.sleep 1000

 'インターネットエクスプローラを終了します
 objIE.Quit

 'オブジェクトを破棄します
 Set objIE = Nothing
 Set objFile = Nothing
 Set objFSO = Nothing

 '(ココまで)

URL部分(p_start,p_endも)を変えることで、他のニュースも取得することができます。


続いて・・・

2)出力したテキストファイルの内容をゆっくりに読んでもらう(prog005.vbs)

本日のメインです!!

prog004.vbs と前回の prog003.vbs を組み合わせて、ゆっくりに指定したWebページのニュースを読んでもらうスクリプトをつくります。

例)指定したWebページのニュースをゆっくりに読んでもらうスクリプト

前処理として、前回同様softalkフォルダをCドライブの直下に置いて下さい(c:\softalk)。
また、作成するVBSのファイル(prog005.vbs)も、sortalkフォルダに格納してください(c:\softalk\prog005.vbs)。
※フォルダ指定の際にフルパスで指定している.exeファイルを書き換えれば、他フォルダに格納していても構いません。

 '(ココから)

 '変数など明示的に表現することを宣言します。
 Option Explicit

 '変数を宣言します。
 Dim objIE		'IEオブジェクト用
 Dim objFSO 		'FileSystemObject
 Dim objFile		'ファイル書き込み用
 Dim txt_temp,txt_main	'文章の一次保存用
 Dim p_start, p_end	'開始場所、終了場所
 Dim WshShell		'WindosShellスクリプト用
 Dim objExec		'exeファイル実行用

 'オブジェクトを作成
 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 Set objIE = CreateObject("InternetExplorer.Application")
 Set WshShell = WScript.CreateObject("WScript.Shell")

 'このブログの「ニュース纏め」のURLを設定
 objIE.Navigate "http://kazufumi1984engineer.blog.fc2.com/blog-category-6.html"
 objIE.Visible = True
 WScript.sleep 1000

 '指定したWebページから指定した範囲のテキストを取り出す
 txt_temp = objIE.document.body.innertext
 p_start = InStr(txt_temp, "今週も、先週の")
 p_end = InStr(p_start, txt_temp, "m(_ _)m")
 If (p_start > 0) And (p_end > 0) Then
      txt_main = Mid(txt_temp, p_start, p_end - p_start)
 Else
      WScript.Echo "エラー: " & Err.Description
 End If

 If Err.Number = 0 Then
     Set objFile = objFSO.OpenTextFile("news_temp.txt", 2, True)
     If Err.Number = 0 Then
         objFile.Write(txt_main)
         objFile.Close
     Else
         WScript.Echo "ファイルオープンエラー: " & Err.Description
     End If
 Else
     WScript.Echo "エラー: " & Err.Description
 End If
 On Error Resume Next
 WScript.sleep 1000

 'ゆっくりにニュースの文章を保存したテキストを読み上げてもらいます。
 Set objExec = WshShell.Exec("C:\softalk\SofTalk.exe C:\softalk\news_temp.txt")
 Do While objExec.Status = 0
    WScript.Sleep 200
 Loop

 objIE.Quit

 Set objIE = Nothing
 Set objFile = Nothing
 Set objFSO = Nothing
 Set objExec = Nothing
 Set WshShell = Nothing

 '(ココまで)

さて準備ができたら、prog005.vbsをダブルクリックして実行してみましょう!!

ゆっくりが「一週間ニュースまとめ」の内容を読み上げてくれるはずです。

動かない場合は、

・Softalkはダウンロードしてあるか、
・ファイルの格納場所は適切か?(SofTalkのフォルダ、prog005.vbsファイルの場所)
・細かなスペルが何か間違っていないか、

などを確認してみて下さい。


・・・ということで

VBSの第3回目は『ゆっくりにニュースを読んでもらう』処理をつくってみました。

ニュースだけじゃなく、Webページ全般に使える技術ですので他にも色々と応用してみてください☆

今後も自分でつくった簡単なVBSをちょくちょく紹介していきますので、お付き合下さい。

今回も最後まで読んでくださったかた。本当にありがとうございます。


(参考)
・ニコニコ動画で人気の「ゆっくり」を、駆け出しエンジニアが使ってみた
・VBS「超」入門
・スクリプト初心者のためのVBS「超」入門(2)

・WSHを始めよう―@IT
・VBScript/JScriptプログラミング&Tips for WSH - cafe de VBS

最速攻略 VBScriptサンプル大全集最速攻略 VBScriptサンプル大全集
(2006/03/28)
結城 圭介

商品詳細を見る


(2012年1月28日)

 


スポンサーサイト

category: VBS

tb: 0   cm: 0

スクリプト初心者のためのVBS「超」入門(2)  

今回はVBS第2回目ということで、VBSを活用していく上で重要な処理を2つほど紹介していていきます。

vbs_fig


今回扱う2つとは、
1)テキストファイルへ文字列を書き出す(出力する)ための処理
2)他のExeファイルをVBSから実行するための処理
です。


前回紹介した、IEの操作とあわせることで、

A)Webブラウザから(ニュースやWikipediaなどの)情報を取得し、
B)取得した情報(文字列)をテキストファイルに書き出し、
C)SofTalkなどを使って書き出したテキストを自動読み上げする。

・・・というようなスクリプトも書けるようになります!!


『ゆっくりにニュースを読んでもらう』などが実現できるわけです!!
※直近では、これ実現することを目標にします。


ちなみにVBS(Visual Basic Script)とは・・・
Windowsで動くとても便利なスクリプトです。
例えば、会議室の予約確認やデータのダウンロードなど、日常業務には決まりきった作業がつきものですよね。
こんな時、VBSを組んでおくことで作業を完全に自動化できちゃいます。
しかも、
・ソフトのインストールやセットアップが不要で、
・Windowsが入っていればできますので(基本的に)
誰でもすぐに出来るようになります。

尚、VBSを実行するときの手順は、以下の通りです。
 手順1)新規テキストドキュメントを作成します。メモ帳でOK。
 手順2)スクリプトをコピペします。
 '(ココから)
 '――すくりぷと――
 '(ココまで)
 手順3)上書き保存した後、ファイル名を"test.vbs"とします。拡張子を”.vbs”にすればOKです。
 手順4)作成したファイルのアイコンをダブルクリックして起動してみてください。
 ※再編集する場合は、”プログラムから開く”を選択してメモ帳などで編集します。

ということで・・・、早速、テキストファイルへ書き出す部分からつくってみましょう。

1)テキストファイルへ文字列を書き出す(出力する)ための処理・・・(prog002.vbs)

例)test.txtファイルを作成後、文字列を入力するスクリプト
 '(ココから)
 '変数など明示的に表現することを宣言します。
 Option Explicit
 '変数を宣言します。
 Dim objFSO      ' FileSystemObject
 Dim objFile     ' ファイル書き込み用
 'ファイルシステムにアクセスするためのオブジェクトを作成します。
 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 'IF文(1)objFSOのSetに失敗した場合の条件分岐です。
 If Err.Number = 0 Then
     'テキストファイルオブジェクトを作成します。ファイル名をtest.txtとします。
     Set objFile = objFSO.OpenTextFile("test.txt", 2, True)
     'IF文(2)objFileのSetに失敗した場合の条件分岐です。
     If Err.Number = 0 Then
 '------------------------------
 '----------ココから入力部分------------
         'オブジェクトに文字列を書き込みます。
         objFile.Write("駆け出しエンジニアの気ままにブログ")
         'VBScriptにおける改行コードです。
         objFile.Write(vbCrLf)
         objFile.Write("ゆっくりしていってね")
         objFile.Close
 '----------ココからまで入力部分----------
 '------------------------------
      'IF文(1)のエラー処理をします。
     Else
         WScript.Echo "ファイルオープンエラー: " & Err.Description
     End If
 'IF文(2)のエラー処理をします。
 Else
     WScript.Echo "エラー: " & Err.Description
 End If
 'オブジェクトを破棄します。
 Set objFile = Nothing
 Set objFSO = Nothing
 '(ココまで)

どうでしょう?動くようであれば、

ファイル名を変えてみたり、

入力部分を変えてみるなどなど・・・いろいろ試してみて下さい。

IE操作などと組み合わせることでいろいろなデータの自動出力が可能になります。


続いて・・・

2)他のExeファイルをVBSから実行するための処理(prog003.vbs)

例)他の回でDLしたSofTalk.exeをVBSから動かすスクリプト

前処理として、softalkフォルダをCドライブの直下に置いて下さい(c:\softalk)。
※フォルダ指定の際にフルパスで指定している.exeファイルを書き換えれば、他フォルダに格納していても構いません。

 '(ココから)
 '変数など明示的に表現することを宣言します。
 Option Explicit
 '変数を宣言します。
 Dim WshShell    'WindosShellスクリプト用
 Dim objExec     'exeファイル実行用
 'Windows Shellスクリプトオブジェクトを作成します。
 Set WshShell = WScript.CreateObject("WScript.Shell")
 'Exsecオブジェクトを作成します。今回は、SofTalkをフルパスで指定。
 Set objExec = WshShell.Exec("C:\softalk\SofTalk.exe C:\softalk\readme.txt")
 '実行したオブジェクトのステータスが実行中(=0)のうちはLoopする。
 Do While objExec.Status = 0
    WScript.Sleep 200
 Loop
 'オブジェクトを破棄します。
 Set objExec = Nothing
 Set WshShell = Nothing
 '(ココまで)

どうでしょう?動きましたか?

動かない場合やSofTalkをDLしていない場合などは、

WshShell.Exec()部分の"C:\softalk\SofTalk.exe C:\softalk\readme.txt"部分を、

"calc.exe"などの簡単な実行ファイルに書き換えてみて試して下さい。

また、できた人はWshShell.Exec()部の括弧内をいろいろと変えて実行してみてください。


・・・ということで

今回は、VBSを活用していく上で重要な処理を2つ紹介しました。
1)テキストファイルへ文字列を書き出す(出力する)ための処理
2)他のExeファイルをVBSから実行するための処理

簡単に楽しくできるので、一度やってみてください。意外と楽しいですよ。^^

ということで、VBSの第2回目は出力処理とファイル実行処理の簡単なスクリプトを紹介しました。

次回は、『ゆっくりにニュースを読んでもらう』処理にチャレンジしてみたいと思います。

今後も自分でつくった簡単なVBSをちょくちょく紹介していきますので、お付き合下さい。

今回も最後まで読んでくださったかた。本当にありがとうございます。


(参考)
・WSHを始めよう―@IT
・VBScript/JScriptプログラミング&Tips for WSH - cafe de VBS

最速攻略 VBScriptサンプル大全集最速攻略 VBScriptサンプル大全集
(2006/03/28)
結城 圭介

商品詳細を見る




(2011年12月21日)

 


category: VBS

tb: 0   cm: 0

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。