2019年9月17日火曜日

会社のパソコンが新しくなって、ブラウザーのEdgeがChromeより早く起動すると感じた - Edge起動コード(VBA・そのほか)

       
最近、勤めている会社が、ラップトップをWindows10にアップしました。
今までは、Windows7でしたので、ずいぶんと引っ張って使ったもんだ。

ただ、自宅ではすでに10を使用しており、操作感で違和感はないの。
一方、OSの7は、来年1月14日に延長サポートが終了してしまうな。

このため、この時期に移行したと思いますが、社内システムは大規模だ。
全社員のPCを刷新するとなると千台以上になるし、ソフトも入れ替え。

結構、電算関係者はビッグプロジェクトの仕事に関わってきたということ。
受け取ったPCは、デルの機種でLatitude7390とパワーアップしました。

以前より、CPの性能、メモリー、SSDがみな倍増しているのでうれしい。
サクサクと起動してくれるし、何よりもブラウザーにEdgeが加わりました。

早速つきましたが、Chromeを立ち上げるより、若干早く起動しますね。
動きも意外に機敏なので、グーグルの翻訳機能を使う際に使用します。

レスポンスが思った以上に良くて、クロームばっかりだったのとは違います。
ただ、ウインドウズ内部にIE11も隠れていて、勤怠ソフトに使われるの。
   
     
まあ、旧OSのシステムに組込んだソフトで、ブラウザーが必要ならIE11。
他方、インターネット上で情報検索をするときは、Edgeでも役立ちます。

要するに、目的別にブラウザーを使い分ければ良いだけと判断しました。
しかも、社内のメールシステムは、FireFoxから立ち上がる設定なんだ。

企業向けGメールなのに、立ち上げはどういうわけか、狐さんからでした。
以前、会社Mozila系のThunderBirdというメーラーを使っていました。

だから、その名残で、FireFoxからGメールを開くようにしているみたいね。
社員にとっては使えればいいわけで、仕事でより取り見取りのブラウザー。

そんなことを思いつつ、ところでVBAでEdgeを起動するにはどうしようか。
以前のIE11だと、外部アプリケーションで起動するオブジェクト指定だな。

 Dim WSH As Object
 Set WSH = CreateObject("Wscript.Shell")
 WSH.Run "https://www.msn.com/ja-jp", 3
 Set WSH = Nothing
End Sub

でも、Edgeは実行ファイルを伴わず、ウインドウズに組込まれています。
いろいろとネットでさがしてみましたが、基本的な起動は超自簡単です。

CreateObject("Shell.Application").ShellExecute "microsoft-edge:about:start"

でもねぇー、特定のURLを開くためのコード記述が、今一わかりません。
まあ、記述のstart部分にURLを書けばいいんだけど、””の括りが厄介。

例えば、ワークシートのセルに読み込みたいURLを書き込んだとします。
このセルの値を読み取って、ブラウザーに開かせる時、Chromeは簡単。

Dim Brwsr As Variant, cellValue As String
Set Brwsr = CreateObject("WScript.Shell")
cellValue = Worksheets(1).Cells(1, 1).Value
Brwsr.Run ("chrome.exe -url " & cellValue)

ところが、Edgeの場合、startの部分にセル値をどうやって入れ込むか。
ここにひと工夫が必要で、意外にネットで解決方法が見当たりません。

ならばと思って、必要な要素を配列化して、再結合させるアイデアだよ。
コードを書いてみましたが、もし皆さんの参考になるなら、使ってください。

Dim Brwsr As Variant, cellValue As String, Url As String
Dim arr(2) As String
Set Brwsr = CreateObject("Shell.Application")
arr(0) = "microsoft-edge:"
arr(1) = Worksheets(1).Cells(1, 1).Value
Url = Join(arr, "")
Brwsr.ShellExecute Url

注:Url = "microsoft-edge:" & Worksheets(1).Cells(1, 1).Value、と記述しても動作。

というわけで、WebBrowserのイベントコントロールは、未だIE11です。
その内、来年にはChromoumベースのEdgeが動き出すのだそうで、そうなると、Chromeのブラウザーと何ら変わりがなくなるような気もするのですが、その分、VBAからの柔軟なイベントコントロールはますます遠のいていって、VBAユーザーは、このままIE11を使い続けるしかないと思うのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



2019年9月14日土曜日

”青木 理(おさむ)”某なる妖怪”ぬらりひょん”が、跳梁跋扈するテレビって、もう正当なジャーナリズムが滅失したってことさ - 青木 理(糞ジャーナリスト)

    
この”青木 理(おさむ)”某なる御仁、見た目がテレビ画面を汚します。
不潔感が漂い、まるで詐欺・横領・略取のありそうな前科者の人相だ。

こういった顔つきですから、人を納得させる弁舌を行える余地は少ない。
だから、こねくり回し、ほぼすり替えに近いというようなコメントを行います。

まあ、共同通信出身で元ソウル特派員だったのだから洗脳されてるな。
ひょっとして、チュチェ(主体)思想に感化されていると勘ぐったりもする。

韓国の文大統領だって、この思想の信者で朝鮮労働党員と暴露だよ。
月刊「Hanada」でスクープ記事が掲載されたけど、この青木も怪しい。

だって、ソウルで日本人の女性旅行客が暴力を受けたコメントがひどい。
ニュースに値しないと切り捨てたけど、ネット動画で証拠は残されました。

      
論より証拠で火を見るより明らかだから、韓国人男性はストーカーだな。
確かに、お前みたいな韓国びいきの特派員なら、臭い物に蓋をしたか。

だから、あいつの考えるニュースに値する報道とは、一体なんなのかなあ。
どうせ、客観性に乏しい韓国マンセーというだけの記事を垂れ流すだけ。

共同通信の出身者なんて、左翼変体思想の伏魔殿に住む妖怪だろ。
輪をかけてひどかったのは、玉ねぎ男こと、民情主席秘書の擁護発言。

本当に驚くくらいスマートで、理路整然として破綻する事がないんだとさ。
完璧に答えたと称賛しますが、本当は”知らない”を何度も繰り返した。

だから、会見の発言が言った通りなら、法的責任が問われないらしい。
あくまでモラルの問題と言い切りますが、これってモラルハザードの極致。

勝手に周りが忖度してこうなったとか、結果、責任は及ばないんだって。
こう言った嘘を吐いて、正々堂々逃げ切るのが朝鮮人の正体らしい。

どうも日本人の感性から離れ過ぎで、チュチェの一味に見えて来るな。
こんな外道がテレビに蔓延っていては、それこそが末法状態でしょう。

   
この末法思想は、お釈迦様が説いた教えですが、メディアが当てはまる。
正しい教えが世で行われなくなると、教えが行われても外見だけになる。

似非修行者だけがのさばり、悟る人もない時代が到来して殺伐と化す。
そして、その次は人も世も最悪となり、正法が行なわれない末法の世。

要するに、旧来のジャーナリズムは、すでに末法の世界に入り込んだか。
一方、ユーチューブを筆頭とする新メディアは、これを覆す一筋の光明。

似非ジャーナリストを排除して、百家争鳴で事実を究明しようとします。
これって、一挙に媒体の情報チャネルが激増した感があって、面白いわ。

既に、デジタル広告費が、テレビ広告費を上回る時代が訪れたことだし。
多様なメディアが出現して、情報を統制支配する考えは、過去の遺物。

大学生のアンケートでは、テレビ局の社員よりユーチューバーを希望とか。
その理由が、オールドメディアには自由もなく、既得権益のがんじがらめ。

若者だって、青木某の胡散臭い人相の悪い奴の話なんか聞かないよ。
それより、自分で自由に考えて発言できる、ユーチューブの方が面白い。

というわけで、若者は絶対にテレビなんか見ずに自分で情報発信しよう。
マスメディアのもとだと、情報に対しては画一的で受動的であった個人が、インターネットの出現によって能動的に情報を自分自身で発信できるようになったのだし、情報に対する判断力もついて、日本を仮想的に見立てる韓国や、チュチェ思想に心を寄せる反日ジャーナリストのあぶり出しが楽にできるようになったことは、これこそ正法のよい時代が到来したと感嘆する自分がいるのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



2019年9月11日水曜日

標準モジュールをやたらめったら増やすぐらいなら、クラスモジュールで綺麗に整理して書いた方がいいかも - クラスモジュース(VBA・そのほか)

      
エクセルでVBAをいじくると、普通、コードは標準モジュールに書きます。
でも、VBエディターのタブ”挿入(I)”を見ると、クラスモジュールもあるな。

まあ、どんな時に利用すれば役立つか、これまで全く知りませんでした。
だって、今までは標準モジュールだけを設けて、コードを書きまくりました。

そんなに、複雑なプログラムを書いた分けでもないし、困ったこともない。
ただ、折にフォームコントロールボタンの追加で、モジュールが増えていく。

そのまま書き込みますが、どこにコードを書いたのか分からなくなります。
そんな時、別のモジュールにコードを移行し、不要なのは削除しました。

こうして、モジュールを十個までに収めていたのですが、ちょっと気になる。
感覚的に、プログラムが平等に水平方向に並んでいる感じがするのよ。

コールすると、別モジュールのプロシージャを呼んで実行できたりします。
つまり、プロシージャの実行を相互に連携できて実行する感じだなあ。

じゃあ、モジュールって何なのかと言えば、プログラムの整理箱みたいか。
まあ、その程度の感想にしかならないプログラムを書いていたと言うわけ。

本当は、クラスモジュールの意義を理解する前に別の目的がありました。
それは、VBAからインターネットエクスプローラーを、先ず起動させること。

次に、内容を見たら”閉じる”ボタンを押すと、次のURLに移る仕組み。
そんな、あたかもVBAが実行を待機するコードを書いてみたくなった訳。

このため、色々とサンプルコードをネットで探してみた結果、ありましたよ。
それは、”AB型の変わり者 三流プログラマー Ken3のHP”というサイト。

前々から見知ってはいましたが、今回は、タイトルに惹かれてしまったの。
”IE アプリケーションのイベントを横取りする”って、意味が目的に近いよ。

それで、書いてあったコードを読むと、クラスモジュールを利用しています。
ただ、そのコードがかなり端折っていたりして、完全起動に苦労しました。

このモジュールを使った訳ですが、問題はWithEventsのキーワードだな。
他のサイトでは、標準モジュール内は使えない設定と説明があるんだ。

基本的にクラスモジュールで、オブジェクトに対する処理や操作をします。
そうなると、クラスモジュールには、大事な役割があったということなんだ。

詳細は、そのサイトをクリックしてもらい、他に役立つ目的はないのかな。
そう考えて新たにコードを起こすと、クラスの下層にまたクラスが呼べるの。

要するに、クラスモジュールと言うのは垂直的に連携するモジュールかも。
理由は、起動するプロシージャが、クラスモジュールを変数に扱うからだ。

つまり、クラスモジュールを使うよと言う宣言(Dim)をしないと使えません。
このため、同じプロシージャを異なるクラスに書込んでも、ぶつからない。

これって住所に近くて、丁目が標準モジュールなら、クラスは番地かもね。
要するに、ちゃんと別個であると認識させてから動かすので、問題ない。

まあ、フォルダーのパスみたいな樹形図で制御されている印象がします。
ただ問題なのは、バグが発生すると、クラスモジュールを指し示すだけだ。

実行した標準モジュールのコードから示すだけなので、記述にはご注意。
というわけで、実際に作ったサンプルコードを載せるので実験して下さい。

このクラスモジュールを使うと、オブジェクト指向のプログラミングができると書いてありましたが、要するに、開発者は自分のクラスの中で自由に関数、変数を宣言できて、作ったクラスは単体で機能することが出来なくても、標準モジュールーに呼び出されて働ける、自在性のあるサブルーチン見たいな感じかもしれないと、思ったのでもありました。

※標準モジュール1と2に記述
Sub tmp()

Dim aaa As Class1
Set aaa = New Class1

aaa.tmp

MsgBox "Standard1 or 2 module : tmp procedure"

End Sub

注:Class3から昇順で標準1・2のモジュールまでメッセージが登場する。

※クラスモジュール1に記述
Sub tmp()

Dim aaa As Class2
Set aaa = New Class2
aaa.tmp

MsgBox "Class1 module : tmp procedure"

End Sub
注:メッセージボックスの表現だけ、識別でクラス番号を変えた。

※クラスモジュール2に記述
Sub tmp()

Dim aaa As Class3
Set aaa = New Class3

aaa.tmp

MsgBox "Class2 module : tmp procedure"

End Sub

※クラスモジュール3に記述
Sub tmp()

MsgBox "Class3 module : tmp procedure"

End Sub

注:すべてプロシージャと変数宣言のタイトルが同じでも起動します。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村