VBScript による Web スクレイピング
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
背景
今日は以前の記事に関わる事務作業の自動化の準備です。
ブラウザシステムや Web をスクレイピングしたいときは結構あります。
一度作ったプログラムをうまく管理して、資産的に使用して行くことが今後の自動化の生産性を上げることにもつながります。
そこで、フォルダ構成や作成するプログラムの構成を考えていきます。
目的
個人的にはWebスクレイピングは Python で実装するのが主流な気がしますが、VBS で実装します。(笑)
自動化をして行く上で、都合の良い便利なプログラムの組み方を考えます。まぁ、基本通りです。ダラダラと書かずに関数もしくはサブルーチンを作成し、なるべくプログラムは関数、サブルーチンのみで構成する方針でいきます。
まず、VBScript をしまうためのフォルダ構成を作成します。
何でもいいので1つフォルダを作成します。私は『VBS』というフォルダを作成しています。
そして、関数、サブルーチンをしまうためにVBSフォルダの中に『myFunc』というフォルダを作成しました。
使えそうな関数のアイデアが浮かんだら、『myFunc』フォルダに関数の VBScript を保存しています。
まず、 VBScript で IE を新規に作成する関数を作成し、『myFunc』フォルダに保存します。
そして、外部から IE を新規に作成する関数を読み込んで IE で Web を表示させてみます。
関数
ソースコード
この関数は URL を引数で渡して、新規 IE で URL を表示するサブルーチンです。
newIE-targetURL.vbs
Sub newIE(targetURL)
'--------------------------------------------------------------------
' IE オブジェクトの生成
'--------------------------------------------------------------------
Set objIE = CreateObject("InternetExplorer.Application")
'--------------------------------------------------------------------
' IE オブジェクトの可視化
'--------------------------------------------------------------------
objIE.Visible = True
'--------------------------------------------------------------------
' IEを開く
'--------------------------------------------------------------------
objIE.navigate targetURL
'--------------------------------------------------------------------
' ページが読み込まれるまで待つ
'--------------------------------------------------------------------
Do While objIE.Busy = True Or objIE.readyState <> 4
WScript.Sleep 100
Loop
Set objIE = Nothing
End Sub
使い方
作成したnewIE-targetURL.vbs ファイルを呼び出して使うプログラムを書きます。
main.vbs
'------------------------------------------------------------------------------
' 自作関数のインクルード
'------------------------------------------------------------------------------
call IncludeFunction()
'_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
' IE を開く
'_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
'--- 変数宣言 ---
targetURL = "https://transit.yahoo.co.jp/"
'--- 実行 ---
call newIE(targetURL)
'------------------------------------------------------------------------------
' 終了通知
'------------------------------------------------------------------------------
MsgBox wscript.scriptname & " の処理が完了しました。"
'------------------------------------------------------------------------------
' 自作関数をコールするサブルーチン
'------------------------------------------------------------------------------
sub IncludeFunction()
'----------------------------------------------------------------------------
' 自分(=VBSファイル)のディレクトリを取得する
'----------------------------------------------------------------------------
FullPath = wscript.scriptfullname
FileName = wscript.scriptname
pathLen= len(FullPath) - len(FileName)
crrDir = left(FullPath, pathLen)
chiDir = "myFunc"
crrDir = crrDir & chiDir
'----------------------------------------------------------------------------
' ファイルシステムを扱うオブジェクトを作成
'----------------------------------------------------------------------------
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'----------------------------------------------------------------------------
' フォルダのオブジェクトを取得
'----------------------------------------------------------------------------
Set objFolder = objFileSys.GetFolder(crrDir)
'----------------------------------------------------------------------------
' FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
'----------------------------------------------------------------------------
For Each objFile In objFolder.Files
'--------------------------------------------------------------------------
' 自作関数のコール
'--------------------------------------------------------------------------
FuncFile = objFile.Name
Set objFile = objFileSys.OpenTextFile(crrDir & "\" & FuncFile)
ExecuteGlobal objFile.ReadAll()
objFile.Close
Next
'----------------------------------------------------------------------------
' メモリ解放
'----------------------------------------------------------------------------
Set objFile = Nothing
Set objFolder = Nothing
Set objFileSys = Nothing
end sub
Windows自動処理のためのWSHプログラミングガイド増補改訂版 JScript/VBScript対応 [ 五十嵐貴之 ] |
コメント
これで、 main.vbs を起動すると Yahoo! の路線情報の検索ページが新しい IE で開きます。
さらに、 IncludeFunction というサブルーチンで外部の VBScript ファイルの関数やサブルーチンを使用可能な状態にしています。
これからは、newIE-targetURL.vbs の様な色々な機能の関数、サブルーチンを作って、『myFunc』フォルダの保存していきます。
以上
解析の実行を自動化!!
こんにちはm(_ _)m
仕事の自動化にやりがいと達成感を感じるガッくんです。
今日は固有値解析、静解析の自動化を考えます。ちなみに固有値解析、静解析といってもやり方も解析ソフトも沢山あります。この記事ではNastran系の固有値解析、静解析を考えていきます。
まぁ、解析エンジニアなので、文字通り解析します。
その際、計算サーバーへアクセス、ファイルの送受信、計算の実行を行います。
コマンドでカタカタやるのも良いんですが、TeraTermにはマクロ機能が有ります。Tera Term Language(TTL)という言語で拡張子は「.ttl」です。有るのもは使いましょう!!
それでは、計算サーバーへのLog in〜解析結果のOutputまでを自動化してしまいましょう。
それぞれの言語で何を書くかは以下の通り。
VBS:TTLの実行
TTL:log in〜解析結果のOutput
VBA:セットアップ
【VBS:TTLの実行】
実行などのスイッチング動作は単純、簡単であればあるほど良いです。
VBSはドラッグ&ドロップを標準で実装できます。また、Windows OSなら動作します。
VBSは意外と優秀です。
作成するプログラムは以下の様にします。
解析に必要な設定ファイルをドラッグ&ドロップすると、TTLで書いたlog in〜解析結果のOutputのプログラムを実行する。
【TTL:log in〜解析結果のOutput】
TeraTermが標準で備えているTTLというマクロ機能です。
安定動作第1です。標準での実装は理想的です。
作成するプログラムは以下の様にします。
計算サーバーにlog inし、解析に必要な設定ファイルをアップロードして、解析を実行し、解析結果を解析に必要な設定ファイルと同じディレクトリにダウンロードする。
こ
【VBA:セットアップ】
この手の自動化プログラムはユーザー名、パスワードなど使用者固有のデータが必要になります。
インストール(≒初期設定)の時にソースコードを使用者に編集してもらうのではなく、自動で書き換えるプログラムが必要になります。
作成するプログラムは以下の様にします。
ユーザー名、パスワード、その他使用者固有データを入力し、コマンドボタンをトリガーとしてVBSとTTLのソースコードを書き換える。そして、デスクトップにショートカットを作成してアイコンの設定をする。
次回以降ソースコードを書いていきます。
以上
解析業務の自動化に向けて
こんにちはm(_ _)m
仕事の自動化にやりがいと達成感を感じるガッくんです。
今日は事務処理では無く、解析エンジニアとしての仕事の自動化を考えます。
まずは業務で使用するソフトウェアを整理してみます。
1.プリポスト(モデル作成、結果表示ソフト)
HyperWorks
2.ソルバー(計算ソフト)
MSC Nastran
NX Nastran
3.パッケージ(全部の機能のあるソフト)
Femap with NX Nastran
STAR-CCM
Ls-Dyna
4.通信ソフト
もっと使っていると思いますが、私が使ったりしているのはこんなもんですね。
では、このソフトを使ってどんな事しているのかを整理してみます。実は解析ってソフトウェアの操作方法とかは違いますが、やってることはだいたい同じです。
【静解析編】
1.図面を良く読む
2.解析モデル作成する
3.固有値解析
4.境界条件を作成する
5.静解析
6.評価をまとめる
7.プロパティ、マテリアルチェック
8.結合、集中マスチェック
9.寸法チェック
以上、作業としてはだいたい9項目程ですかね。動解析の場合は境界条件を作成する時に時間の概念が出てきたりします。
下記の作業については業界、製作対象及び会社などで特色が出ます。
1.図面を良く読む
6.評価をまとめる
図面の 書き方=読み方 はかなり苦労します。また、評価の方法も応力評価、加速度評価など様々な方法が有ります。複数の評価方法を採用する事も有ります。
下記の作業についても業界、製作対象、会社で異なってきます。取り扱う問題の差から、主流なソフトウェアが異なってきますので、操作方法はソフトウェア毎となり、多岐に渡ります。
2.解析モデル作成する
3.固有値解析
4.境界条件を作成する
5.静解析
特に下記はソフトウェアに完全に依存しますので、操作方法を覚える必要があります。
2.解析モデル作成する
4.境界条件を作成する
下記の解析作業方法も計算を実行するソフトウェアに依存しますが、解析実行するだけなので、比較的簡単です。
3.固有値解析
5.静解析
下記のチェック作業は業界、製作対象、会社による特色は少ないです。テキストデータで解析結果を出力するソルバーが多く。テキストデータを確認して下記の内容をチェックします。単純な作業ですが、チェック項目が多く、1番大変な作業です。
7.プロパティ、マテリアルチェック
8.結合、集中マスチェック
9.寸法チェック
解析業務の簡単な内容は以上です。
表1に作業の工数、頻度、自動化にかかる工数、自動化の優先度をまとめました。
表1の優先度から下記の順番で自動化を行います。
1.固有値解析
2.静解析
3.プロパティチェック
4.結合、集中荷重チェック
5.図面を良く読む
6.解析モデルを作成する
7.境界条件を作成する
8.評価をまとめる
9.寸法チェック
事務作業の自動化とは違って大変な作業になりそうです。
以上
バッチファイルで PC シャットダウンする
- 「Windowsキー」を押しながら「Rキー」を押す。
- 「notepad」と入力する。
- 「OKボタン」を押す。
- 「2秒後にシャットダウンする」コマンドの「shutdown /s /t 2」と入力する。
- メニューバーの「ファイル」をクリックする。
- プルダウンの「名前をつけて保存」をクリックする。
- 保存場所を選択する。
- ファイルの種類を「テキスト文書(*.txt)」から「すべての種類」に変更する。
- ファイル名に「ShutdownPC.bat」と入力する。
- 「保存ボタン」を押す。
事務作業の自動化
自動化・効率化のはじめ方
効率化・自動化は人生に必要です
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
背景・目的
私事ながら 2017/10/01 から職場を変えまして、慣れた仕事が無くなりました。
前の職場ではかなりの仕事を自動化していたのですが、今はまだまだ仕事のほとんどが手作業です。
なので、 1 から自動化を頑張って時間を持て余して行きたいと、あれこれ画策してます。
このブログでは効率化・自動化した事を記録していきます。
なぜ自動化・効率化をするのか
なぜ
ズバリ時間を使い尽くしたいからです。世の中、平等なものはほとんどありません。
寿命は人それぞれ違うわけですから、時間でさえ平等には与えられていません。
時間の流れる速さだけが平等です。
時間をより多くの事に使えるようになる為に効率化・自動化をします。
暮らしの時間を振り返る
あまりに日常過ぎてどんな事に何時間かかっているか気にした事が無い場合が多いんじゃ無いでしょうか?私の 1 日の行動と時間配分を表1 にまとめました。
実際、時間はカツカツです。
家が会社から遠い人はあっという間に余暇の時間が無くなり、残業が多い人は睡眠時間が削られる事が容易に想像出来ます。
残業をゼロとしだ場合の行動と時間分配を表2 にまとめました。
そんなに時間に余裕は持てません。
効率化・自動化が出来たら
どんな事が出来るかポジティブに考えてまとめてみます。家族との時間が増やせる。
恋人との時間が増やせる。
友人との時間が増やせる。
趣味の時間が増やせる。
副業が出来る。
もっと仕事が出来る。
私は資格の勉強や副業に興味を持っているので、そういった話もブログにしていきたいです。
自動化・効率化のやり方
やり方は人それぞれではありますが、簡単で効果的なのはプログラムを作る事だと思っています。
テンプレートを作る事も有効的な方法だと思います。
ただ、このブログではプログラムの作成により、効率化・自動化をしていく予定です。
動作環境紹介
私が使用している PC 環境、開発環境をまとめておきます。
もちろんこの他も必要があれば使用します。
メイン OS
Windows vista 64bitWindows 7 professional 64bit
Windows 10 64bit
メインプログラム開発環境
Excel 2002 VBEExcel 2007 VBE
Visual Studio Community 2017
WinPython 3.4.4
メインプログラム言語
VBAC#
C++
Python
コメント
プログラム言語を学ぶためのブログではなく、基本的には効率化・自動化の例を具体的にまとめていきたいと考えています。
ですが、効率化・自動化を行なっていく上でつまずいた内容や初めての取り組み等もまとめていきたいと思いますので、基本的な使い方のまとめも少し入ってくると思います。
以上