INSERT INTO `wpmj_posts` VALUES
(2626, 1, '2018-01-27 09:46:01', '2018-01-27 09:46:01', '前回は以下の過去記事から、ボタンひとつでPDFを印刷できるマクロとVBAができ\r\n\r\nないか試行錯誤したことについて書きました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n残念ながら自分の勉強不足のせいで上手く動作しなかったのですが、その理由は、\r\n\r\nPDFが開く読み込み時間を待てずにエクセルからPDFへSendkeysメソッドで指示を\r\n\r\n送ってしまうからではないか、と考えました。\r\n\r\n&nbsp;\r\n\r\n現実の業務では今でも結構多めのPDF印刷の指示があったりするので、何とかして\r\n\r\nこの作業を自動化できないかと考えていろいろと試行錯誤をした結果、別の方法で\r\n\r\n印刷できる方法を見つけました。今回はその方法について書いていってみます。\r\n<h2>指定のPDFを一括印刷するための3つのアイデア</h2>\r\n自分の理想としては、仕事で日々使っている表の中にあるPDFファイル名から印刷\r\n\r\nしたいいくつかをコピーして、別シートの指定の場所に貼り付けて、それでマクロ\r\n\r\nのボタンを押すとコピペしたファイル名のPDFを自動で印刷できるようにしたいと\r\n\r\n考えていました。\r\n\r\n&nbsp;\r\n\r\nそのためにインターネットでPDFを一括で印刷できる良い方法はないかとあれこれ\r\n\r\n調べていたら、いくつか良い方法を見つけました。それは以下の3つになります。\r\n<ul>\r\n 	<li>CONCAT関数</li>\r\n 	<li>フォルダの検索ボックスはOR関数を使うと一度に複数検索できる</li>\r\n 	<li>検索ボックスで表示した複数のPDFは右クリックメニューから一度に印刷できる</li>\r\n</ul>\r\n上から順番に説明していきます。\r\n<h2>CONCAT関数</h2>\r\nCONCAT関数とはエクセル2016のバージョンから導入された関数です。これがどう\r\n\r\nいう関数かというと、指定の範囲内の文字列をつなげられる関数です。\r\n\r\n&nbsp;\r\n\r\n通常違うセルにある文字列をつなげる場合、文字列内に「&amp;」を使うか、もしくは\r\n\r\nCONCATENATE関数を使うのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでA1セルに「A」、B1セルに「B」とあって、C1セルにA1セルとB1\r\n\r\nセルの文字列をつなげて表示したかったとします。\r\n\r\n&nbsp;\r\n\r\n「&amp;」を使う場合、C1セルに「=A1&amp;B1」と入れることで文字列をつなげて表示さ\r\n\r\nせることができます。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数を使う場合は、引数にひとつひとつ「A1」「B1」と入れてや\r\n\r\nらなければいけません。\r\n\r\n&nbsp;\r\n\r\n今のは1つの例で2つのセル間の文字列しか出しませんでしたが、これが10とか20、\r\n\r\nさらに50とか100個のセル間の文字列をつなげる場合、膨大な手間がかかります。\r\n\r\n&nbsp;\r\n\r\nこういった問題を解決してくれるのがCONCAT関数です。例えばA1セルからA100\r\n\r\nセルまで何らかの文字列が入っていて、それを全部つなげたいとします。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数などを使う場合であればA1セルからA100セルまで100個のセ\r\n\r\nルをいちいち引数に設定しなければいけません。要は100回の手間が必要というこ\r\n\r\nとです。\r\n\r\n&nbsp;\r\n\r\nCONCAT関数ならA1セルからA100セルまでを「範囲選択」するだけで文字列をつ\r\n\r\nなげられます。A1セルを選択してA100セルまでドラッグすればいいだけなので、\r\n\r\n2回の手間で済みます。\r\n\r\n&nbsp;\r\n\r\nちなみにエクセル2016にはCONCAT関数はあるのですが、それより前のバージョン\r\n\r\nにはありません。前のバージョンでも使いたい場合はではどうすればいいのかとい\r\n\r\nうと、「ユーザー定義関数」というものを使います。\r\n\r\n&nbsp;\r\n\r\n要は今までなかった機能をコードを通してつくってしまうということです。自分は\r\n\r\n以下のページを参考にさせていただきました。\r\n\r\n<a href="https://www.excelspeedup.com/concat2/">concat関数の使い方とExcel2013以前の古いエクセルで使う方法</a>\r\n\r\n&nbsp;\r\n\r\n参考ページにあるコードを使いたいエクセルファイルのVBEで表示される標準モジ\r\n\r\nュールにコピペすることで使えるようになります。\r\n<h2>OR関数でフォルダの検索ボックスを利用すると一度に複数のファイルを検索できる</h2>\r\nこのやり方を知ったときは、本当に目から鱗が落ちる思いでした。今までの自分で\r\n\r\nあれば、印刷したいPDFがあった場合、次のような手順をとっていました。\r\n\r\n&nbsp;\r\n\r\nPDFが入っているフォルダを開いて右上の検索ボックスに１つ１つ検索したいPDF\r\n\r\nのファイル名をコピペしていきます。それで表示されたPDFをダブルクリックして\r\n\r\n開いて印刷するという感じでした。\r\n\r\n&nbsp;\r\n\r\nしかし「OR関数」を使うと一度に複数のファイルを検索できます。例えば「A」\r\n\r\nというファイルと「B」というファイルを検索したい場合、検索ボックスに\r\n\r\n「A OR B」と入れるとAとBのファイルを一度に検索して表示させることができ\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\nここでのポイントは以下の1つ。「OR」は大文字じゃないと反応してくれません。\r\n\r\n小文字の「or」ではダメということです。\r\n<h2>右クリックメニューから一度に印刷できる</h2>\r\nこの機能も目から鱗が落ちる思いでした。通常、PDFでもエクセルファイルでも印\r\n\r\n刷する時というのは、一度ファイルを開くかと思います。\r\n\r\n&nbsp;\r\n\r\nその後PDFであれば、メニューバーのファイルを選択、表示されたドロップダウン\r\n\r\nメニューから「印刷」を選択して「印刷ダイアログボックス」を表示させます。そ\r\n\r\nれから「印刷」ボタンを押すことで印刷をすることができます。\r\n\r\n&nbsp;\r\n\r\nもしくはショートカットキーの「Ctrl+P」で印刷ダイアログボックスを表示させて\r\n\r\nから印刷ボタンを押して印刷することができるかと思いますが、どちらにしてもい\r\n\r\nくつか手順を踏まなければいけません。\r\n\r\n&nbsp;\r\n\r\n以上のように一回表示させなくても印刷できるようにしたのが右クリックメニュー\r\n\r\nからの印刷です。\r\n\r\n&nbsp;\r\n\r\n例えば、フォルダの右上の検索ボックスで印刷したいファイル名を入力してファイ\r\n\r\nルを表示させたとします。その表示されたファイルを選択して右クリックで表示さ\r\n\r\nれるメニューに「印刷」があるので、そこをクリックするだけで印刷できるという\r\n\r\nものです。\r\n\r\n&nbsp;\r\n\r\nこの機能を使えば、印刷したいファイルを毎回開かなくてもよくなります。さらに\r\n\r\nポイントが1つあります。\r\n\r\n&nbsp;\r\n\r\nそれは印刷できるファイルは1つだけではなく、最大15個まで選択して一括して印\r\n\r\n刷できるというものです。\r\n\r\n&nbsp;\r\n\r\n人によっては16個以上のファイルを一度に印刷したい場合もあるでしょう。けれど\r\n\r\nもそのような場合はwindowsのレジストリファイルを少しいじらなければならない\r\n\r\nようです。\r\n\r\n&nbsp;\r\n\r\nwindowsのレジストリはOSの機能を満たすために重要なデータが入っているので、\r\n\r\nこの部分に詳しい人以外はあまりいじらない方がいいかと思われます。\r\n<h2>今回の記事のVBAのコードとシート上でしておくべきこと</h2>\r\n以上のアイデアをVBAのコードに落とし込んだものが以下になります。\r\n<blockquote>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)\r\n\r\nSub 検索印刷()\r\n\r\nDim time As Long\r\ntime = 500\r\n\r\nSheets("検索印刷").Range("E2").Copy\r\n\r\nCreateObject("Shell.Application").Open "C:\\○○\\○○\\○○\\○○"\r\n\r\n’○の所には印刷したいファイルが入っているフォルダのパスを入れる\r\n\r\nSleep time\r\n\r\nSendKeys "^{f}"\r\n\r\nSendKeys "^{v}"\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n次にエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2623 size-full" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/検索印刷.jpg" alt="" width="669" height="385" />\r\n\r\n・シート名を「検索印刷」へ修正\r\n\r\n・「ファイル名をコピペ」の下に印刷したいファイルの名前をコピペ。\r\n\r\n・それ以外のセルに表示されている文字列は、ふきだしの中にある数式を入力。\r\n\r\n&nbsp;\r\n\r\n以上の処理からマクロを実行すると、次のような処理が実行されます。\r\n\r\n・印刷したいファイルが入っているフォルダが表示\r\n\r\n↓\r\n\r\nフォルダの右上の検索ボックスに印刷したいファイル名をつなげたものが入力され\r\n\r\nる\r\n\r\n↓\r\n\r\nフォルダ上に指定のファイルが表示される\r\n\r\n&nbsp;\r\n\r\n自分の理想としては、フォルダに表示されたファイルを全て自動で印刷できるよう\r\n\r\nにしたかったのですが、この部分で止めておきました。理由はいくつかあります。\r\n\r\n&nbsp;\r\n\r\n1つ目は、「人によってファイルによって印刷したいページが違う」からです。\r\n\r\n例えば印刷したいファイルが10個あったとします。人によっては全部「2ページ目\r\n\r\nだけ印刷したい」ということもあるでしょう。\r\n\r\n&nbsp;\r\n\r\nフォルダに表示されたファイルを全て選択して右クリックメニューから印刷を実行\r\n\r\nすると全てのファイルで全てのページが印刷されてしまいます。中には100ページ\r\n\r\nくらいのPDFファイルもあるかもしれません。\r\n\r\n&nbsp;\r\n\r\n本当は一枚だけでいいのにマクロで全て印刷できるようにしてしまうと100ページ\r\n\r\nあるファイルも全て印刷されてしまいます。ということで、印刷までの処理はマク\r\n\r\nロの中には入っていません。\r\n\r\n&nbsp;\r\n\r\n2つ目は、「ファイル自体をコピーしたい」という需要です。印刷ではなくて指定\r\n\r\nのファイルを別のフォルダにコピーだけできれば良いという人もいるかもしれませ\r\n\r\nん。自分が実際に業務上でそのような指示があったのでこの部分を思いつきました。\r\n\r\n&nbsp;\r\n\r\n今回の記事で書いた方法を使えば、1つ1つ特定のファイルをフォルダの検索ボック\r\n\r\nスにコピペして表示されたファイルをコピーして別フォルダにコピペしなくてもよ\r\n\r\nくなります。\r\n\r\n&nbsp;\r\n\r\nなぜなら一回で探したいファイルを一度にフォルダ上に表示できるので、一回でコ\r\n\r\nピペできるからです。そういった需要も考えて、今回のマクロでは印刷までの処理\r\n\r\nはあえて入れないようにしました。\r\n<h2>今回のマクロの注意点と効果</h2>\r\n今回のつくったマクロで実際の業務でも結構楽になったように感じられます。逆\r\n\r\nにこういったマクロがつくれたことで、今まで一回一回コピペしてた自分は何だっ\r\n\r\nたんだろうか・・・と思ってしまいました。\r\n\r\n&nbsp;\r\n\r\nここで今回つくったマクロについての注意点をいくつか書いておきます。簡単に\r\n\r\n説明すると万能ではなく「数に制限がある」ということです。\r\n\r\n&nbsp;\r\n\r\n今回の記事の途中でも書きましたが、右クリックメニューから印刷できる数は一度\r\n\r\nに「15個まで」です16個以上を一度に印刷しようとしても右クリックメニューに\r\n\r\nはwindowsの仕様で表示されなくなってしまいます。\r\n\r\n&nbsp;\r\n\r\nもう一つは、「検索ボックスに入れられる文字数には制限がある」ということです。\r\n\r\nMicrosoftの以下のページには最大に検索ボックスには最大259文字しか入らないと\r\n\r\nあり、必然的に検索できるファイルの数も制限されてきます。\r\n\r\n<a href="https://answers.microsoft.com/ja-jp/windows/forum/windows_10-files-winpc/windows-10/40790c49-60f4-4e38-beac-689e499c9b1c?auth=1">Windows 10　エクスプローラー検索ボックスに259文字しか入らない </a>\r\n\r\n&nbsp;\r\n\r\nしかし数値の場合だと、この倍ぐらいは検索できるので今回のマクロを使う場合は\r\n\r\nそういった点も考慮されるといいかと思います。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/02/2333">VBAで日次業務のマクロをつくって試してみた結果</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>\r\n</ul>', 'CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ', '', 'inherit', 'closed', 'closed', '', '2616-revision-v1', '', '', '2018-01-27 09:46:01', '2018-01-27 09:46:01', '', 2616, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/27/2616-revision-v1', 0, 'revision', '', 0),
(2627, 1, '2018-01-27 09:49:02', '2018-01-27 09:49:02', '', 'printer-2178753_640', '', 'inherit', 'open', 'closed', '', 'printer-2178753_640', '', '', '2018-04-29 21:23:02', '2018-04-29 21:23:02', '', 2616, 'https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/printer-2178753_640.jpg', 0, 'attachment', 'image/jpeg', 0),
(2628, 1, '2018-01-27 09:49:15', '2018-01-27 09:49:15', '<img class="alignnone  wp-image-2627" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/printer-2178753_640-300x218.jpg" alt="" width="541" height="393" />\r\n\r\n前回は以下の過去記事から、ボタンひとつでPDFを印刷できるマクロとVBAができ\r\n\r\nないか試行錯誤したことについて書きました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n残念ながら自分の勉強不足のせいで上手く動作しなかったのですが、その理由は、\r\n\r\nPDFが開く読み込み時間を待てずにエクセルからPDFへSendkeysメソッドで指示を\r\n\r\n送ってしまうからではないか、と考えました。\r\n\r\n&nbsp;\r\n\r\n現実の業務では今でも結構多めのPDF印刷の指示があったりするので、何とかして\r\n\r\nこの作業を自動化できないかと考えていろいろと試行錯誤をした結果、別の方法で\r\n\r\n印刷できる方法を見つけました。今回はその方法について書いていってみます。\r\n<h2>指定のPDFを一括印刷するための3つのアイデア</h2>\r\n自分の理想としては、仕事で日々使っている表の中にあるPDFファイル名から印刷\r\n\r\nしたいいくつかをコピーして、別シートの指定の場所に貼り付けて、それでマクロ\r\n\r\nのボタンを押すとコピペしたファイル名のPDFを自動で印刷できるようにしたいと\r\n\r\n考えていました。\r\n\r\n&nbsp;\r\n\r\nそのためにインターネットでPDFを一括で印刷できる良い方法はないかとあれこれ\r\n\r\n調べていたら、いくつか良い方法を見つけました。それは以下の3つになります。\r\n<ul>\r\n 	<li>CONCAT関数</li>\r\n 	<li>フォルダの検索ボックスはOR関数を使うと一度に複数検索できる</li>\r\n 	<li>検索ボックスで表示した複数のPDFは右クリックメニューから一度に印刷できる</li>\r\n</ul>\r\n上から順番に説明していきます。\r\n<h2>CONCAT関数</h2>\r\nCONCAT関数とはエクセル2016のバージョンから導入された関数です。これがどう\r\n\r\nいう関数かというと、指定の範囲内の文字列をつなげられる関数です。\r\n\r\n&nbsp;\r\n\r\n通常違うセルにある文字列をつなげる場合、文字列内に「&amp;」を使うか、もしくは\r\n\r\nCONCATENATE関数を使うのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでA1セルに「A」、B1セルに「B」とあって、C1セルにA1セルとB1\r\n\r\nセルの文字列をつなげて表示したかったとします。\r\n\r\n&nbsp;\r\n\r\n「&amp;」を使う場合、C1セルに「=A1&amp;B1」と入れることで文字列をつなげて表示さ\r\n\r\nせることができます。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数を使う場合は、引数にひとつひとつ「A1」「B1」と入れてや\r\n\r\nらなければいけません。\r\n\r\n&nbsp;\r\n\r\n今のは1つの例で2つのセル間の文字列しか出しませんでしたが、これが10とか20、\r\n\r\nさらに50とか100個のセル間の文字列をつなげる場合、膨大な手間がかかります。\r\n\r\n&nbsp;\r\n\r\nこういった問題を解決してくれるのがCONCAT関数です。例えばA1セルからA100\r\n\r\nセルまで何らかの文字列が入っていて、それを全部つなげたいとします。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数などを使う場合であればA1セルからA100セルまで100個のセ\r\n\r\nルをいちいち引数に設定しなければいけません。要は100回の手間が必要というこ\r\n\r\nとです。\r\n\r\n&nbsp;\r\n\r\nCONCAT関数ならA1セルからA100セルまでを「範囲選択」するだけで文字列をつ\r\n\r\nなげられます。A1セルを選択してA100セルまでドラッグすればいいだけなので、\r\n\r\n2回の手間で済みます。\r\n\r\n&nbsp;\r\n\r\nちなみにエクセル2016にはCONCAT関数はあるのですが、それより前のバージョン\r\n\r\nにはありません。前のバージョンでも使いたい場合はではどうすればいいのかとい\r\n\r\nうと、「ユーザー定義関数」というものを使います。\r\n\r\n&nbsp;\r\n\r\n要は今までなかった機能をコードを通してつくってしまうということです。自分は\r\n\r\n以下のページを参考にさせていただきました。\r\n\r\n<a href="https://www.excelspeedup.com/concat2/">concat関数の使い方とExcel2013以前の古いエクセルで使う方法</a>\r\n\r\n&nbsp;\r\n\r\n参考ページにあるコードを使いたいエクセルファイルのVBEで表示される標準モジ\r\n\r\nュールにコピペすることで使えるようになります。\r\n<h2>OR関数でフォルダの検索ボックスを利用すると一度に複数のファイルを検索できる</h2>\r\nこのやり方を知ったときは、本当に目から鱗が落ちる思いでした。今までの自分で\r\n\r\nあれば、印刷したいPDFがあった場合、次のような手順をとっていました。\r\n\r\n&nbsp;\r\n\r\nPDFが入っているフォルダを開いて右上の検索ボックスに１つ１つ検索したいPDF\r\n\r\nのファイル名をコピペしていきます。それで表示されたPDFをダブルクリックして\r\n\r\n開いて印刷するという感じでした。\r\n\r\n&nbsp;\r\n\r\nしかし「OR関数」を使うと一度に複数のファイルを検索できます。例えば「A」\r\n\r\nというファイルと「B」というファイルを検索したい場合、検索ボックスに\r\n\r\n「A OR B」と入れるとAとBのファイルを一度に検索して表示させることができ\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\nここでのポイントは以下の1つ。「OR」は大文字じゃないと反応してくれません。\r\n\r\n小文字の「or」ではダメということです。\r\n<h2>右クリックメニューから一度に印刷できる</h2>\r\nこの機能も目から鱗が落ちる思いでした。通常、PDFでもエクセルファイルでも印\r\n\r\n刷する時というのは、一度ファイルを開くかと思います。\r\n\r\n&nbsp;\r\n\r\nその後PDFであれば、メニューバーのファイルを選択、表示されたドロップダウン\r\n\r\nメニューから「印刷」を選択して「印刷ダイアログボックス」を表示させます。そ\r\n\r\nれから「印刷」ボタンを押すことで印刷をすることができます。\r\n\r\n&nbsp;\r\n\r\nもしくはショートカットキーの「Ctrl+P」で印刷ダイアログボックスを表示させて\r\n\r\nから印刷ボタンを押して印刷することができるかと思いますが、どちらにしてもい\r\n\r\nくつか手順を踏まなければいけません。\r\n\r\n&nbsp;\r\n\r\n以上のように一回表示させなくても印刷できるようにしたのが右クリックメニュー\r\n\r\nからの印刷です。\r\n\r\n&nbsp;\r\n\r\n例えば、フォルダの右上の検索ボックスで印刷したいファイル名を入力してファイ\r\n\r\nルを表示させたとします。その表示されたファイルを選択して右クリックで表示さ\r\n\r\nれるメニューに「印刷」があるので、そこをクリックするだけで印刷できるという\r\n\r\nものです。\r\n\r\n&nbsp;\r\n\r\nこの機能を使えば、印刷したいファイルを毎回開かなくてもよくなります。さらに\r\n\r\nポイントが1つあります。\r\n\r\n&nbsp;\r\n\r\nそれは印刷できるファイルは1つだけではなく、最大15個まで選択して一括して印\r\n\r\n刷できるというものです。\r\n\r\n&nbsp;\r\n\r\n人によっては16個以上のファイルを一度に印刷したい場合もあるでしょう。けれど\r\n\r\nもそのような場合はwindowsのレジストリファイルを少しいじらなければならない\r\n\r\nようです。\r\n\r\n&nbsp;\r\n\r\nwindowsのレジストリはOSの機能を満たすために重要なデータが入っているので、\r\n\r\nこの部分に詳しい人以外はあまりいじらない方がいいかと思われます。\r\n<h2>今回の記事のVBAのコードとシート上でしておくべきこと</h2>\r\n以上のアイデアをVBAのコードに落とし込んだものが以下になります。\r\n<blockquote>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)\r\n\r\nSub 検索印刷()\r\n\r\nDim time As Long\r\ntime = 500\r\n\r\nSheets("検索印刷").Range("E2").Copy\r\n\r\nCreateObject("Shell.Application").Open "C:\\○○\\○○\\○○\\○○"\r\n\r\n’○の所には印刷したいファイルが入っているフォルダのパスを入れる\r\n\r\nSleep time\r\n\r\nSendKeys "^{f}"\r\n\r\nSendKeys "^{v}"\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n次にエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2623 size-full" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/検索印刷.jpg" alt="" width="669" height="385" />\r\n\r\n・シート名を「検索印刷」へ修正\r\n\r\n・「ファイル名をコピペ」の下に印刷したいファイルの名前をコピペ。\r\n\r\n・それ以外のセルに表示されている文字列は、ふきだしの中にある数式を入力。\r\n\r\n&nbsp;\r\n\r\n以上の処理からマクロを実行すると、次のような処理が実行されます。\r\n\r\n・印刷したいファイルが入っているフォルダが表示\r\n\r\n↓\r\n\r\nフォルダの右上の検索ボックスに印刷したいファイル名をつなげたものが入力され\r\n\r\nる\r\n\r\n↓\r\n\r\nフォルダ上に指定のファイルが表示される\r\n\r\n&nbsp;\r\n\r\n自分の理想としては、フォルダに表示されたファイルを全て自動で印刷できるよう\r\n\r\nにしたかったのですが、この部分で止めておきました。理由はいくつかあります。\r\n\r\n&nbsp;\r\n\r\n1つ目は、「人によってファイルによって印刷したいページが違う」からです。\r\n\r\n例えば印刷したいファイルが10個あったとします。人によっては全部「2ページ目\r\n\r\nだけ印刷したい」ということもあるでしょう。\r\n\r\n&nbsp;\r\n\r\nフォルダに表示されたファイルを全て選択して右クリックメニューから印刷を実行\r\n\r\nすると全てのファイルで全てのページが印刷されてしまいます。中には100ページ\r\n\r\nくらいのPDFファイルもあるかもしれません。\r\n\r\n&nbsp;\r\n\r\n本当は一枚だけでいいのにマクロで全て印刷できるようにしてしまうと100ページ\r\n\r\nあるファイルも全て印刷されてしまいます。ということで、印刷までの処理はマク\r\n\r\nロの中には入っていません。\r\n\r\n&nbsp;\r\n\r\n2つ目は、「ファイル自体をコピーしたい」という需要です。印刷ではなくて指定\r\n\r\nのファイルを別のフォルダにコピーだけできれば良いという人もいるかもしれませ\r\n\r\nん。自分が実際に業務上でそのような指示があったのでこの部分を思いつきました。\r\n\r\n&nbsp;\r\n\r\n今回の記事で書いた方法を使えば、1つ1つ特定のファイルをフォルダの検索ボック\r\n\r\nスにコピペして表示されたファイルをコピーして別フォルダにコピペしなくてもよ\r\n\r\nくなります。\r\n\r\n&nbsp;\r\n\r\nなぜなら一回で探したいファイルを一度にフォルダ上に表示できるので、一回でコ\r\n\r\nピペできるからです。そういった需要も考えて、今回のマクロでは印刷までの処理\r\n\r\nはあえて入れないようにしました。\r\n<h2>今回のマクロの注意点と効果</h2>\r\n今回のつくったマクロで実際の業務でも結構楽になったように感じられます。逆\r\n\r\nにこういったマクロがつくれたことで、今まで一回一回コピペしてた自分は何だっ\r\n\r\nたんだろうか・・・と思ってしまいました。\r\n\r\n&nbsp;\r\n\r\nここで今回つくったマクロについての注意点をいくつか書いておきます。簡単に\r\n\r\n説明すると万能ではなく「数に制限がある」ということです。\r\n\r\n&nbsp;\r\n\r\n今回の記事の途中でも書きましたが、右クリックメニューから印刷できる数は一度\r\n\r\nに「15個まで」です16個以上を一度に印刷しようとしても右クリックメニューに\r\n\r\nはwindowsの仕様で表示されなくなってしまいます。\r\n\r\n&nbsp;\r\n\r\nもう一つは、「検索ボックスに入れられる文字数には制限がある」ということです。\r\n\r\nMicrosoftの以下のページには最大に検索ボックスには最大259文字しか入らないと\r\n\r\nあり、必然的に検索できるファイルの数も制限されてきます。\r\n\r\n<a href="https://answers.microsoft.com/ja-jp/windows/forum/windows_10-files-winpc/windows-10/40790c49-60f4-4e38-beac-689e499c9b1c?auth=1">Windows 10　エクスプローラー検索ボックスに259文字しか入らない </a>\r\n\r\n&nbsp;\r\n\r\nしかし数値の場合だと、この倍ぐらいは検索できるので今回のマクロを使う場合は\r\n\r\nそういった点も考慮されるといいかと思います。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/02/2333">VBAで日次業務のマクロをつくって試してみた結果</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>\r\n</ul>', 'CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ', '', 'inherit', 'closed', 'closed', '', '2616-revision-v1', '', '', '2018-01-27 09:49:15', '2018-01-27 09:49:15', '', 2616, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/27/2616-revision-v1', 0, 'revision', '', 0),
(2629, 1, '2018-01-27 10:16:39', '2018-01-27 10:16:39', '<img class="alignnone wp-image-2627" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/printer-2178753_640-300x218.jpg" alt="" width="541" height="393" />\r\n\r\n前回は以下の過去記事から、ボタンひとつでPDFを印刷できるマクロとVBAができ\r\n\r\nないか試行錯誤したことについて書きました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n残念ながら自分の勉強不足のせいで上手く動作しなかったのですが、その理由は、\r\n\r\nPDFが開く読み込み時間を待てずにエクセルからPDFへSendkeysメソッドで指示を\r\n\r\n送ってしまうからではないか、と考えました。\r\n\r\n&nbsp;\r\n\r\n現実の業務では今でも結構多めのPDF印刷の指示があったりするので、何とかして\r\n\r\nこの作業を自動化できないかと考えていろいろと試行錯誤をした結果、別の方法で\r\n\r\n印刷できる方法を見つけました。今回はその方法について書いていってみます。\r\n<h2>指定のPDFを一括印刷するための3つのアイデア</h2>\r\n自分の理想としては、仕事で日々使っている表の中にあるPDFファイル名から印刷\r\n\r\nしたいいくつかをコピーして、別シートの指定の場所に貼り付けて、それでマクロ\r\n\r\nのボタンを押すとコピペしたファイル名のPDFを自動で印刷できるようにしたいと\r\n\r\n考えていました。\r\n\r\n&nbsp;\r\n\r\nそのためにインターネットでPDFを一括で印刷できる良い方法はないかとあれこれ\r\n\r\n調べていたら、いくつか良い方法を見つけました。それは以下の3つになります。\r\n<ul>\r\n 	<li>CONCAT関数</li>\r\n 	<li>フォルダの検索ボックスはOR関数を使うと一度に複数検索できる</li>\r\n 	<li>検索ボックスで表示した複数のPDFは右クリックメニューから一度に印刷できる</li>\r\n</ul>\r\n上から順番に説明していきます。\r\n<h2>CONCAT関数</h2>\r\nCONCAT関数とはエクセル2016のバージョンから導入された関数です。これがどう\r\n\r\nいう関数かというと、指定の範囲内の文字列をつなげられる関数です。\r\n\r\n&nbsp;\r\n\r\n通常違うセルにある文字列をつなげる場合、文字列内に「&amp;」を使うか、もしくは\r\n\r\nCONCATENATE関数を使うのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでA1セルに「A」、B1セルに「B」とあって、C1セルにA1セルとB1\r\n\r\nセルの文字列をつなげて表示したかったとします。\r\n\r\n&nbsp;\r\n\r\n「&amp;」を使う場合、C1セルに「=A1&amp;B1」と入れることで文字列をつなげて表示さ\r\n\r\nせることができます。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数を使う場合は、引数にひとつひとつ「A1」「B1」と入れてや\r\n\r\nらなければいけません。\r\n\r\n&nbsp;\r\n\r\n今のは1つの例で2つのセル間の文字列しか出しませんでしたが、これが10とか20、\r\n\r\nさらに50とか100個のセル間の文字列をつなげる場合、膨大な手間がかかります。\r\n\r\n&nbsp;\r\n\r\nこういった問題を解決してくれるのがCONCAT関数です。例えばA1セルからA100\r\n\r\nセルまで何らかの文字列が入っていて、それを全部つなげたいとします。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数などを使う場合であればA1セルからA100セルまで100個のセ\r\n\r\nルをいちいち引数に設定しなければいけません。要は100回の手間が必要というこ\r\n\r\nとです。\r\n\r\n&nbsp;\r\n\r\nCONCAT関数ならA1セルからA100セルまでを「範囲選択」するだけで文字列をつ\r\n\r\nなげられます。A1セルを選択してA100セルまでドラッグすればいいだけなので、\r\n\r\n2回の手間で済みます。\r\n\r\n&nbsp;\r\n\r\nちなみにエクセル2016にはCONCAT関数はあるのですが、それより前のバージョン\r\n\r\nにはありません。前のバージョンでも使いたい場合はではどうすればいいのかとい\r\n\r\nうと、「ユーザー定義関数」というものを使います。\r\n\r\n&nbsp;\r\n\r\n要は今までなかった機能をコードを通してつくってしまうということです。自分は\r\n\r\n以下のページを参考にさせていただきました。\r\n\r\n<a href="https://www.excelspeedup.com/concat2/">concat関数の使い方とExcel2013以前の古いエクセルで使う方法</a>\r\n\r\n&nbsp;\r\n\r\n参考ページにあるコードを使いたいエクセルファイルのVBEで表示される標準モジ\r\n\r\nュールにコピペすることで使えるようになります。\r\n<h2>OR関数でフォルダの検索ボックスを利用すると一度に複数のファイルを検索できる</h2>\r\nこのやり方を知ったときは、本当に目から鱗が落ちる思いでした。今までの自分で\r\n\r\nあれば、印刷したいPDFがあった場合、次のような手順をとっていました。\r\n\r\n&nbsp;\r\n\r\nPDFが入っているフォルダを開いて右上の検索ボックスに１つ１つ検索したいPDF\r\n\r\nのファイル名をコピペしていきます。それで表示されたPDFをダブルクリックして\r\n\r\n開いて印刷するという感じでした。\r\n\r\n&nbsp;\r\n\r\nしかし「OR関数」を使うと一度に複数のファイルを検索できます。例えば「A」\r\n\r\nというファイルと「B」というファイルを検索したい場合、検索ボックスに\r\n\r\n「A OR B」と入れるとAとBのファイルを一度に検索して表示させることができ\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\nここでのポイントは以下の1つ。「OR」は大文字じゃないと反応してくれません。\r\n\r\n小文字の「or」ではダメということです。\r\n<h2>右クリックメニューから一度に印刷できる</h2>\r\nこの機能も目から鱗が落ちる思いでした。通常、PDFでもエクセルファイルでも印\r\n\r\n刷する時というのは、一度ファイルを開くかと思います。\r\n\r\n&nbsp;\r\n\r\nその後PDFであれば、メニューバーのファイルを選択、表示されたドロップダウン\r\n\r\nメニューから「印刷」を選択して「印刷ダイアログボックス」を表示させます。そ\r\n\r\nれから「印刷」ボタンを押すことで印刷をすることができます。\r\n\r\n&nbsp;\r\n\r\nもしくはショートカットキーの「Ctrl+P」で印刷ダイアログボックスを表示させて\r\n\r\nから印刷ボタンを押して印刷することができるかと思いますが、どちらにしてもい\r\n\r\nくつか手順を踏まなければいけません。\r\n\r\n&nbsp;\r\n\r\n以上のように一回表示させなくても印刷できるようにしたのが右クリックメニュー\r\n\r\nからの印刷です。\r\n\r\n&nbsp;\r\n\r\n例えば、フォルダの右上の検索ボックスで印刷したいファイル名を入力してファイ\r\n\r\nルを表示させたとします。その表示されたファイルを選択して右クリックで表示さ\r\n\r\nれるメニューに「印刷」があるので、そこをクリックするだけで印刷できるという\r\n\r\nものです。\r\n\r\n&nbsp;\r\n\r\nこの機能を使えば、印刷したいファイルを毎回開かなくてもよくなります。さらに\r\n\r\nポイントが1つあります。\r\n\r\n&nbsp;\r\n\r\nそれは印刷できるファイルは1つだけではなく、最大15個まで選択して一括して印\r\n\r\n刷できるというものです。\r\n\r\n&nbsp;\r\n\r\n人によっては16個以上のファイルを一度に印刷したい場合もあるでしょう。けれど\r\n\r\nもそのような場合はwindowsのレジストリファイルを少しいじらなければならない\r\n\r\nようです。\r\n\r\n&nbsp;\r\n\r\nwindowsのレジストリはOSの機能を満たすために重要なデータが入っているので、\r\n\r\nこの部分に詳しい人以外はあまりいじらない方がいいかと思われます。\r\n<h2>今回の記事のVBAのコードとシート上でしておくべきこと</h2>\r\n以上のアイデアをVBAのコードに落とし込んだものが以下になります。\r\n<blockquote>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)\r\n\r\nSub 検索印刷()\r\n\r\nDim time As Long\r\ntime = 500\r\n\r\nSheets("検索印刷").Range("E2").Copy\r\n\r\nCreateObject("Shell.Application").Open "C:\\○○\\○○\\○○\\○○"\r\n\r\n’○の所には印刷したいファイルが入っているフォルダのパスを入れる\r\n\r\nSleep time\r\n\r\nSendKeys "^{f}"\r\n\r\nSendKeys "^{v}"\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n次にエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2623 size-full" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/検索印刷.jpg" alt="" width="669" height="385" />\r\n\r\n・シート名を「検索印刷」へ修正\r\n\r\n・「ファイル名をコピペ」の下に印刷したいファイルの名前をコピペ。\r\n\r\n・それ以外のセルに表示されている文字列は、ふきだしの中にある数式を入力。\r\n\r\n&nbsp;\r\n\r\n以上の処理からマクロを実行すると、次のような処理が実行されます。\r\n\r\n・印刷したいファイルが入っているフォルダが表示\r\n\r\n↓\r\n\r\nフォルダの右上の検索ボックスに印刷したいファイル名をつなげたものが入力され\r\n\r\nる\r\n\r\n↓\r\n\r\nフォルダ上に指定のファイルが表示される\r\n\r\n&nbsp;\r\n\r\n自分の理想としては、フォルダに表示されたファイルを全て自動で印刷できるよう\r\n\r\nにしたかったのですが、この部分で止めておきました。理由はいくつかあります。\r\n\r\n&nbsp;\r\n\r\n1つ目は、「人によってファイルによって印刷したいページが違う」からです。\r\n\r\n例えば印刷したいファイルが10個あったとします。人によっては全部「2ページ目\r\n\r\nだけ印刷したい」ということもあるでしょう。\r\n\r\n&nbsp;\r\n\r\nフォルダに表示されたファイルを全て選択して右クリックメニューから印刷を実行\r\n\r\nすると全てのファイルで全てのページが印刷されてしまいます。中には100ページ\r\n\r\nくらいのPDFファイルもあるかもしれません。\r\n\r\n&nbsp;\r\n\r\n本当は一枚だけでいいのにマクロで全て印刷できるようにしてしまうと100ページ\r\n\r\nあるファイルも全て印刷されてしまいます。ということで、印刷までの処理はマク\r\n\r\nロの中には入っていません。\r\n\r\n&nbsp;\r\n\r\n2つ目は、「ファイル自体をコピーしたい」という需要です。印刷ではなくて指定\r\n\r\nのファイルを別のフォルダにコピーだけできれば良いという人もいるかもしれませ\r\n\r\nん。自分が実際に業務上でそのような指示があったのでこの部分を思いつきました。\r\n\r\n&nbsp;\r\n\r\n今回の記事で書いた方法を使えば、1つ1つ特定のファイルをフォルダの検索ボック\r\n\r\nスにコピペ、フォルダに表示されたファイルをコピーして別フォルダにコピペ、と\r\n\r\nいう面倒くさい処理をしなくてもよくなります。\r\n\r\n&nbsp;\r\n\r\nなぜなら一回で探したいファイルを一度にフォルダ上に表示できるので、一回でコ\r\n\r\nピペできるからです。そういった需要も考えて、今回のマクロでは印刷までの処理\r\n\r\nはあえて入れないようにしました。\r\n<h2>今回のマクロの注意点と効果</h2>\r\n今回のつくったマクロで実際の業務でも結構楽になったように感じられます。逆\r\n\r\nにこういったマクロがつくれたことで、今まで一回一回コピペしてた自分は何だっ\r\n\r\nたんだろうか・・・と思ってしまいました。\r\n\r\n&nbsp;\r\n\r\nここで今回つくったマクロについての注意点をいくつか書いておきます。簡単に\r\n\r\n説明すると万能ではなく「数に制限がある」ということです。\r\n\r\n&nbsp;\r\n\r\n今回の記事の途中でも書きましたが、右クリックメニューから印刷できる数は一度\r\n\r\nに「15個まで」です16個以上を一度に印刷しようとしても右クリックメニューに\r\n\r\nはwindowsの仕様で表示されなくなってしまいます。\r\n\r\n&nbsp;\r\n\r\nもう一つは、「検索ボックスに入れられる文字数には制限がある」ということです。\r\n\r\nMicrosoftの以下のページには最大に検索ボックスには最大259文字しか入らないと\r\n\r\nあり、必然的に検索できるファイルの数も制限されてきます。\r\n\r\n<a href="https://answers.microsoft.com/ja-jp/windows/forum/windows_10-files-winpc/windows-10/40790c49-60f4-4e38-beac-689e499c9b1c?auth=1">Windows 10　エクスプローラー検索ボックスに259文字しか入らない </a>\r\n\r\n&nbsp;\r\n\r\nしかし数値の場合だと、この倍ぐらいは検索できるので今回のマクロを使う場合は\r\n\r\nそういった点も考慮されるといいかと思います。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/02/2333">VBAで日次業務のマクロをつくって試してみた結果</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>\r\n</ul>', 'CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ', '', 'inherit', 'closed', 'closed', '', '2616-revision-v1', '', '', '2018-01-27 10:16:39', '2018-01-27 10:16:39', '', 2616, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/27/2616-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2630, 1, '2018-01-27 10:19:13', '2018-01-27 10:19:13', '<img class="alignnone wp-image-2627" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/printer-2178753_640-300x218.jpg" alt="" width="541" height="393" />\r\n\r\n前回は以下の過去記事から、ボタンひとつでPDFを印刷できるマクロとVBAができ\r\n\r\nないか試行錯誤したことについて書きました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n残念ながら自分の勉強不足のせいで上手く動作しなかったのですが、その理由は、\r\n\r\nPDFが開く読み込み時間を待てずにエクセルからPDFへSendkeysメソッドで指示を\r\n\r\n送ってしまうからではないか、と考えました。\r\n\r\n&nbsp;\r\n\r\n現実の業務では今でも結構多めのPDF印刷の指示があったりするので、何とかして\r\n\r\nこの作業を自動化できないかと考えていろいろと試行錯誤をした結果、別の方法で\r\n\r\n印刷できる方法を見つけました。今回はその方法について書いていってみます。\r\n<h2>指定のPDFを一括印刷するための3つのアイデア</h2>\r\n自分の理想としては、仕事で日々使っている表の中にあるPDFファイル名から印刷\r\n\r\nしたいいくつかをコピーして、別シートの指定の場所に貼り付けて、それでマクロ\r\n\r\nのボタンを押すとコピペしたファイル名のPDFを自動で印刷できるようにしたいと\r\n\r\n考えていました。\r\n\r\n&nbsp;\r\n\r\nそのためにインターネットでPDFを一括で印刷できる良い方法はないかとあれこれ\r\n\r\n調べていたら、いくつか良い方法を見つけました。それは以下の3つになります。\r\n<ul>\r\n 	<li>CONCAT関数</li>\r\n 	<li>フォルダの検索ボックスはOR関数を使うと一度に複数検索できる</li>\r\n 	<li>検索ボックスで表示した複数のPDFは右クリックメニューから一度に印刷できる</li>\r\n</ul>\r\n上から順番に説明していきます。\r\n<h2>CONCAT関数</h2>\r\nCONCAT関数とはエクセル2016のバージョンから導入された関数です。これがどう\r\n\r\nいう関数かというと、指定の範囲内の文字列をつなげられる関数です。\r\n\r\n&nbsp;\r\n\r\n通常違うセルにある文字列をつなげる場合、文字列内に「&amp;」を使うか、もしくは\r\n\r\nCONCATENATE関数を使うのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでA1セルに「A」、B1セルに「B」とあって、C1セルにA1セルとB1\r\n\r\nセルの文字列をつなげて表示したかったとします。\r\n\r\n&nbsp;\r\n\r\n「&amp;」を使う場合、C1セルに「=A1&amp;B1」と入れることで文字列をつなげて表示さ\r\n\r\nせることができます。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数を使う場合は、引数にひとつひとつ「A1」「B1」と入れてや\r\n\r\nらなければいけません。\r\n\r\n&nbsp;\r\n\r\n今のは1つの例で2つのセル間の文字列しか出しませんでしたが、これが10とか20、\r\n\r\nさらに50とか100個のセル間の文字列をつなげる場合、膨大な手間がかかります。\r\n\r\n&nbsp;\r\n\r\nこういった問題を解決してくれるのがCONCAT関数です。例えばA1セルからA100\r\n\r\nセルまで何らかの文字列が入っていて、それを全部つなげたいとします。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数などを使う場合であればA1セルからA100セルまで100個のセ\r\n\r\nルをいちいち引数に設定しなければいけません。要は100回の手間が必要というこ\r\n\r\nとです。\r\n\r\n&nbsp;\r\n\r\nCONCAT関数ならA1セルからA100セルまでを「範囲選択」するだけで文字列をつ\r\n\r\nなげられます。A1セルを選択してA100セルまでドラッグすればいいだけなので、\r\n\r\n2回の手間で済みます。\r\n\r\n&nbsp;\r\n\r\nちなみにエクセル2016にはCONCAT関数はあるのですが、それより前のバージョン\r\n\r\nにはありません。前のバージョンでも使いたい場合はではどうすればいいのかとい\r\n\r\nうと、「ユーザー定義関数」というものを使います。\r\n\r\n&nbsp;\r\n\r\n要は今までなかった機能をコードを通してつくってしまうということです。自分は\r\n\r\n以下のページを参考にさせていただきました。\r\n\r\n<a href="https://www.excelspeedup.com/concat2/">concat関数の使い方とExcel2013以前の古いエクセルで使う方法</a>\r\n\r\n&nbsp;\r\n\r\n参考ページにあるコードを使いたいエクセルファイルのVBEで表示される標準モジ\r\n\r\nュールにコピペすることで使えるようになります。\r\n<h2>OR関数でフォルダの検索ボックスを利用すると一度に複数のファイルを検索できる</h2>\r\nこのやり方を知ったときは、本当に目から鱗が落ちる思いでした。今までの自分で\r\n\r\nあれば、印刷したいPDFがあった場合、次のような手順をとっていました。\r\n\r\n&nbsp;\r\n\r\nPDFが入っているフォルダを開いて右上の検索ボックスに１つ１つ検索したいPDF\r\n\r\nのファイル名をコピペしていきます。それで表示されたPDFをダブルクリックして\r\n\r\n開いて印刷するという感じでした。\r\n\r\n&nbsp;\r\n\r\nしかし「OR関数」を使うと一度に複数のファイルを検索できます。例えば「A」\r\n\r\nというファイルと「B」というファイルを検索したい場合、検索ボックスに\r\n\r\n「A OR B」と入れるとAとBのファイルを一度に検索して表示させることができ\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\nここでのポイントは以下の1つ。「OR」は大文字じゃないと反応してくれません。\r\n\r\n小文字の「or」ではダメということです。\r\n<h2>右クリックメニューから一度に印刷できる</h2>\r\nこの機能も目から鱗が落ちる思いでした。通常、PDFでもエクセルファイルでも印\r\n\r\n刷する時というのは、一度ファイルを開くかと思います。\r\n\r\n&nbsp;\r\n\r\nその後PDFであれば、メニューバーのファイルを選択、表示されたドロップダウン\r\n\r\nメニューから「印刷」を選択して「印刷ダイアログボックス」を表示させます。そ\r\n\r\nれから「印刷」ボタンを押すことで印刷をすることができます。\r\n\r\n&nbsp;\r\n\r\nもしくはショートカットキーの「Ctrl+P」で印刷ダイアログボックスを表示させて\r\n\r\nから印刷ボタンを押して印刷することができるかと思いますが、どちらにしてもい\r\n\r\nくつか手順を踏まなければいけません。\r\n\r\n&nbsp;\r\n\r\n以上のように一回表示させなくても印刷できるようにしたのが右クリックメニュー\r\n\r\nからの印刷です。\r\n\r\n&nbsp;\r\n\r\n例えば、フォルダの右上の検索ボックスで印刷したいファイル名を入力してファイ\r\n\r\nルを表示させたとします。その表示されたファイルを選択して右クリックで表示さ\r\n\r\nれるメニューに「印刷」があるので、そこをクリックするだけで印刷できるという\r\n\r\nものです。\r\n\r\n&nbsp;\r\n\r\nこの機能を使えば、印刷したいファイルを毎回開かなくてもよくなります。さらに\r\n\r\nポイントが1つあります。\r\n\r\n&nbsp;\r\n\r\nそれは印刷できるファイルは1つだけではなく、最大15個まで選択して一括して印\r\n\r\n刷できるというものです。\r\n\r\n&nbsp;\r\n\r\n人によっては16個以上のファイルを一度に印刷したい場合もあるでしょう。けれど\r\n\r\nもそのような場合はwindowsのレジストリファイルを少しいじらなければならない\r\n\r\nようです。\r\n\r\n&nbsp;\r\n\r\nwindowsのレジストリはOSの機能を満たすために重要なデータが入っているので、\r\n\r\nこの部分に詳しい人以外はあまりいじらない方がいいかと思われます。\r\n<h2>今回の記事のVBAのコードとシート上でしておくべきこと</h2>\r\n以上のアイデアをVBAのコードに落とし込んだものが以下になります。\r\n<blockquote>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)\r\n\r\nSub 検索印刷()\r\n\r\nDim time As Long\r\ntime = 500\r\n\r\nSheets("検索印刷").Range("E2").Copy\r\n\r\nCreateObject("Shell.Application").Open "C:\\○○\\○○\\○○\\○○"\r\n\r\n’○の所には印刷したいファイルが入っているフォルダのパスを入れる\r\n\r\nSleep time\r\n\r\nSendKeys "^{f}"\r\n\r\nSendKeys "^{v}"\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n次にエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2623 size-full" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/検索印刷.jpg" alt="" width="669" height="385" />\r\n\r\n・シート名を「検索印刷」へ修正\r\n\r\n・「ファイル名をコピペ」の下に印刷したいファイルの名前をコピペ。\r\n\r\n・それ以外のセルに表示されている文字列は、ふきだしの中にある数式を入力。\r\n\r\n&nbsp;\r\n\r\n以上の処理からマクロを実行すると、次のような処理が実行されます。\r\n\r\n・印刷したいファイルが入っているフォルダが表示\r\n\r\n↓\r\n\r\nフォルダの右上の検索ボックスに印刷したいファイル名をつなげたものが入力され\r\n\r\nる\r\n\r\n↓\r\n\r\nフォルダ上に指定のファイルが表示される\r\n\r\n&nbsp;\r\n\r\n自分の理想としては、フォルダに表示されたファイルを全て自動で印刷できるよう\r\n\r\nにしたかったのですが、この部分で止めておきました。理由はいくつかあります。\r\n\r\n&nbsp;\r\n\r\n1つ目は、「人によってファイルによって印刷したいページが違う」からです。\r\n\r\n例えば印刷したいファイルが10個あったとします。人によっては全部「2ページ目\r\n\r\nだけ印刷したい」ということもあるでしょう。\r\n\r\n&nbsp;\r\n\r\nフォルダに表示されたファイルを全て選択して右クリックメニューから印刷を実行\r\n\r\nすると全てのファイルで全てのページが印刷されてしまいます。中には100ページ\r\n\r\nくらいのPDFファイルもあるかもしれません。\r\n\r\n&nbsp;\r\n\r\n本当は一枚だけでいいのにマクロで全て印刷できるようにしてしまうと100ページ\r\n\r\nあるファイルも全て印刷されてしまいます。ということで、印刷までの処理はマク\r\n\r\nロの中には入っていません。\r\n\r\n&nbsp;\r\n\r\n2つ目は、「ファイル自体をコピーしたい」という需要です。印刷ではなくて指定\r\n\r\nのファイルを別のフォルダにコピーだけできれば良いという人もいるかもしれませ\r\n\r\nん。自分が実際に業務上でそのような指示があったのでこの部分を思いつきました。\r\n\r\n&nbsp;\r\n\r\n今回の記事で書いた方法を使えば、1つ1つ特定のファイルをフォルダの検索ボック\r\n\r\nスにコピペ、フォルダに表示されたファイルをコピーして別フォルダにコピペ、と\r\n\r\nいう面倒くさい処理をしなくてもよくなります。\r\n\r\n&nbsp;\r\n\r\nなぜなら一回で探したいファイルを一度にフォルダ上に表示できるので、一回でコ\r\n\r\nピペできるからです。そういった需要も考えて、今回のマクロでは印刷までの処理\r\n\r\nはあえて入れないようにしました。\r\n<h2>今回のマクロの注意点と効果</h2>\r\n今回のつくったマクロで実際の業務でも結構楽になったように感じられます。逆\r\n\r\nにこういったマクロがつくれたことで、今まで一回一回コピペしてた自分は何だっ\r\n\r\nたんだろうか・・・と思ってしまいました。\r\n\r\n&nbsp;\r\n\r\nここで今回つくったマクロについての注意点をいくつか書いておきます。簡単に\r\n\r\n説明すると万能ではなく「数に制限がある」ということです。\r\n\r\n&nbsp;\r\n\r\n今回の記事の途中でも書きましたが、右クリックメニューから印刷できる数は一度\r\n\r\nに「15個まで」です。16個以上を一度に印刷しようとしても右クリックメニューに\r\n\r\n「印刷」はwindowsの仕様で表示されなくなってしまいます。\r\n\r\n&nbsp;\r\n\r\nもう一つは、「検索ボックスに入れられる文字数には制限がある」ということです。\r\n\r\nMicrosoftの以下のページには検索ボックスには最大259文字しか入らないとあり、\r\n\r\n必然的に検索できるファイルの数も制限されてきます。\r\n\r\n<a href="https://answers.microsoft.com/ja-jp/windows/forum/windows_10-files-winpc/windows-10/40790c49-60f4-4e38-beac-689e499c9b1c?auth=1">Windows 10　エクスプローラー検索ボックスに259文字しか入らない </a>\r\n\r\n&nbsp;\r\n\r\nしかし数値の場合だと、この倍ぐらいは検索できたので今回のマクロを使う場合は\r\n\r\nそういった点も考慮されるといいかと思います。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/02/2333">VBAで日次業務のマクロをつくって試してみた結果</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>\r\n</ul>', 'CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ', '', 'inherit', 'closed', 'closed', '', '2616-revision-v1', '', '', '2018-01-27 10:19:13', '2018-01-27 10:19:13', '', 2616, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/27/2616-revision-v1', 0, 'revision', '', 0),
(2631, 1, '2018-01-28 07:42:51', '2018-01-28 07:42:51', '今回の記事の2つ前に以下のような過去記事を書いています。今回は以下の過去記事の続きです。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したといった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるようにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではないかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの部分で試行錯誤した内容について書いていってみます。\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使って調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windowsなどが持っている機能のうち、外部に公開している関数などで、VBAなど他のプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できるのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIとして公開しているものがあります。そのように外部に公開している機能や関数などを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開されている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用するための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでしょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういった種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しなければならず、そのためには宣言セクションでDeclareステートメントを使う必要があります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機させるという指示が出せるか試してみます。\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったのが以下のコードになります。\r\n<pre><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</pre>\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っています。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくるということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれるまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送ってPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDFが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまでももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。自分はVBA初心者なのでまだこういったコードしか書けませんが、たぶんもっと汎用性があって便利なコードはあるはずです。\r\n\r\n&nbsp;\r\n\r\n実際インターネットでいろんなコードを見てみると、難しそうなコードをたくさん目にしますし。そのようなコードが理解できるように、自分は今後も勉強が必要だと感じました。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block;" data-ad-format="autorelaxed" data-ad-client="ca-pub-5555284323037918" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-slot="8054263157"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'publish', 'open', 'open', '', '0742', '', '', '2018-04-25 22:35:55', '2018-04-25 22:35:55', '', 0, 'https://www.chishikinosoukonoseiri.com/?p=2631', 0, 'post', '', 0),
(2632, 1, '2018-01-27 10:38:56', '2018-01-27 10:38:56', '今回の2つ前に以下のような過去記事を書いています。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-01-27 10:38:56', '2018-01-27 10:38:56', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/27/2631-revision-v1', 0, 'revision', '', 0),
(2633, 1, '2018-01-27 11:24:34', '2018-01-27 11:24:34', '<img class="alignnone wp-image-2627" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/printer-2178753_640-300x218.jpg" alt="" width="541" height="393" />\r\n\r\n前回は以下の過去記事から、ボタンひとつでPDFを印刷できるマクロとVBAができ\r\n\r\nないか試行錯誤したことについて書きました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n残念ながら自分の勉強不足のせいで上手く動作しなかったのですが、その理由は、\r\n\r\nPDFが開く読み込み時間を待てずにエクセルからPDFへSendkeysメソッドで指示を\r\n\r\n送ってしまうからではないか、と考えました。\r\n\r\n&nbsp;\r\n\r\n現実の業務では今でも結構多めのPDF印刷の指示があったりするので、何とかして\r\n\r\nこの作業を自動化できないかと考えていろいろと試行錯誤をした結果、別の方法で\r\n\r\n印刷できる方法を見つけました。今回はその方法について書いていってみます。\r\n<h2>指定のPDFを一括印刷するための3つのアイデア</h2>\r\n自分の理想としては、仕事で日々使っている表の中にあるPDFファイル名から印刷\r\n\r\nしたいいくつかをコピーして、別シートの指定の場所に貼り付けて、それでマクロ\r\n\r\nのボタンを押すとコピペしたファイル名のPDFを自動で印刷できるようにしたいと\r\n\r\n考えていました。\r\n\r\n&nbsp;\r\n\r\nそのためにインターネットでPDFを一括で印刷できる良い方法はないかとあれこれ\r\n\r\n調べていたら、いくつか良い方法を見つけました。それは以下の3つになります。\r\n<ul>\r\n 	<li>CONCAT関数</li>\r\n 	<li>フォルダの検索ボックスはOR関数を使うと一度に複数検索できる</li>\r\n 	<li>検索ボックスで表示した複数のPDFは右クリックメニューから一度に印刷できる</li>\r\n</ul>\r\n上から順番に説明していきます。\r\n<h2>CONCAT関数</h2>\r\nCONCAT関数とはエクセル2016のバージョンから導入された関数です。これがどう\r\n\r\nいう関数かというと、指定の範囲内の文字列をつなげられる関数です。\r\n\r\n&nbsp;\r\n\r\n通常違うセルにある文字列をつなげる場合、文字列内に「&amp;」を使うか、もしくは\r\n\r\nCONCATENATE関数を使うのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでA1セルに「A」、B1セルに「B」とあって、C1セルにA1セルとB1\r\n\r\nセルの文字列をつなげて表示したかったとします。\r\n\r\n&nbsp;\r\n\r\n「&amp;」を使う場合、C1セルに「=A1&amp;B1」と入れることで文字列をつなげて表示さ\r\n\r\nせることができます。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数を使う場合は、引数にひとつひとつ「A1」「B1」と入れてや\r\n\r\nらなければいけません。\r\n\r\n&nbsp;\r\n\r\n今のは1つの例で2つのセル間の文字列しか出しませんでしたが、これが10とか20、\r\n\r\nさらに50とか100個のセル間の文字列をつなげる場合、膨大な手間がかかります。\r\n\r\n&nbsp;\r\n\r\nこういった問題を解決してくれるのがCONCAT関数です。例えばA1セルからA100\r\n\r\nセルまで何らかの文字列が入っていて、それを全部つなげたいとします。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数などを使う場合であればA1セルからA100セルまで100個のセ\r\n\r\nルをいちいち引数に設定しなければいけません。要は100回の手間が必要というこ\r\n\r\nとです。\r\n\r\n&nbsp;\r\n\r\nCONCAT関数ならA1セルからA100セルまでを「範囲選択」するだけで文字列をつ\r\n\r\nなげられます。A1セルを選択してA100セルまでドラッグすればいいだけなので、\r\n\r\n2回の手間で済みます。\r\n\r\n&nbsp;\r\n\r\nちなみにエクセル2016にはCONCAT関数はあるのですが、それより前のバージョン\r\n\r\nにはありません。前のバージョンでも使いたい場合はではどうすればいいのかとい\r\n\r\nうと、「ユーザー定義関数」というものを使います。\r\n\r\n&nbsp;\r\n\r\n要は今までなかった機能をコードを通してつくってしまうということです。自分は\r\n\r\n以下のページを参考にさせていただきました。\r\n\r\n<a href="https://www.excelspeedup.com/concat2/">concat関数の使い方とExcel2013以前の古いエクセルで使う方法</a>\r\n\r\n&nbsp;\r\n\r\n参考ページにあるコードを使いたいエクセルファイルのVBEで表示される標準モジ\r\n\r\nュールにコピペすることで使えるようになります。\r\n<h2>OR関数でフォルダの検索ボックスを利用すると一度に複数のファイルを検索できる</h2>\r\nこのやり方を知ったときは、本当に目から鱗が落ちる思いでした。今までの自分で\r\n\r\nあれば、印刷したいPDFがあった場合、次のような手順をとっていました。\r\n\r\n&nbsp;\r\n\r\nPDFが入っているフォルダを開いて右上の検索ボックスに１つ１つ検索したいPDF\r\n\r\nのファイル名をコピペしていきます。それで表示されたPDFをダブルクリックして\r\n\r\n開いて印刷するという感じでした。\r\n\r\n&nbsp;\r\n\r\nしかし「OR関数」を使うと一度に複数のファイルを検索できます。例えば「A」\r\n\r\nというファイルと「B」というファイルを検索したい場合、検索ボックスに\r\n\r\n「A OR B」と入れるとAとBのファイルを一度に検索して表示させることができ\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\nここでのポイントは以下の1つ。「OR」は大文字じゃないと反応してくれません。\r\n\r\n小文字の「or」ではダメということです。\r\n\r\n<!--nextpage-->\r\n<h2>右クリックメニューから一度に印刷できる</h2>\r\nこの機能も目から鱗が落ちる思いでした。通常、PDFでもエクセルファイルでも印\r\n\r\n刷する時というのは、一度ファイルを開くかと思います。\r\n\r\n&nbsp;\r\n\r\nその後PDFであれば、メニューバーのファイルを選択、表示されたドロップダウン\r\n\r\nメニューから「印刷」を選択して「印刷ダイアログボックス」を表示させます。そ\r\n\r\nれから「印刷」ボタンを押すことで印刷をすることができます。\r\n\r\n&nbsp;\r\n\r\nもしくはショートカットキーの「Ctrl+P」で印刷ダイアログボックスを表示させて\r\n\r\nから印刷ボタンを押して印刷することができるかと思いますが、どちらにしてもい\r\n\r\nくつか手順を踏まなければいけません。\r\n\r\n&nbsp;\r\n\r\n以上のように一回表示させなくても印刷できるようにしたのが右クリックメニュー\r\n\r\nからの印刷です。\r\n\r\n&nbsp;\r\n\r\n例えば、フォルダの右上の検索ボックスで印刷したいファイル名を入力してファイ\r\n\r\nルを表示させたとします。その表示されたファイルを選択して右クリックで表示さ\r\n\r\nれるメニューに「印刷」があるので、そこをクリックするだけで印刷できるという\r\n\r\nものです。\r\n\r\n&nbsp;\r\n\r\nこの機能を使えば、印刷したいファイルを毎回開かなくてもよくなります。さらに\r\n\r\nポイントが1つあります。\r\n\r\n&nbsp;\r\n\r\nそれは印刷できるファイルは1つだけではなく、最大15個まで選択して一括して印\r\n\r\n刷できるというものです。\r\n\r\n&nbsp;\r\n\r\n人によっては16個以上のファイルを一度に印刷したい場合もあるでしょう。けれど\r\n\r\nもそのような場合はwindowsのレジストリファイルを少しいじらなければならない\r\n\r\nようです。\r\n\r\n&nbsp;\r\n\r\nwindowsのレジストリはOSの機能を満たすために重要なデータが入っているので、\r\n\r\nこの部分に詳しい人以外はあまりいじらない方がいいかと思われます。\r\n<h2>今回の記事のVBAのコードとシート上でしておくべきこと</h2>\r\n以上のアイデアをVBAのコードに落とし込んだものが以下になります。\r\n<blockquote>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)\r\n\r\nSub 検索印刷()\r\n\r\nDim time As Long\r\ntime = 500\r\n\r\nSheets("検索印刷").Range("E2").Copy\r\n\r\nCreateObject("Shell.Application").Open "C:\\○○\\○○\\○○\\○○"\r\n\r\n’○の所には印刷したいファイルが入っているフォルダのパスを入れる\r\n\r\nSleep time\r\n\r\nSendKeys "^{f}"\r\n\r\nSendKeys "^{v}"\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n次にエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2623 size-full" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/検索印刷.jpg" alt="" width="669" height="385" />\r\n\r\n・シート名を「検索印刷」へ修正\r\n\r\n・「ファイル名をコピペ」の下に印刷したいファイルの名前をコピペ。\r\n\r\n・それ以外のセルに表示されている文字列は、ふきだしの中にある数式を入力。\r\n\r\n&nbsp;\r\n\r\n以上の処理からマクロを実行すると、次のような処理が実行されます。\r\n\r\n・印刷したいファイルが入っているフォルダが表示\r\n\r\n↓\r\n\r\nフォルダの右上の検索ボックスに印刷したいファイル名をつなげたものが入力され\r\n\r\nる\r\n\r\n↓\r\n\r\nフォルダ上に指定のファイルが表示される\r\n\r\n&nbsp;\r\n\r\n自分の理想としては、フォルダに表示されたファイルを全て自動で印刷できるよう\r\n\r\nにしたかったのですが、この部分で止めておきました。理由はいくつかあります。\r\n\r\n&nbsp;\r\n\r\n1つ目は、「人によってファイルによって印刷したいページが違う」からです。\r\n\r\n例えば印刷したいファイルが10個あったとします。人によっては全部「2ページ目\r\n\r\nだけ印刷したい」ということもあるでしょう。\r\n\r\n&nbsp;\r\n\r\nフォルダに表示されたファイルを全て選択して右クリックメニューから印刷を実行\r\n\r\nすると全てのファイルで全てのページが印刷されてしまいます。中には100ページ\r\n\r\nくらいのPDFファイルもあるかもしれません。\r\n\r\n&nbsp;\r\n\r\n本当は一枚だけでいいのにマクロで全て印刷できるようにしてしまうと100ページ\r\n\r\nあるファイルも全て印刷されてしまいます。ということで、印刷までの処理はマク\r\n\r\nロの中には入っていません。\r\n\r\n&nbsp;\r\n\r\n2つ目は、「ファイル自体をコピーしたい」という需要です。印刷ではなくて指定\r\n\r\nのファイルを別のフォルダにコピーだけできれば良いという人もいるかもしれませ\r\n\r\nん。自分が実際に業務上でそのような指示があったのでこの部分を思いつきました。\r\n\r\n&nbsp;\r\n\r\n今回の記事で書いた方法を使えば、1つ1つ特定のファイルをフォルダの検索ボック\r\n\r\nスにコピペ、フォルダに表示されたファイルをコピーして別フォルダにコピペ、と\r\n\r\nいう面倒くさい処理をしなくてもよくなります。\r\n\r\n&nbsp;\r\n\r\nなぜなら一回で探したいファイルを一度にフォルダ上に表示できるので、一回でコ\r\n\r\nピペできるからです。そういった需要も考えて、今回のマクロでは印刷までの処理\r\n\r\nはあえて入れないようにしました。\r\n<h2>今回のマクロの注意点と効果</h2>\r\n今回のつくったマクロで実際の業務でも結構楽になったように感じられます。逆\r\n\r\nにこういったマクロがつくれたことで、今まで一回一回コピペしてた自分は何だっ\r\n\r\nたんだろうか・・・と思ってしまいました。\r\n\r\n&nbsp;\r\n\r\nここで今回つくったマクロについての注意点をいくつか書いておきます。簡単に\r\n\r\n説明すると万能ではなく「数に制限がある」ということです。\r\n\r\n&nbsp;\r\n\r\n今回の記事の途中でも書きましたが、右クリックメニューから印刷できる数は一度\r\n\r\nに「15個まで」です。16個以上を一度に印刷しようとしても右クリックメニューに\r\n\r\n「印刷」はwindowsの仕様で表示されなくなってしまいます。\r\n\r\n&nbsp;\r\n\r\nもう一つは、「検索ボックスに入れられる文字数には制限がある」ということです。\r\n\r\nMicrosoftの以下のページには検索ボックスには最大259文字しか入らないとあり、\r\n\r\n必然的に検索できるファイルの数も制限されてきます。\r\n\r\n<a href="https://answers.microsoft.com/ja-jp/windows/forum/windows_10-files-winpc/windows-10/40790c49-60f4-4e38-beac-689e499c9b1c?auth=1">Windows 10　エクスプローラー検索ボックスに259文字しか入らない </a>\r\n\r\n&nbsp;\r\n\r\nしかし数値の場合だと、この倍ぐらいは検索できたので今回のマクロを使う場合は\r\n\r\nそういった点も考慮されるといいかと思います。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/02/2333">VBAで日次業務のマクロをつくって試してみた結果</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>\r\n</ul>', 'CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ', '', 'inherit', 'closed', 'closed', '', '2616-revision-v1', '', '', '2018-01-27 11:24:34', '2018-01-27 11:24:34', '', 2616, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/27/2616-revision-v1', 0, 'revision', '', 0),
(2634, 1, '2018-01-27 13:54:45', '2018-01-27 13:54:45', 'ここ最近の以下の3つの過去記事から、PDFを自動で印刷できる方法を関数やフリー\r\n\r\nソフト、VBAを利用してマクロをつくったといった感じの記事を書いていきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n以上の記事に関することもそうですし、以前から考えてきたことではありましたが、\r\n\r\n人間というのは単純作業や繰り返し作業はロボットに譲って、そういった労働から\r\n\r\nは人間は解放されるべきではないか、と。\r\n\r\n&nbsp;\r\n\r\nそのためには、「人間が覚える」という発想を転換させて「いかに機械に覚えてもら\r\n\r\nうか」という発想に移行すべきではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nそして「繰り返す」という作業から「創る」という考え方、働き方に移行すべきでは\r\n\r\nないかと思います。\r\n\r\n&nbsp;\r\n\r\n今回はそのことについて以前から考えていたことを書いていってみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>単純作業、繰り返し作業は機械が代替してくれる</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>その人が創ったものは、機械が最大化してくれる</h2>\r\nこのブログでは、過去記事で「知識集約産業」について書いた時がありました。\r\n\r\n&nbsp;\r\n<h2>機械に仕事をしてもらうための知識を人間が覚える時代</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;', '人類は早く単純作業と繰り返し作業をロボットに譲って解放されるべき', '', 'draft', 'open', 'open', '', '1354', '', '', '2018-01-27 13:55:15', '2018-01-27 13:55:15', '', 0, 'https://www.chishikinosoukonoseiri.com/?p=2634', 0, 'post', '', 0),
(2635, 1, '2018-01-27 13:54:45', '2018-01-27 13:54:45', 'ここ最近の以下の3つの過去記事から、PDFを自動で印刷できる方法を関数やフリー\r\n\r\nソフト、VBAを利用してマクロをつくったといった感じの記事を書いていきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n以上の記事に関することもそうですし、以前から考えてきたことではありましたが、\r\n\r\n人間というのは単純作業や繰り返し作業はロボットに譲って、そういった労働から\r\n\r\nは人間は解放されるべきではないか、と。\r\n\r\n&nbsp;\r\n\r\nそのためには、「人間が覚える」という発想を転換させて「いかに機械に覚えてもら\r\n\r\nうか」という発想に移行すべきではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nそして「繰り返す」という作業から「創る」という考え方、働き方に移行すべきでは\r\n\r\nないかと思います。\r\n\r\n&nbsp;\r\n\r\n今回はそのことについて以前から考えていたことを書いていってみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>単純作業、繰り返し作業は機械が代替してくれる</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>その人が創ったものは、機械が最大化してくれる</h2>\r\nこのブログでは、過去記事で「知識集約産業」について書いた時がありました。\r\n\r\n&nbsp;\r\n<h2>機械に仕事をしてもらうための知識を人間が覚える時代</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;', '人類は早く単純作業と繰り返し作業をロボットに譲って解放されるべき', '', 'inherit', 'closed', 'closed', '', '2634-revision-v1', '', '', '2018-01-27 13:54:45', '2018-01-27 13:54:45', '', 2634, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/27/2634-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2636, 1, '2018-01-27 20:20:09', '2018-01-27 20:20:09', '<img class="alignnone wp-image-2627" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/printer-2178753_640-300x218.jpg" alt="" width="541" height="393" />\r\n\r\n前回は以下の過去記事から、ボタンひとつでPDFを印刷できるマクロとVBAができ\r\n\r\nないか試行錯誤したことについて書きました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n残念ながら自分の勉強不足のせいで上手く動作しなかったのですが、その理由は、\r\n\r\nPDFが開く読み込み時間を待てずにエクセルからPDFへSendkeysメソッドで指示を\r\n\r\n送ってしまうからではないか、と考えました。\r\n\r\n&nbsp;\r\n\r\n現実の業務では今でも結構多めのPDF印刷の指示があったりするので、何とかして\r\n\r\nこの作業を自動化できないかと考えていろいろと試行錯誤をした結果、別の方法で\r\n\r\n印刷できる方法を見つけました。今回はその方法について書いていってみます。\r\n<h2>指定のPDFを一括印刷するための3つのアイデア</h2>\r\n自分の理想としては、仕事で日々使っている表の中にあるPDFファイル名から印刷\r\n\r\nしたいいくつかをコピーして、別シートの指定の場所に貼り付けて、それでマクロ\r\n\r\nのボタンを押すとコピペしたファイル名のPDFを自動で印刷できるようにしたいと\r\n\r\n考えていました。\r\n\r\n&nbsp;\r\n\r\nそのためにインターネットでPDFを一括で印刷できる良い方法はないかとあれこれ\r\n\r\n調べていたら、いくつか良い方法を見つけました。それは以下の3つになります。\r\n<ul>\r\n 	<li>CONCAT関数</li>\r\n 	<li>フォルダの検索ボックスはOR関数を使うと一度に複数検索できる</li>\r\n 	<li>検索ボックスで表示した複数のPDFは右クリックメニューから一度に印刷できる</li>\r\n</ul>\r\n上から順番に説明していきます。\r\n<h2>CONCAT関数</h2>\r\nCONCAT関数とはエクセル2016のバージョンから導入された関数です。これがどう\r\n\r\nいう関数かというと、指定の範囲内の文字列をつなげられる関数です。\r\n\r\n&nbsp;\r\n\r\n通常違うセルにある文字列をつなげる場合、文字列内に「&amp;」を使うか、もしくは\r\n\r\nCONCATENATE関数を使うのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでA1セルに「A」、B1セルに「B」とあって、C1セルにA1セルとB1\r\n\r\nセルの文字列をつなげて表示したかったとします。\r\n\r\n&nbsp;\r\n\r\n「&amp;」を使う場合、C1セルに「=A1&amp;B1」と入れることで文字列をつなげて表示さ\r\n\r\nせることができます。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数を使う場合は、引数にひとつひとつ「A1」「B1」と入れてや\r\n\r\nらなければいけません。\r\n\r\n&nbsp;\r\n\r\n今のは1つの例で2つのセル間の文字列しか出しませんでしたが、これが10とか20、\r\n\r\nさらに50とか100個のセル間の文字列をつなげる場合、膨大な手間がかかります。\r\n\r\n&nbsp;\r\n\r\nこういった問題を解決してくれるのがCONCAT関数です。例えばA1セルからA100\r\n\r\nセルまで何らかの文字列が入っていて、それを全部つなげたいとします。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数などを使う場合であればA1セルからA100セルまで100個のセ\r\n\r\nルをいちいち引数に設定しなければいけません。要は100回の手間が必要というこ\r\n\r\nとです。\r\n\r\n&nbsp;\r\n\r\nCONCAT関数ならA1セルからA100セルまでを「範囲選択」するだけで文字列をつ\r\n\r\nなげられます。A1セルを選択してA100セルまでドラッグすればいいだけなので、\r\n\r\n2回の手間で済みます。\r\n\r\n&nbsp;\r\n\r\nちなみにエクセル2016にはCONCAT関数はあるのですが、それより前のバージョン\r\n\r\nにはありません。前のバージョンでも使いたい場合はではどうすればいいのかとい\r\n\r\nうと、「ユーザー定義関数」というものを使います。\r\n\r\n&nbsp;\r\n\r\n要は今までなかった機能をコードを通してつくってしまうということです。自分は\r\n\r\n以下のページを参考にさせていただきました。\r\n\r\n<a href="https://www.excelspeedup.com/concat2/">concat関数の使い方とExcel2013以前の古いエクセルで使う方法</a>\r\n\r\n&nbsp;\r\n\r\n参考ページにあるコードを使いたいエクセルファイルのVBEで表示される標準モジ\r\n\r\nュールにコピペすることで使えるようになります。\r\n<h2>OR関数でフォルダの検索ボックスを利用すると一度に複数のファイルを検索できる</h2>\r\nこのやり方を知ったときは、本当に目から鱗が落ちる思いでした。今までの自分で\r\n\r\nあれば、印刷したいPDFがあった場合、次のような手順をとっていました。\r\n\r\n&nbsp;\r\n\r\nPDFが入っているフォルダを開いて右上の検索ボックスに１つ１つ検索したいPDF\r\n\r\nのファイル名をコピペしていきます。それで表示されたPDFをダブルクリックして\r\n\r\n開いて印刷するという感じでした。\r\n\r\n&nbsp;\r\n\r\nしかし「OR関数」を使うと一度に複数のファイルを検索できます。例えば「A」\r\n\r\nというファイルと「B」というファイルを検索したい場合、検索ボックスに\r\n\r\n「A OR B」と入れるとAとBのファイルを一度に検索して表示させることができ\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\nここでのポイントは以下の1つ。「OR」は大文字じゃないと反応してくれません。\r\n\r\n小文字の「or」ではダメということです。\r\n\r\n<!--nextpage-->\r\n<h2>右クリックメニューから一度に印刷できる</h2>\r\nこの機能も目から鱗が落ちる思いでした。通常、PDFでもエクセルファイルでも印\r\n\r\n刷する時というのは、一度ファイルを開くかと思います。\r\n\r\n&nbsp;\r\n\r\nその後PDFであれば、メニューバーのファイルを選択、表示されたドロップダウン\r\n\r\nメニューから「印刷」を選択して「印刷ダイアログボックス」を表示させます。そ\r\n\r\nれから「印刷」ボタンを押すことで印刷をすることができます。\r\n\r\n&nbsp;\r\n\r\nもしくはショートカットキーの「Ctrl+P」で印刷ダイアログボックスを表示させて\r\n\r\nから印刷ボタンを押して印刷することができるかと思いますが、どちらにしてもい\r\n\r\nくつか手順を踏まなければいけません。\r\n\r\n&nbsp;\r\n\r\n以上のように一回表示させなくても印刷できるようにしたのが右クリックメニュー\r\n\r\nからの印刷です。\r\n\r\n&nbsp;\r\n\r\n例えば、フォルダの右上の検索ボックスで印刷したいファイル名を入力してファイ\r\n\r\nルを表示させたとします。その表示されたファイルを選択して右クリックで表示さ\r\n\r\nれるメニューに「印刷」があるので、そこをクリックするだけで印刷できるという\r\n\r\nものです。\r\n\r\n&nbsp;\r\n\r\nこの機能を使えば、印刷したいファイルを毎回開かなくてもよくなります。さらに\r\n\r\nポイントが1つあります。\r\n\r\n&nbsp;\r\n\r\nそれは印刷できるファイルは1つだけではなく、最大15個まで選択して一括して印\r\n\r\n刷できるというものです。\r\n\r\n&nbsp;\r\n\r\n人によっては16個以上のファイルを一度に印刷したい場合もあるでしょう。けれど\r\n\r\nもそのような場合はwindowsのレジストリファイルを少しいじらなければならない\r\n\r\nようです。\r\n\r\n&nbsp;\r\n\r\nwindowsのレジストリはOSの機能を満たすために重要なデータが入っているので、\r\n\r\nこの部分に詳しい人以外はあまりいじらない方がいいかと思われます。\r\n<h2>今回の記事のVBAのコードとシート上でしておくべきこと</h2>\r\n以上のアイデアをVBAのコードに落とし込んだものが以下になります。\r\n<blockquote>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)\r\n\r\nSub 検索印刷()\r\n\r\nDim time As Long\r\ntime = 500\r\n\r\nSheets("検索印刷").Range("E2").Copy\r\n\r\nCreateObject("Shell.Application").Open "C:\\○○\\○○\\○○\\○○"\r\n\r\n’○の所には印刷したいファイルが入っているフォルダのパスを入れる\r\n\r\nSleep time\r\n\r\nSendKeys "^{f}"\r\n\r\nSendKeys "^{v}"\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n次にエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2623 size-full" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/検索印刷.jpg" alt="" width="669" height="385" />\r\n\r\n・シート名を「検索印刷」へ修正\r\n\r\n・「ファイル名をコピペ」の下に印刷したいファイルの名前をコピペ。\r\n\r\n・それ以外のセルに表示されている文字列は、ふきだしの中にある数式を入力。\r\n\r\n&nbsp;\r\n\r\n以上の処理からマクロを実行すると、次のような処理が実行されます。\r\n\r\n・印刷したいファイルが入っているフォルダが表示\r\n\r\n↓\r\n\r\nフォルダの右上の検索ボックスに印刷したいファイル名をつなげたものが入力され\r\n\r\nる\r\n\r\n↓\r\n\r\nフォルダ上に指定のファイルが表示される\r\n\r\n&nbsp;\r\n\r\n自分の理想としては、フォルダに表示されたファイルを全て自動で印刷できるよう\r\n\r\nにしたかったのですが、この部分で止めておきました。理由はいくつかあります。\r\n\r\n&nbsp;\r\n\r\n1つ目は、「人によってファイルによって印刷したいページが違う」からです。\r\n\r\n例えば印刷したいファイルが10個あったとします。人によっては全部「2ページ目\r\n\r\nだけ印刷したい」ということもあるでしょう。\r\n\r\n&nbsp;\r\n\r\nフォルダに表示されたファイルを全て選択して右クリックメニューから印刷を実行\r\n\r\nすると全てのファイルで全てのページが印刷されてしまいます。中には100ページ\r\n\r\nくらいのPDFファイルもあるかもしれません。\r\n\r\n&nbsp;\r\n\r\n本当は一枚だけでいいのにマクロで全て印刷できるようにしてしまうと100ページ\r\n\r\nあるファイルも全て印刷されてしまいます。ということで、印刷までの処理はマク\r\n\r\nロの中には入っていません。\r\n\r\n&nbsp;\r\n\r\n2つ目は、「ファイル自体をコピーしたい」という需要です。印刷ではなくて指定\r\n\r\nのファイルを別のフォルダにコピーだけできれば良いという人もいるかもしれませ\r\n\r\nん。自分が実際に業務上でそのような指示があったのでこの部分を思いつきました。\r\n\r\n&nbsp;\r\n\r\n今回の記事で書いた方法を使えば、1つ1つ特定のファイルをフォルダの検索ボック\r\n\r\nスにコピペ、フォルダに表示されたファイルをコピーして別フォルダにコピペ、と\r\n\r\nいう面倒くさい処理をしなくてもよくなります。\r\n\r\n&nbsp;\r\n\r\nなぜなら一回で探したいファイルを一度にフォルダ上に表示できるので、一回でコ\r\n\r\nピペできるからです。そういった需要も考えて、今回のマクロでは印刷までの処理\r\n\r\nはあえて入れないようにしました。\r\n<h2>今回のマクロの注意点と効果</h2>\r\n今回のつくったマクロで実際の業務でも結構楽になったように感じられます。逆\r\n\r\nにこういったマクロがつくれたことで、今まで一回一回コピペしてた自分は何だっ\r\n\r\nたんだろうか・・・と思ってしまいました。\r\n\r\n&nbsp;\r\n\r\nここで今回つくったマクロについての注意点をいくつか書いておきます。簡単に\r\n\r\n説明すると万能ではなく「数に制限がある」ということです。\r\n\r\n&nbsp;\r\n\r\n今回の記事の途中でも書きましたが、右クリックメニューから印刷できる数は一度\r\n\r\nに「15個まで」です。16個以上を一度に印刷しようとしても右クリックメニューに\r\n\r\n「印刷」はwindowsの仕様で表示されなくなってしまいます。\r\n\r\n&nbsp;\r\n\r\nもう一つは、「検索ボックスに入れられる文字数には制限がある」ということです。\r\n\r\nMicrosoftの以下のページには検索ボックスには最大259文字しか入らないとあり、\r\n\r\n必然的に検索できるファイルの数も制限されてきます。\r\n\r\n<a href="https://answers.microsoft.com/ja-jp/windows/forum/windows_10-files-winpc/windows-10/40790c49-60f4-4e38-beac-689e499c9b1c?auth=1">Windows 10　エクスプローラー検索ボックスに259文字しか入らない </a>\r\n\r\n&nbsp;\r\n\r\nしかし数値の場合だと、この倍ぐらいは検索できたので今回のマクロを使う場合は\r\n\r\nそういった点も考慮されるといいかと思います。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/02/2333">VBAで日次業務のマクロをつくって試してみた結果</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>\r\n</ul>', 'CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ', '', 'inherit', 'closed', 'closed', '', '2616-revision-v1', '', '', '2018-01-27 20:20:09', '2018-01-27 20:20:09', '', 2616, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/27/2616-revision-v1', 0, 'revision', '', 0),
(2637, 1, '2018-01-28 06:15:28', '2018-01-28 06:15:28', '今回の2つ前に以下のような過去記事を書いています。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n\r\np.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windowsなどが\r\n\r\n持っている機能のうち、外部に公開している関数などで、VBA\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-01-28 06:15:28', '2018-01-28 06:15:28', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/28/2631-revision-v1', 0, 'revision', '', 0),
(2638, 1, '2018-01-28 06:20:24', '2018-01-28 06:20:24', '今回の2つ前に以下のような過去記事を書いています。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-01-28 06:20:24', '2018-01-28 06:20:24', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/28/2631-revision-v1', 0, 'revision', '', 0),
(2639, 1, '2018-01-28 06:25:08', '2018-01-28 06:25:08', '今回の2つ前に以下のような過去記事を書いています。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n\r\nｐ.191\r\n<blockquote>「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-01-28 06:25:08', '2018-01-28 06:25:08', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/28/2631-revision-v1', 0, 'revision', '', 0),
(2640, 1, '2018-01-28 07:42:51', '2018-01-28 07:42:51', '今回の2つ前に以下のような過去記事を書いています。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しな\r\n\r\nければならず、そのためには宣言セクションでDeclareステートメントを使う必要が\r\n\r\nあります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったの\r\n\r\nが以下のコードになります。\r\n<blockquote><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っていま\r\n\r\nす。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコ\r\n\r\nードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくる\r\n\r\nということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれる\r\n\r\nまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送っ\r\n\r\nてしまうがPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDF\r\n\r\nが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は\r\n\r\n「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまで\r\n\r\nももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-01-28 07:42:51', '2018-01-28 07:42:51', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/28/2631-revision-v1', 0, 'revision', '', 0),
(2641, 1, '2018-01-28 07:47:42', '2018-01-28 07:47:42', '', 'code-820275_640', '', 'inherit', 'open', 'closed', '', 'code-820275_640', '', '', '2018-04-25 22:35:39', '2018-04-25 22:35:39', '', 2631, 'https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/code-820275_640.jpg', 0, 'attachment', 'image/jpeg', 0),
(2642, 1, '2018-01-28 07:48:03', '2018-01-28 07:48:03', '<img class="alignnone  wp-image-2641" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/code-820275_640-300x200.jpg" alt="" width="608" height="405" />\r\n\r\n今回の2つ前に以下のような過去記事を書いています。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しな\r\n\r\nければならず、そのためには宣言セクションでDeclareステートメントを使う必要が\r\n\r\nあります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったの\r\n\r\nが以下のコードになります。\r\n<blockquote><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っていま\r\n\r\nす。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコ\r\n\r\nードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくる\r\n\r\nということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれる\r\n\r\nまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送っ\r\n\r\nてしまうがPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDF\r\n\r\nが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は\r\n\r\n「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまで\r\n\r\nももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-01-28 07:48:03', '2018-01-28 07:48:03', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/28/2631-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2643, 1, '2018-01-28 07:53:57', '2018-01-28 07:53:57', '<img class="alignnone wp-image-2641" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/code-820275_640-300x200.jpg" alt="" width="608" height="405" />\r\n\r\n今回の2つ前に以下のような過去記事を書いています。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しな\r\n\r\nければならず、そのためには宣言セクションでDeclareステートメントを使う必要が\r\n\r\nあります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったの\r\n\r\nが以下のコードになります。\r\n<blockquote><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っていま\r\n\r\nす。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコ\r\n\r\nードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくる\r\n\r\nということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれる\r\n\r\nまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送っ\r\n\r\nてPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDF\r\n\r\nが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は\r\n\r\n「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまで\r\n\r\nももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-01-28 07:53:57', '2018-01-28 07:53:57', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/28/2631-revision-v1', 0, 'revision', '', 0),
(2644, 1, '2018-01-28 07:58:05', '2018-01-28 07:58:05', '<img class="alignnone wp-image-2641" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/code-820275_640-300x200.jpg" alt="" width="608" height="405" />\r\n\r\n今回の2つ前に以下のような過去記事を書いています。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しな\r\n\r\nければならず、そのためには宣言セクションでDeclareステートメントを使う必要が\r\n\r\nあります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったの\r\n\r\nが以下のコードになります。\r\n<blockquote><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っていま\r\n\r\nす。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコ\r\n\r\nードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくる\r\n\r\nということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれる\r\n\r\nまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送っ\r\n\r\nてPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDF\r\n\r\nが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は\r\n\r\n「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまで\r\n\r\nももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。自分は\r\n\r\nVBA初心者なのでまだこういったコードしか書けませんが、たぶんもっと汎用性があ\r\n\r\nって便利なコードはあるはずです。\r\n\r\n&nbsp;\r\n\r\n実際インターネットでいろんなコードを見てみると、難しそうなコードをたくさん目\r\n\r\nにしますし。そのようなコードが理解できるように、自分は今後も勉強が必要だと感\r\n\r\nじました。\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-01-28 07:58:05', '2018-01-28 07:58:05', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/01/28/2631-revision-v1', 0, 'revision', '', 0),
(2647, 1, '2018-02-01 09:58:48', '2018-02-01 09:58:48', '<img class="alignnone wp-image-2641" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/code-820275_640-300x200.jpg" alt="" width="608" height="405" />\r\n\r\n今回の記事の2つ前に以下のような過去記事を書いています。今回は以下の過去記事\r\n\r\nの続きです。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しな\r\n\r\nければならず、そのためには宣言セクションでDeclareステートメントを使う必要が\r\n\r\nあります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったの\r\n\r\nが以下のコードになります。\r\n<blockquote><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っていま\r\n\r\nす。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコ\r\n\r\nードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくる\r\n\r\nということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれる\r\n\r\nまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送っ\r\n\r\nてPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDF\r\n\r\nが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は\r\n\r\n「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまで\r\n\r\nももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。自分は\r\n\r\nVBA初心者なのでまだこういったコードしか書けませんが、たぶんもっと汎用性があ\r\n\r\nって便利なコードはあるはずです。\r\n\r\n&nbsp;\r\n\r\n実際インターネットでいろんなコードを見てみると、難しそうなコードをたくさん目\r\n\r\nにしますし。そのようなコードが理解できるように、自分は今後も勉強が必要だと感\r\n\r\nじました。\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-02-01 09:58:48', '2018-02-01 09:58:48', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/01/2631-revision-v1', 0, 'revision', '', 0),
(2648, 1, '2018-04-25 22:35:52', '2018-04-25 22:35:52', '今回の記事の2つ前に以下のような過去記事を書いています。今回は以下の過去記事の続きです。\n\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\n\n&nbsp;\n\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したといった内容です。\n\n&nbsp;\n\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるようにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではないかということでした。\n\n&nbsp;\n\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの部分で試行錯誤した内容について書いていってみます。\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使って調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\n\n&nbsp;\n\nそれは「APIのkernel32」です\n\n&nbsp;\n\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意味でも備忘録という意味でもちょっと引用してみます。\n\n&nbsp;\n\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれています。\n<blockquote>p.191\n\nAPIとはApplication Programming Interfaceの略称です。APIは、Windowsなどが持っている機能のうち、外部に公開している関数などで、VBAなど他のプログラムから利用できます。\n\n&nbsp;\n\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できるのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIとして公開しているものがあります。そのように外部に公開している機能や関数などを「ライブラリ」と呼びます。\n\n&nbsp;\n\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開されている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれば、VBAだけでは難しい機能を実現できます。</blockquote>\n&nbsp;\n\n同様に本書においてkernel32は次のように書かれています。\n<blockquote>ｐ.191\n\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用するための宣言です。</blockquote>\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでしょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういった種類のコードがまとめられている所があるということでしょう。\n\n&nbsp;\n\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しなければならず、そのためには宣言セクションでDeclareステートメントを使う必要があります。変数の宣言に似ています。\n\n&nbsp;\n\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機させるという指示が出せるか試してみます。\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったのが以下のコードになります。\n<pre><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\n\nSub 印刷()\n\n<strong>Dim time As Long</strong>\n<strong>time = 1500</strong>\n\nDim i As Long\n\nDim buf As String\n\nOn Error Resume Next\n\nRange("F7").Select\n\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\n\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\n\nFor i = 7 To 100\n\nIf Cells(i, 2) &lt;&gt; "" Then\n\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\n\nCells(i, 6).Hyperlinks(1).Follow\n\n<strong>Sleep time</strong>\n\nSendKeys "^{p}"\n\n<strong>Sleep time</strong>\n\nSendKeys "{enter}"\n\n<strong>Sleep time</strong>\n\nSendKeys "%{F4}"\n\nEnd If\n\nNext i\n\nRange("F7:F100").Delete\n\nEnd Sub</pre>\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っています。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくるということです。\n\n&nbsp;\n\nこのSleep関数を\n<ul>\n 	<li>PDFが開かれる前</li>\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\n</ul>\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\n<h2>結果と感想</h2>\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれるまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送ってPDFが開かれていないので対応できない、という課題がありました。\n\n&nbsp;\n\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDFが開いてから指示を送れるようになりました。\n\n&nbsp;\n\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は「ちょっと時間がかかってしまう」ことだと感じています。\n\n&nbsp;\n\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまでももうちょっと何とかならないかなぁと思いました。\n\n&nbsp;\n\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。自分はVBA初心者なのでまだこういったコードしか書けませんが、たぶんもっと汎用性があって便利なコードはあるはずです。\n\n&nbsp;\n\n実際インターネットでいろんなコードを見てみると、難しそうなコードをたくさん目にしますし。そのようなコードが理解できるように、自分は今後も勉強が必要だと感じました。\n<h2>あわせて読みたい</h2>\nこんな記事も読まれています\n<ul>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-autosave-v1', '', '', '2018-04-25 22:35:52', '2018-04-25 22:35:52', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/01/2631-autosave-v1', 0, 'revision', '', 0),
(2649, 1, '2018-02-01 10:00:01', '2018-02-01 10:00:01', '<img class="alignnone wp-image-2641" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/code-820275_640-300x200.jpg" alt="" width="608" height="405" />\r\n\r\n今回の記事の2つ前に以下のような過去記事を書いています。今回は以下の過去記事\r\n\r\nの続きです。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しな\r\n\r\nければならず、そのためには宣言セクションでDeclareステートメントを使う必要が\r\n\r\nあります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったの\r\n\r\nが以下のコードになります。\r\n<blockquote><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</blockquote>\r\n&nbsp;\r\n\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っていま\r\n\r\nす。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコ\r\n\r\nードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくる\r\n\r\nということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれる\r\n\r\nまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送っ\r\n\r\nてPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDF\r\n\r\nが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は\r\n\r\n「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまで\r\n\r\nももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。自分は\r\n\r\nVBA初心者なのでまだこういったコードしか書けませんが、たぶんもっと汎用性があ\r\n\r\nって便利なコードはあるはずです。\r\n\r\n&nbsp;\r\n\r\n実際インターネットでいろんなコードを見てみると、難しそうなコードをたくさん目\r\n\r\nにしますし。そのようなコードが理解できるように、自分は今後も勉強が必要だと感\r\n\r\nじました。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-02-01 10:00:01', '2018-02-01 10:00:01', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/01/2631-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2650, 1, '2018-02-01 10:01:28', '2018-02-01 10:01:28', '<img class="alignnone wp-image-2596" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/pdf-155498_640-300x300.png" alt="" width="534" height="534" />\r\n\r\n最近は企業の「生産性」というものに注意が払われるようになってきました。要はいか\r\n\r\nに少ない労力でより多くの成果をあげるかということですが、これは個人のレベルでも\r\n\r\n業務のやり方の「改善」という形で多くの人が創意工夫してきたと思われます。\r\n\r\n&nbsp;\r\n\r\nしかし現場の方たちの生産性は日本は世界の中でトップクラスと言われていますが、本\r\n\r\n社で働いているような事務的な仕事をしている人たちの生産性は世界の国々と比較する\r\n\r\nと燦燦たる有様のようです。\r\n\r\n&nbsp;\r\n\r\n自分は経理としていくつかの会社でここまで何年か働いてきましたが、特にさぼってい\r\n\r\nたわけではなく、むしろ「どうすればもっと速くミスなくできるようになるか」を常に\r\n\r\n考えながら仕事をしてきました。\r\n\r\n&nbsp;\r\n\r\nそのような意識の中で仕事をしながら見つけたのがエクセルのVBAです。エクセルの\r\n\r\nVBAについての効果やすごさについては最近このブログでよく書いていきました。\r\n\r\n&nbsp;\r\n\r\n最近はどうすれば「VBAを使って指定のPDFを一括して印刷できるか」を考えていまし\r\n\r\nた。というのも、現在の仕事で時々上司から「○○の請求書のコピーを×月から△月ま\r\n\r\nで印刷しておいて下さい」と言われるからです。\r\n\r\n&nbsp;\r\n\r\n別に1枚や2枚だったら特に気にすることもないのですが、これが10枚や20枚になって\r\n\r\nくると結構面倒になってきます。\r\n\r\n&nbsp;\r\n\r\n今回はタイトルにもあるように、この請求書のPDFについて拙いながらも自分なりに\r\n\r\n「SendKeysメソッドとfolderfilelistでPDFを自動印刷できないか」どうか考えてみた\r\n\r\nので、そのことについて今回は書いていってみます。\r\n\r\n&nbsp;\r\n\r\n今回の記事の注意点として「できないか」と書いてあるので、自動印刷できるマクロ\r\n\r\nができたわけではありません。自動印刷するために自分がどんなことについて試行錯\r\n\r\n誤してきたかについて書かれた内容です。\r\n\r\n&nbsp;\r\n\r\nちなみに自動印刷に「近い」ことは、次の記事で書こうと思っているので、そのよう\r\n\r\nな前提で読んでいただければと思います。\r\n<h2>指定のPDFを印刷するまでの手順と背景</h2>\r\n事務的な職業をしている方でもそうでない人でもPDFを印刷したことがある人は多い\r\n\r\nでしょう。PDFを印刷する時というのは、基本的に次のような手順になるかと思いま\r\n\r\nす。ちなみにここではパソコンのデスクトップ上にPDFファイルがあると仮定します。\r\n\r\n&nbsp;\r\n\r\nまず指定のPDFのファイルをダブルクリックして開く\r\n\r\n↓\r\n\r\n開いたPDFファイルのメニューから「ファイル」を選択\r\n\r\n↓\r\n\r\nドロップダウンメニューから「印刷」を選択\r\n\r\n↓\r\n\r\n開かれた印刷ダイアログボックスから「印刷」を選択\r\n\r\n&nbsp;\r\n\r\n以上が大まかな流れかと思います。上に挙げた例はわかりやすいように非常に簡略化し\r\n\r\nました。実際の業務などでは印刷したいPDFはデスクトップ上にはなく、決まったフォ\r\n\r\nルダに格納されているのが普通かと思います。\r\n\r\n&nbsp;\r\n\r\nまた印刷するときも、その時の状況によって印刷ダイアログボックスから「どのページ\r\n\r\nにするのか」といったことや「カラーか白黒か」といった点など、いろいろと変えなけ\r\n\r\nればいけない設定が出てくる場合もあります。\r\n\r\n&nbsp;\r\n\r\n以上のような手順をエクセルのVBAで自動化できないものかと思いました。しかしPDF\r\n\r\nというと、エクセルとは違うアプリケーションになります。正確にはAdobe Acrobat\r\n\r\nReader DCというアプリケーションになるわけですが。\r\n\r\n&nbsp;\r\n\r\nもしかしたら何らかの方法があるかもしれないとインターネット上でいろいろと検索し\r\n\r\nてみました。あるにはあるのですが、どれも自分が勉強してきたレベルでは理解できな\r\n\r\nいような難しいコードです。\r\n\r\n&nbsp;\r\n\r\n例えばShellオブジェクトのShellExecuteメソッドを使えばいいと書かれていても、自分\r\n\r\nのようなVBAを勉強してから日が浅い初心者にはまだ理解するのが難しい。\r\n\r\n&nbsp;\r\n\r\nそれらのコードについて書かれたコメントや感想などを読んでみると実際難しいようで\r\n\r\nす。自分なりにVBEにコードを打ち込んでいっていろいろいじって動作させようとして\r\n\r\nもなかなか意図通りには動いてくれません。\r\n\r\n&nbsp;\r\n\r\nもっと初心者でも簡単にPDFを自動で印刷できるコードはないものでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分としては、この面倒で単調な作業をどうしても自動化したかったので粘り強く調べ\r\n\r\nてみたらもしかしたらこれはいけるんじゃないか？と思えるものがありました。\r\n\r\n&nbsp;\r\n\r\nそれがSendkeysメソッドというものです。\r\n<h2>SendKeysメソッドとは</h2>\r\nエクセルのVBAにおけるSendkeysメソッドとは、エクセルではなくエクセル以外の外\r\n\r\n部アプリケーションなどにエクセルから指示が出せるコードです。\r\n\r\n&nbsp;\r\n\r\n一般的なイメージでは、エクセルのVBAというとエクセルの機能のひとつなのでエクセ\r\n\r\nル上でしか動作させることができないと思いがちです。しかしそうではなく例えばエク\r\n\r\nセルからでもワードとかエクセル以外のアプリケーションでもエクセルから動作させる\r\n\r\nことができるのです。\r\n\r\n&nbsp;\r\n\r\n自分は最初このようなやり方があるのを知ったときは驚愕しました。「こんなやり方も\r\n\r\nあるのか！？」と。詳しい内容についてはMicroSoftが以下のようなページを掲載して\r\n\r\nいます。\r\n<ul>\r\n 	<li><strong><a href="https://msdn.microsoft.com/ja-jp/library/cc364423.aspx">SendKeysメソッド</a></strong></li>\r\n</ul>\r\n<blockquote>キーボードから入力したときのように、1 つ以上のキー ストロークをアクティブなウィンドウに送ります。\r\n<div id="code-snippet-1" class="codeSnippetContainer">\r\n<div class="codeSnippetContainerCodeContainer">\r\n<div id="CodeSnippetContainerCode_1dd13a61-a7b0-417c-8676-c8af870676c8" class="codeSnippetContainerCode" dir="ltr">\r\n<div>\r\n<pre>object.SendKeys(string)\r\n</pre>\r\n</div>\r\n</div>\r\n</div>\r\n</div>\r\n<p class="dtH4">引数</p>\r\n\r\n<dl>\r\n 	<dt><em>object</em></dt>\r\n 	<dd>WshShell<strong> </strong>オブジェクトです。</dd>\r\n 	<dt><em>string</em></dt>\r\n 	<dd>送信するキーストロークを文字列式で指定します。</dd>\r\n</dl>\r\n<p class="dtH4">解説</p>\r\nSendKeys<strong> </strong>メソッドは、オートメーション インターフェイスを持たないアプ\r\n\r\nリケーションにキーストロークを送信する場合に使用します。キーボードの\r\n\r\n文字のほとんどは単一のキーで表現されます。キーボードの文字の中には、\r\n\r\n<strong>Ctrl</strong>+<strong>Shift</strong>+<strong>Home</strong> などのように、いくつかのキーの組み合わせで表現され\r\n\r\nるものもあります。キーボードの文字を 1 つ送信するには、その文字自身\r\n\r\nを <em>string</em> 引数に指定します。たとえば、<strong>X</strong> キーを送信するには、<em>string</em> 引\r\n\r\n数に文字列 "X" を指定します。</blockquote>\r\nShellオブジェクトとかOpenステートメント といったものは初心者には難しいかもし\r\n\r\nれませんが、ショートカットキーの「Ctrl+P」などであれば難しくはないでしょう。\r\n\r\n&nbsp;\r\n\r\nそういった動作をエクセルから外部アプリケーションに指示を送れるのが、Sendkeys\r\n\r\nメソッドです。\r\n\r\n&nbsp;\r\n\r\n例えばここまでPDFを印刷する手順について書いてきました。それをキーボードだけで\r\n\r\n操作した場合どういった形になるでしょうか？それは以下のような形になります。\r\n\r\n&nbsp;\r\n\r\nPDFファイルを選択してenterを押す\r\n\r\n↓\r\n\r\nPDFファイルが画面上に表示されるので、Ctrl+Pのショートカットキーで印刷ダイアロ\r\n\r\nグボックスが開く\r\n\r\n↓\r\n\r\n印刷ダイアログボックスが開かれている状態でenterを押すと印刷が実行される\r\n\r\n↓\r\n\r\nAlt+F4でPDFファイルを閉じる\r\n\r\n&nbsp;\r\n\r\nどうでしょうか。どのページを印刷するかといった特に込み入った設定が必要なければ\r\n\r\n、マウスを操作しなくてもキーボード上のキーだけでPDFファイルを印刷することがで\r\n\r\nきます。\r\n\r\n&nbsp;\r\n\r\n自分はこのやり方をエクセルからVBAを通してPDFへ指示を送れないかを試してみまし\r\n\r\nた。\r\n\r\n<!--nextpage-->\r\n<h2>Folderfilelistとは</h2>\r\nFolderfilelistとはフリーソフトのひとつで、指定のフォルダの中にある全部のファイル\r\n\r\nまでのパスを全て抽出することができます。ちなみに以下のVectorのページからダウン\r\n\r\nロードできます。Folderfilelistの使い方の詳細は以下のページから見ていただければと\r\n\r\n思います。\r\n\r\n<a href="http://www.vector.co.jp/soft/winnt/util/se515451.html">FolderFileList-対象のフォルダの中を解析し、フォルダとファイルの一覧を確認</a>\r\n\r\n&nbsp;\r\n\r\nファイルまでのパスがどう役に立つの？今回のPDFを印刷するマクロとどう関係がある\r\n\r\nの？と思うかもしれませんが、使い方によっては本当に便利なんです。\r\n\r\n&nbsp;\r\n\r\nなぜファイルまでのパスを抽出できることが良いのかというと、コンピュータは、この\r\n\r\nパスで指定のファイルがコンピュータ上のどこにあるのか、というのを理解できるから\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\nこの機能を利用して、指定のPDFへリンクして開いて印刷できるようにしようと考えま\r\n\r\nした。\r\n<h2>ボタンひとつでPDFを印刷できるマクロのコード</h2>\r\n以上のようないくつかのアイデアをVBAを使ってコードに落とし込んだものが以下のよ\r\n\r\nうな形になります。\r\n<blockquote>Sub 印刷()\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\nSendKeys "^{p}"\r\n\r\nSendKeys "{enter}"\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</blockquote>\r\n以上のコードをエクセルの開発タブ＞Visual Basicを開いて標準モジュールに貼り付け\r\n\r\nます。それと並行してエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2611 " src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/aaaa.png" alt="" width="673" height="467" />\r\n\r\n「印刷」シートに以下の処理をする\r\n\r\n・B4セルに印刷したいファイルが入っているフォルダのパスをコピペ\r\n\r\n・B7セルにコピペしたフォルダに入っているファイルのファイル名をコピペ\r\n\r\n&nbsp;\r\n\r\n「パス」シートに以下の処理をする\r\n\r\nフリーソフトのFolderfilelistを利用して、印刷したいファイルが入っているフォルダから\r\n\r\n抽出した全てのファイルへのパスをコピペする\r\n\r\n&nbsp;\r\n\r\n以上の処理を実行後、「ボタン1」に登録した「印刷マクロ」を押すことで「印刷したい\r\n\r\nPDFファイルを自動で印刷」できるはずでした。\r\n\r\n&nbsp;\r\n\r\nしかし、ここで問題が発生します。\r\n<h2>問題点と今後の課題</h2>\r\n以上ここまで書いたやり方で「こんなやり方でもVBAでPDFを印刷できるようになりま\r\n\r\nすよ」と言えればこれほど嬉しいことはないのですが、やはり問題点もあります。\r\n\r\n&nbsp;\r\n\r\nそれは「コピペしたファイル名のファイルを全て印刷できるわけではない」という問題\r\n\r\nです。今の時点では「なぜそうなってしまうのか」というのはわかりません。\r\n\r\n&nbsp;\r\n\r\n自分の中の仮説では「読み込み時間」の問題ではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nVBAという分野には「OLEオートメーション」というやり方があります。これもエクセ\r\n\r\nル上から外部アプリケーションに対して何らかの動作をさせるための方法です。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト ExcelVBAスタンダード 』という本には次のように書\r\n\r\nかれています。\r\n<blockquote>p.188\r\n\r\nインターネットへの接続では、ページが完全に読み込まれるまでに時間が必要\r\n\r\nだからです。ページの読み込みが完了する前にInnerTextプロパティの値を取\r\n\r\n得しようとするとエラーになります。\r\n\r\n&nbsp;\r\n\r\nそこでページの読み込みが完了するまで処理を一時停止しなければなりませ\r\n\r\nん。これには、Do...Loopステートメントを使います。・・・</blockquote>\r\n&nbsp;\r\n\r\nもしかしたらこれだろうか？と思いました。エクセルからの指示が速すぎてPDFの方が\r\n\r\nついてこれていないのかも・・・。\r\n\r\n&nbsp;\r\n\r\n確かにPDFファイルをダブルクリックして画面上に完全に開かれるまでの時間とか印刷\r\n\r\nダイアログボックスが開くまでの時間、印刷を実行して印刷ダイアログボックスが閉じ\r\n\r\nるまでの時間には若干の「タイムラグ」があります。\r\n\r\n&nbsp;\r\n\r\n上記の『VBAエキスパート公式テキスト ExcelVBAスタンダード 』に書かれているコー\r\n\r\nドをマネしていろいろと試行錯誤してみましたが上手くいきません。\r\n\r\n&nbsp;\r\n\r\nしかし、どうしてもこの処理を自動化したいという想いからインターネットで何か良い\r\n\r\n方法はないかと調べていたら別の方法を発見しました。\r\n\r\n&nbsp;\r\n\r\n今回書いた記事の方法は、後日改善されることになります。そのことについては、次の\r\n\r\n次の記事で書こうかと思っています。\r\n\r\n&nbsp;\r\n\r\n今回の記事の続きです\r\n\r\n⇒<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong>\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/28/1057">2017年の心の変化と「VBA」という新しい道具を手に入れてみて</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256">今まで大したことないと思っていた仕事が今は宝の山に見える</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか', '', 'inherit', 'closed', 'closed', '', '2591-revision-v1', '', '', '2018-02-01 10:01:28', '2018-02-01 10:01:28', '', 2591, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/01/2591-revision-v1', 0, 'revision', '', 0),
(2661, 1, '2018-02-03 00:55:57', '2018-02-03 00:55:57', '<img class="alignnone wp-image-2641" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/code-820275_640-300x200.jpg" alt="" width="608" height="405" />\r\n\r\n今回の記事の2つ前に以下のような過去記事を書いています。今回は以下の過去記事\r\n\r\nの続きです。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しな\r\n\r\nければならず、そのためには宣言セクションでDeclareステートメントを使う必要が\r\n\r\nあります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったの\r\n\r\nが以下のコードになります。\r\n<pre><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</pre>\r\n&nbsp;\r\n\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っていま\r\n\r\nす。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコ\r\n\r\nードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくる\r\n\r\nということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれる\r\n\r\nまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送っ\r\n\r\nてPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDF\r\n\r\nが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は\r\n\r\n「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまで\r\n\r\nももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。自分は\r\n\r\nVBA初心者なのでまだこういったコードしか書けませんが、たぶんもっと汎用性があ\r\n\r\nって便利なコードはあるはずです。\r\n\r\n&nbsp;\r\n\r\n実際インターネットでいろんなコードを見てみると、難しそうなコードをたくさん目\r\n\r\nにしますし。そのようなコードが理解できるように、自分は今後も勉強が必要だと感\r\n\r\nじました。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-02-03 00:55:57', '2018-02-03 00:55:57', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2631-revision-v1', 0, 'revision', '', 0),
(2662, 1, '2018-02-03 00:57:04', '2018-02-03 00:57:04', '<img class="alignnone wp-image-2627" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/printer-2178753_640-300x218.jpg" alt="" width="541" height="393" />\r\n\r\n前回は以下の過去記事から、ボタンひとつでPDFを印刷できるマクロとVBAができ\r\n\r\nないか試行錯誤したことについて書きました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n</ul>\r\n&nbsp;\r\n\r\n残念ながら自分の勉強不足のせいで上手く動作しなかったのですが、その理由は、\r\n\r\nPDFが開く読み込み時間を待てずにエクセルからPDFへSendkeysメソッドで指示を\r\n\r\n送ってしまうからではないか、と考えました。\r\n\r\n&nbsp;\r\n\r\n現実の業務では今でも結構多めのPDF印刷の指示があったりするので、何とかして\r\n\r\nこの作業を自動化できないかと考えていろいろと試行錯誤をした結果、別の方法で\r\n\r\n印刷できる方法を見つけました。今回はその方法について書いていってみます。\r\n<h2>指定のPDFを一括印刷するための3つのアイデア</h2>\r\n自分の理想としては、仕事で日々使っている表の中にあるPDFファイル名から印刷\r\n\r\nしたいいくつかをコピーして、別シートの指定の場所に貼り付けて、それでマクロ\r\n\r\nのボタンを押すとコピペしたファイル名のPDFを自動で印刷できるようにしたいと\r\n\r\n考えていました。\r\n\r\n&nbsp;\r\n\r\nそのためにインターネットでPDFを一括で印刷できる良い方法はないかとあれこれ\r\n\r\n調べていたら、いくつか良い方法を見つけました。それは以下の3つになります。\r\n<ul>\r\n 	<li>CONCAT関数</li>\r\n 	<li>フォルダの検索ボックスはOR関数を使うと一度に複数検索できる</li>\r\n 	<li>検索ボックスで表示した複数のPDFは右クリックメニューから一度に印刷できる</li>\r\n</ul>\r\n上から順番に説明していきます。\r\n<h2>CONCAT関数</h2>\r\nCONCAT関数とはエクセル2016のバージョンから導入された関数です。これがどう\r\n\r\nいう関数かというと、指定の範囲内の文字列をつなげられる関数です。\r\n\r\n&nbsp;\r\n\r\n通常違うセルにある文字列をつなげる場合、文字列内に「&amp;」を使うか、もしくは\r\n\r\nCONCATENATE関数を使うのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでA1セルに「A」、B1セルに「B」とあって、C1セルにA1セルとB1\r\n\r\nセルの文字列をつなげて表示したかったとします。\r\n\r\n&nbsp;\r\n\r\n「&amp;」を使う場合、C1セルに「=A1&amp;B1」と入れることで文字列をつなげて表示さ\r\n\r\nせることができます。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数を使う場合は、引数にひとつひとつ「A1」「B1」と入れてや\r\n\r\nらなければいけません。\r\n\r\n&nbsp;\r\n\r\n今のは1つの例で2つのセル間の文字列しか出しませんでしたが、これが10とか20、\r\n\r\nさらに50とか100個のセル間の文字列をつなげる場合、膨大な手間がかかります。\r\n\r\n&nbsp;\r\n\r\nこういった問題を解決してくれるのがCONCAT関数です。例えばA1セルからA100\r\n\r\nセルまで何らかの文字列が入っていて、それを全部つなげたいとします。\r\n\r\n&nbsp;\r\n\r\nCONCATENATE関数などを使う場合であればA1セルからA100セルまで100個のセ\r\n\r\nルをいちいち引数に設定しなければいけません。要は100回の手間が必要というこ\r\n\r\nとです。\r\n\r\n&nbsp;\r\n\r\nCONCAT関数ならA1セルからA100セルまでを「範囲選択」するだけで文字列をつ\r\n\r\nなげられます。A1セルを選択してA100セルまでドラッグすればいいだけなので、\r\n\r\n2回の手間で済みます。\r\n\r\n&nbsp;\r\n\r\nちなみにエクセル2016にはCONCAT関数はあるのですが、それより前のバージョン\r\n\r\nにはありません。前のバージョンでも使いたい場合はではどうすればいいのかとい\r\n\r\nうと、「ユーザー定義関数」というものを使います。\r\n\r\n&nbsp;\r\n\r\n要は今までなかった機能をコードを通してつくってしまうということです。自分は\r\n\r\n以下のページを参考にさせていただきました。\r\n\r\n<a href="https://www.excelspeedup.com/concat2/">concat関数の使い方とExcel2013以前の古いエクセルで使う方法</a>\r\n\r\n&nbsp;\r\n\r\n参考ページにあるコードを使いたいエクセルファイルのVBEで表示される標準モジ\r\n\r\nュールにコピペすることで使えるようになります。\r\n<h2>OR関数でフォルダの検索ボックスを利用すると一度に複数のファイルを検索できる</h2>\r\nこのやり方を知ったときは、本当に目から鱗が落ちる思いでした。今までの自分で\r\n\r\nあれば、印刷したいPDFがあった場合、次のような手順をとっていました。\r\n\r\n&nbsp;\r\n\r\nPDFが入っているフォルダを開いて右上の検索ボックスに１つ１つ検索したいPDF\r\n\r\nのファイル名をコピペしていきます。それで表示されたPDFをダブルクリックして\r\n\r\n開いて印刷するという感じでした。\r\n\r\n&nbsp;\r\n\r\nしかし「OR関数」を使うと一度に複数のファイルを検索できます。例えば「A」\r\n\r\nというファイルと「B」というファイルを検索したい場合、検索ボックスに\r\n\r\n「A OR B」と入れるとAとBのファイルを一度に検索して表示させることができ\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\nここでのポイントは以下の1つ。「OR」は大文字じゃないと反応してくれません。\r\n\r\n小文字の「or」ではダメということです。\r\n\r\n<!--nextpage-->\r\n<h2>右クリックメニューから一度に印刷できる</h2>\r\nこの機能も目から鱗が落ちる思いでした。通常、PDFでもエクセルファイルでも印\r\n\r\n刷する時というのは、一度ファイルを開くかと思います。\r\n\r\n&nbsp;\r\n\r\nその後PDFであれば、メニューバーのファイルを選択、表示されたドロップダウン\r\n\r\nメニューから「印刷」を選択して「印刷ダイアログボックス」を表示させます。そ\r\n\r\nれから「印刷」ボタンを押すことで印刷をすることができます。\r\n\r\n&nbsp;\r\n\r\nもしくはショートカットキーの「Ctrl+P」で印刷ダイアログボックスを表示させて\r\n\r\nから印刷ボタンを押して印刷することができるかと思いますが、どちらにしてもい\r\n\r\nくつか手順を踏まなければいけません。\r\n\r\n&nbsp;\r\n\r\n以上のように一回表示させなくても印刷できるようにしたのが右クリックメニュー\r\n\r\nからの印刷です。\r\n\r\n&nbsp;\r\n\r\n例えば、フォルダの右上の検索ボックスで印刷したいファイル名を入力してファイ\r\n\r\nルを表示させたとします。その表示されたファイルを選択して右クリックで表示さ\r\n\r\nれるメニューに「印刷」があるので、そこをクリックするだけで印刷できるという\r\n\r\nものです。\r\n\r\n&nbsp;\r\n\r\nこの機能を使えば、印刷したいファイルを毎回開かなくてもよくなります。さらに\r\n\r\nポイントが1つあります。\r\n\r\n&nbsp;\r\n\r\nそれは印刷できるファイルは1つだけではなく、最大15個まで選択して一括して印\r\n\r\n刷できるというものです。\r\n\r\n&nbsp;\r\n\r\n人によっては16個以上のファイルを一度に印刷したい場合もあるでしょう。けれど\r\n\r\nもそのような場合はwindowsのレジストリファイルを少しいじらなければならない\r\n\r\nようです。\r\n\r\n&nbsp;\r\n\r\nwindowsのレジストリはOSの機能を満たすために重要なデータが入っているので、\r\n\r\nこの部分に詳しい人以外はあまりいじらない方がいいかと思われます。\r\n<h2>今回の記事のVBAのコードとシート上でしておくべきこと</h2>\r\n以上のアイデアをVBAのコードに落とし込んだものが以下になります。\r\n<pre>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)\r\n\r\nSub 検索印刷()\r\n\r\nDim time As Long\r\ntime = 500\r\n\r\nSheets("検索印刷").Range("E2").Copy\r\n\r\nCreateObject("Shell.Application").Open "C:\\○○\\○○\\○○\\○○"\r\n\r\n’○の所には印刷したいファイルが入っているフォルダのパスを入れる\r\n\r\nSleep time\r\n\r\nSendKeys "^{f}"\r\n\r\nSendKeys "^{v}"\r\n\r\nEnd Sub</pre>\r\n&nbsp;\r\n\r\n次にエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2623 size-full" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/検索印刷.jpg" alt="" width="669" height="385" />\r\n\r\n・シート名を「検索印刷」へ修正\r\n\r\n・「ファイル名をコピペ」の下に印刷したいファイルの名前をコピペ。\r\n\r\n・それ以外のセルに表示されている文字列は、ふきだしの中にある数式を入力。\r\n\r\n&nbsp;\r\n\r\n以上の処理からマクロを実行すると、次のような処理が実行されます。\r\n\r\n・印刷したいファイルが入っているフォルダが表示\r\n\r\n↓\r\n\r\nフォルダの右上の検索ボックスに印刷したいファイル名をつなげたものが入力され\r\n\r\nる\r\n\r\n↓\r\n\r\nフォルダ上に指定のファイルが表示される\r\n\r\n&nbsp;\r\n\r\n自分の理想としては、フォルダに表示されたファイルを全て自動で印刷できるよう\r\n\r\nにしたかったのですが、この部分で止めておきました。理由はいくつかあります。\r\n\r\n&nbsp;\r\n\r\n1つ目は、「人によってファイルによって印刷したいページが違う」からです。\r\n\r\n例えば印刷したいファイルが10個あったとします。人によっては全部「2ページ目\r\n\r\nだけ印刷したい」ということもあるでしょう。\r\n\r\n&nbsp;\r\n\r\nフォルダに表示されたファイルを全て選択して右クリックメニューから印刷を実行\r\n\r\nすると全てのファイルで全てのページが印刷されてしまいます。中には100ページ\r\n\r\nくらいのPDFファイルもあるかもしれません。\r\n\r\n&nbsp;\r\n\r\n本当は一枚だけでいいのにマクロで全て印刷できるようにしてしまうと100ページ\r\n\r\nあるファイルも全て印刷されてしまいます。ということで、印刷までの処理はマク\r\n\r\nロの中には入っていません。\r\n\r\n&nbsp;\r\n\r\n2つ目は、「ファイル自体をコピーしたい」という需要です。印刷ではなくて指定\r\n\r\nのファイルを別のフォルダにコピーだけできれば良いという人もいるかもしれませ\r\n\r\nん。自分が実際に業務上でそのような指示があったのでこの部分を思いつきました。\r\n\r\n&nbsp;\r\n\r\n今回の記事で書いた方法を使えば、1つ1つ特定のファイルをフォルダの検索ボック\r\n\r\nスにコピペ、フォルダに表示されたファイルをコピーして別フォルダにコピペ、と\r\n\r\nいう面倒くさい処理をしなくてもよくなります。\r\n\r\n&nbsp;\r\n\r\nなぜなら一回で探したいファイルを一度にフォルダ上に表示できるので、一回でコ\r\n\r\nピペできるからです。そういった需要も考えて、今回のマクロでは印刷までの処理\r\n\r\nはあえて入れないようにしました。\r\n<h2>今回のマクロの注意点と効果</h2>\r\n今回のつくったマクロで実際の業務でも結構楽になったように感じられます。逆\r\n\r\nにこういったマクロがつくれたことで、今まで一回一回コピペしてた自分は何だっ\r\n\r\nたんだろうか・・・と思ってしまいました。\r\n\r\n&nbsp;\r\n\r\nここで今回つくったマクロについての注意点をいくつか書いておきます。簡単に\r\n\r\n説明すると万能ではなく「数に制限がある」ということです。\r\n\r\n&nbsp;\r\n\r\n今回の記事の途中でも書きましたが、右クリックメニューから印刷できる数は一度\r\n\r\nに「15個まで」です。16個以上を一度に印刷しようとしても右クリックメニューに\r\n\r\n「印刷」はwindowsの仕様で表示されなくなってしまいます。\r\n\r\n&nbsp;\r\n\r\nもう一つは、「検索ボックスに入れられる文字数には制限がある」ということです。\r\n\r\nMicrosoftの以下のページには検索ボックスには最大259文字しか入らないとあり、\r\n\r\n必然的に検索できるファイルの数も制限されてきます。\r\n\r\n<a href="https://answers.microsoft.com/ja-jp/windows/forum/windows_10-files-winpc/windows-10/40790c49-60f4-4e38-beac-689e499c9b1c?auth=1">Windows 10　エクスプローラー検索ボックスに259文字しか入らない </a>\r\n\r\n&nbsp;\r\n\r\nしかし数値の場合だと、この倍ぐらいは検索できたので今回のマクロを使う場合は\r\n\r\nそういった点も考慮されるといいかと思います。\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/02/2333">VBAで日次業務のマクロをつくって試してみた結果</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>\r\n</ul>', 'CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ', '', 'inherit', 'closed', 'closed', '', '2616-revision-v1', '', '', '2018-02-03 00:57:04', '2018-02-03 00:57:04', '', 2616, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2616-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2663, 1, '2018-02-03 00:58:27', '2018-02-03 00:58:27', '<img class="alignnone wp-image-2596" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/pdf-155498_640-300x300.png" alt="" width="534" height="534" />\r\n\r\n最近は企業の「生産性」というものに注意が払われるようになってきました。要はいか\r\n\r\nに少ない労力でより多くの成果をあげるかということですが、これは個人のレベルでも\r\n\r\n業務のやり方の「改善」という形で多くの人が創意工夫してきたと思われます。\r\n\r\n&nbsp;\r\n\r\nしかし現場の方たちの生産性は日本は世界の中でトップクラスと言われていますが、本\r\n\r\n社で働いているような事務的な仕事をしている人たちの生産性は世界の国々と比較する\r\n\r\nと燦燦たる有様のようです。\r\n\r\n&nbsp;\r\n\r\n自分は経理としていくつかの会社でここまで何年か働いてきましたが、特にさぼってい\r\n\r\nたわけではなく、むしろ「どうすればもっと速くミスなくできるようになるか」を常に\r\n\r\n考えながら仕事をしてきました。\r\n\r\n&nbsp;\r\n\r\nそのような意識の中で仕事をしながら見つけたのがエクセルのVBAです。エクセルの\r\n\r\nVBAについての効果やすごさについては最近このブログでよく書いていきました。\r\n\r\n&nbsp;\r\n\r\n最近はどうすれば「VBAを使って指定のPDFを一括して印刷できるか」を考えていまし\r\n\r\nた。というのも、現在の仕事で時々上司から「○○の請求書のコピーを×月から△月ま\r\n\r\nで印刷しておいて下さい」と言われるからです。\r\n\r\n&nbsp;\r\n\r\n別に1枚や2枚だったら特に気にすることもないのですが、これが10枚や20枚になって\r\n\r\nくると結構面倒になってきます。\r\n\r\n&nbsp;\r\n\r\n今回はタイトルにもあるように、この請求書のPDFについて拙いながらも自分なりに\r\n\r\n「SendKeysメソッドとfolderfilelistでPDFを自動印刷できないか」どうか考えてみた\r\n\r\nので、そのことについて今回は書いていってみます。\r\n\r\n&nbsp;\r\n\r\n今回の記事の注意点として「できないか」と書いてあるので、自動印刷できるマクロ\r\n\r\nができたわけではありません。自動印刷するために自分がどんなことについて試行錯\r\n\r\n誤してきたかについて書かれた内容です。\r\n\r\n&nbsp;\r\n\r\nちなみに自動印刷に「近い」ことは、次の記事で書こうと思っているので、そのよう\r\n\r\nな前提で読んでいただければと思います。\r\n<h2>指定のPDFを印刷するまでの手順と背景</h2>\r\n事務的な職業をしている方でもそうでない人でもPDFを印刷したことがある人は多い\r\n\r\nでしょう。PDFを印刷する時というのは、基本的に次のような手順になるかと思いま\r\n\r\nす。ちなみにここではパソコンのデスクトップ上にPDFファイルがあると仮定します。\r\n\r\n&nbsp;\r\n\r\nまず指定のPDFのファイルをダブルクリックして開く\r\n\r\n↓\r\n\r\n開いたPDFファイルのメニューから「ファイル」を選択\r\n\r\n↓\r\n\r\nドロップダウンメニューから「印刷」を選択\r\n\r\n↓\r\n\r\n開かれた印刷ダイアログボックスから「印刷」を選択\r\n\r\n&nbsp;\r\n\r\n以上が大まかな流れかと思います。上に挙げた例はわかりやすいように非常に簡略化し\r\n\r\nました。実際の業務などでは印刷したいPDFはデスクトップ上にはなく、決まったフォ\r\n\r\nルダに格納されているのが普通かと思います。\r\n\r\n&nbsp;\r\n\r\nまた印刷するときも、その時の状況によって印刷ダイアログボックスから「どのページ\r\n\r\nにするのか」といったことや「カラーか白黒か」といった点など、いろいろと変えなけ\r\n\r\nればいけない設定が出てくる場合もあります。\r\n\r\n&nbsp;\r\n\r\n以上のような手順をエクセルのVBAで自動化できないものかと思いました。しかしPDF\r\n\r\nというと、エクセルとは違うアプリケーションになります。正確にはAdobe Acrobat\r\n\r\nReader DCというアプリケーションになるわけですが。\r\n\r\n&nbsp;\r\n\r\nもしかしたら何らかの方法があるかもしれないとインターネット上でいろいろと検索し\r\n\r\nてみました。あるにはあるのですが、どれも自分が勉強してきたレベルでは理解できな\r\n\r\nいような難しいコードです。\r\n\r\n&nbsp;\r\n\r\n例えばShellオブジェクトのShellExecuteメソッドを使えばいいと書かれていても、自分\r\n\r\nのようなVBAを勉強してから日が浅い初心者にはまだ理解するのが難しい。\r\n\r\n&nbsp;\r\n\r\nそれらのコードについて書かれたコメントや感想などを読んでみると実際難しいようで\r\n\r\nす。自分なりにVBEにコードを打ち込んでいっていろいろいじって動作させようとして\r\n\r\nもなかなか意図通りには動いてくれません。\r\n\r\n&nbsp;\r\n\r\nもっと初心者でも簡単にPDFを自動で印刷できるコードはないものでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分としては、この面倒で単調な作業をどうしても自動化したかったので粘り強く調べ\r\n\r\nてみたらもしかしたらこれはいけるんじゃないか？と思えるものがありました。\r\n\r\n&nbsp;\r\n\r\nそれがSendkeysメソッドというものです。\r\n<h2>SendKeysメソッドとは</h2>\r\nエクセルのVBAにおけるSendkeysメソッドとは、エクセルではなくエクセル以外の外\r\n\r\n部アプリケーションなどにエクセルから指示が出せるコードです。\r\n\r\n&nbsp;\r\n\r\n一般的なイメージでは、エクセルのVBAというとエクセルの機能のひとつなのでエクセ\r\n\r\nル上でしか動作させることができないと思いがちです。しかしそうではなく例えばエク\r\n\r\nセルからでもワードとかエクセル以外のアプリケーションでもエクセルから動作させる\r\n\r\nことができるのです。\r\n\r\n&nbsp;\r\n\r\n自分は最初このようなやり方があるのを知ったときは驚愕しました。「こんなやり方も\r\n\r\nあるのか！？」と。詳しい内容についてはMicroSoftが以下のようなページを掲載して\r\n\r\nいます。\r\n<ul>\r\n 	<li><strong><a href="https://msdn.microsoft.com/ja-jp/library/cc364423.aspx">SendKeysメソッド</a></strong></li>\r\n</ul>\r\n<blockquote>キーボードから入力したときのように、1 つ以上のキー ストロークをアクティブなウィンドウに送ります。\r\n<div id="code-snippet-1" class="codeSnippetContainer">\r\n<div class="codeSnippetContainerCodeContainer">\r\n<div id="CodeSnippetContainerCode_1dd13a61-a7b0-417c-8676-c8af870676c8" class="codeSnippetContainerCode" dir="ltr">\r\n<div>\r\n<pre>object.SendKeys(string)\r\n</pre>\r\n</div>\r\n</div>\r\n</div>\r\n</div>\r\n<p class="dtH4">引数</p>\r\n\r\n<dl>\r\n 	<dt><em>object</em></dt>\r\n 	<dd>WshShell<strong> </strong>オブジェクトです。</dd>\r\n 	<dt><em>string</em></dt>\r\n 	<dd>送信するキーストロークを文字列式で指定します。</dd>\r\n</dl>\r\n<p class="dtH4">解説</p>\r\nSendKeys<strong> </strong>メソッドは、オートメーション インターフェイスを持たないアプ\r\n\r\nリケーションにキーストロークを送信する場合に使用します。キーボードの\r\n\r\n文字のほとんどは単一のキーで表現されます。キーボードの文字の中には、\r\n\r\n<strong>Ctrl</strong>+<strong>Shift</strong>+<strong>Home</strong> などのように、いくつかのキーの組み合わせで表現され\r\n\r\nるものもあります。キーボードの文字を 1 つ送信するには、その文字自身\r\n\r\nを <em>string</em> 引数に指定します。たとえば、<strong>X</strong> キーを送信するには、<em>string</em> 引\r\n\r\n数に文字列 "X" を指定します。</blockquote>\r\nShellオブジェクトとかOpenステートメント といったものは初心者には難しいかもし\r\n\r\nれませんが、ショートカットキーの「Ctrl+P」などであれば難しくはないでしょう。\r\n\r\n&nbsp;\r\n\r\nそういった動作をエクセルから外部アプリケーションに指示を送れるのが、Sendkeys\r\n\r\nメソッドです。\r\n\r\n&nbsp;\r\n\r\n例えばここまでPDFを印刷する手順について書いてきました。それをキーボードだけで\r\n\r\n操作した場合どういった形になるでしょうか？それは以下のような形になります。\r\n\r\n&nbsp;\r\n\r\nPDFファイルを選択してenterを押す\r\n\r\n↓\r\n\r\nPDFファイルが画面上に表示されるので、Ctrl+Pのショートカットキーで印刷ダイアロ\r\n\r\nグボックスが開く\r\n\r\n↓\r\n\r\n印刷ダイアログボックスが開かれている状態でenterを押すと印刷が実行される\r\n\r\n↓\r\n\r\nAlt+F4でPDFファイルを閉じる\r\n\r\n&nbsp;\r\n\r\nどうでしょうか。どのページを印刷するかといった特に込み入った設定が必要なければ\r\n\r\n、マウスを操作しなくてもキーボード上のキーだけでPDFファイルを印刷することがで\r\n\r\nきます。\r\n\r\n&nbsp;\r\n\r\n自分はこのやり方をエクセルからVBAを通してPDFへ指示を送れないかを試してみまし\r\n\r\nた。\r\n\r\n<!--nextpage-->\r\n<h2>Folderfilelistとは</h2>\r\nFolderfilelistとはフリーソフトのひとつで、指定のフォルダの中にある全部のファイル\r\n\r\nまでのパスを全て抽出することができます。ちなみに以下のVectorのページからダウン\r\n\r\nロードできます。Folderfilelistの使い方の詳細は以下のページから見ていただければと\r\n\r\n思います。\r\n\r\n<a href="http://www.vector.co.jp/soft/winnt/util/se515451.html">FolderFileList-対象のフォルダの中を解析し、フォルダとファイルの一覧を確認</a>\r\n\r\n&nbsp;\r\n\r\nファイルまでのパスがどう役に立つの？今回のPDFを印刷するマクロとどう関係がある\r\n\r\nの？と思うかもしれませんが、使い方によっては本当に便利なんです。\r\n\r\n&nbsp;\r\n\r\nなぜファイルまでのパスを抽出できることが良いのかというと、コンピュータは、この\r\n\r\nパスで指定のファイルがコンピュータ上のどこにあるのか、というのを理解できるから\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\nこの機能を利用して、指定のPDFへリンクして開いて印刷できるようにしようと考えま\r\n\r\nした。\r\n<h2>ボタンひとつでPDFを印刷できるマクロのコード</h2>\r\n以上のようないくつかのアイデアをVBAを使ってコードに落とし込んだものが以下のよ\r\n\r\nうな形になります。\r\n<pre>Sub 印刷()\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\nSendKeys "^{p}"\r\n\r\nSendKeys "{enter}"\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</pre>\r\n以上のコードをエクセルの開発タブ＞Visual Basicを開いて標準モジュールに貼り付け\r\n\r\nます。それと並行してエクセルのシートを以下のような形にします。\r\n\r\n<img class="alignnone wp-image-2611 " src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/aaaa.png" alt="" width="673" height="467" />\r\n\r\n「印刷」シートに以下の処理をする\r\n\r\n・B4セルに印刷したいファイルが入っているフォルダのパスをコピペ\r\n\r\n・B7セルにコピペしたフォルダに入っているファイルのファイル名をコピペ\r\n\r\n&nbsp;\r\n\r\n「パス」シートに以下の処理をする\r\n\r\nフリーソフトのFolderfilelistを利用して、印刷したいファイルが入っているフォルダから\r\n\r\n抽出した全てのファイルへのパスをコピペする\r\n\r\n&nbsp;\r\n\r\n以上の処理を実行後、「ボタン1」に登録した「印刷マクロ」を押すことで「印刷したい\r\n\r\nPDFファイルを自動で印刷」できるはずでした。\r\n\r\n&nbsp;\r\n\r\nしかし、ここで問題が発生します。\r\n<h2>問題点と今後の課題</h2>\r\n以上ここまで書いたやり方で「こんなやり方でもVBAでPDFを印刷できるようになりま\r\n\r\nすよ」と言えればこれほど嬉しいことはないのですが、やはり問題点もあります。\r\n\r\n&nbsp;\r\n\r\nそれは「コピペしたファイル名のファイルを全て印刷できるわけではない」という問題\r\n\r\nです。今の時点では「なぜそうなってしまうのか」というのはわかりません。\r\n\r\n&nbsp;\r\n\r\n自分の中の仮説では「読み込み時間」の問題ではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nVBAという分野には「OLEオートメーション」というやり方があります。これもエクセ\r\n\r\nル上から外部アプリケーションに対して何らかの動作をさせるための方法です。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト ExcelVBAスタンダード 』という本には次のように書\r\n\r\nかれています。\r\n<blockquote>p.188\r\n\r\nインターネットへの接続では、ページが完全に読み込まれるまでに時間が必要\r\n\r\nだからです。ページの読み込みが完了する前にInnerTextプロパティの値を取\r\n\r\n得しようとするとエラーになります。\r\n\r\n&nbsp;\r\n\r\nそこでページの読み込みが完了するまで処理を一時停止しなければなりませ\r\n\r\nん。これには、Do...Loopステートメントを使います。・・・</blockquote>\r\n&nbsp;\r\n\r\nもしかしたらこれだろうか？と思いました。エクセルからの指示が速すぎてPDFの方が\r\n\r\nついてこれていないのかも・・・。\r\n\r\n&nbsp;\r\n\r\n確かにPDFファイルをダブルクリックして画面上に完全に開かれるまでの時間とか印刷\r\n\r\nダイアログボックスが開くまでの時間、印刷を実行して印刷ダイアログボックスが閉じ\r\n\r\nるまでの時間には若干の「タイムラグ」があります。\r\n\r\n&nbsp;\r\n\r\n上記の『VBAエキスパート公式テキスト ExcelVBAスタンダード 』に書かれているコー\r\n\r\nドをマネしていろいろと試行錯誤してみましたが上手くいきません。\r\n\r\n&nbsp;\r\n\r\nしかし、どうしてもこの処理を自動化したいという想いからインターネットで何か良い\r\n\r\n方法はないかと調べていたら別の方法を発見しました。\r\n\r\n&nbsp;\r\n\r\n今回書いた記事の方法は、後日改善されることになります。そのことについては、次の\r\n\r\n次の記事で書こうかと思っています。\r\n\r\n&nbsp;\r\n\r\n今回の記事の続きです\r\n\r\n⇒<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong>\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/28/1057">2017年の心の変化と「VBA」という新しい道具を手に入れてみて</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256">今まで大したことないと思っていた仕事が今は宝の山に見える</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか', '', 'inherit', 'closed', 'closed', '', '2591-revision-v1', '', '', '2018-02-03 00:58:27', '2018-02-03 00:58:27', '', 2591, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2591-revision-v1', 0, 'revision', '', 0),
(2664, 1, '2018-02-03 08:29:41', '2018-02-03 08:29:41', '<img class="alignnone wp-image-2641" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/01/code-820275_640-300x200.jpg" alt="" width="608" height="405" />\r\n\r\n今回の記事の2つ前に以下のような過去記事を書いています。今回は以下の過去記事\r\n\r\nの続きです。\r\n\r\n<strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong>\r\n\r\n&nbsp;\r\n\r\nエクセルのVBAでSendkeysメソッドとフリーソフトのFolderfilelistでPDFを自動で\r\n\r\n印刷できるマクロをつくろうと試みたのですが、思うように動作せずに失敗したと\r\n\r\nいった内容です。\r\n\r\n&nbsp;\r\n\r\n考えられる理由として、エクセルからPDFへSendkeysメソッドで指示を送れるよう\r\n\r\nにしていたが、指示が速すぎてPDFが表示される前に送ってしまっていたのではない\r\n\r\nかということでした。\r\n\r\n&nbsp;\r\n\r\nその解決策として、VBAのコードにAPIのkernel32を利用してみました。今回のこの\r\n\r\n部分で試行錯誤した内容について書いていってみます。\r\n<h2>VBAにおけるAPIとは、kernel32とは</h2>\r\n過去記事の課題をなんとかするために、何か良い方法はないかとインターネットを使\r\n\r\nって調べていたら、「これはいけるんじゃないか？」と感じられたものがありました。\r\n\r\n&nbsp;\r\n\r\nそれは「APIのkernel32」です\r\n\r\n&nbsp;\r\n\r\n冒頭の過去記事で書いたコードに、今回はAPIのkernel32というコードを利用してみ\r\n\r\nました。ではAPIのkernel32とはどんなコードなのでしょうか。自分の勉強という意\r\n\r\n味でも備忘録という意味でもちょっと引用してみます。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれ\r\n\r\nています。\r\n<blockquote>p.191\r\n\r\nAPIとはApplication Programming Interfaceの略称です。APIは、Windows\r\n\r\nなどが持っている機能のうち、外部に公開している関数などで、VBAなど他の\r\n\r\nプログラムから利用できます。\r\n\r\n&nbsp;\r\n\r\n一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できる\r\n\r\nのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIと\r\n\r\nして公開しているものがあります。そのように外部に公開している機能や関数\r\n\r\nなどを「ライブラリ」と呼びます。\r\n\r\n&nbsp;\r\n\r\nプログラム自身を操作するOLEオートメーションとは異なり、APIは公開され\r\n\r\nている機能や関数だけを呼び出して実行します。両者は、Excel VBAによるプ\r\n\r\nログラミングの中でも、高度な部類に入ります。しかし適切に使いこなせれ\r\n\r\nば、VBAだけでは難しい機能を実現できます。</blockquote>\r\n&nbsp;\r\n\r\n同様に本書においてkernel32は次のように書かれています。\r\n<blockquote>ｐ.191\r\n\r\n「Declare Function GetTickCount Lib "kernel32"()As Long」は、\r\n\r\n<strong>kernel32</strong><strong>というライブラリが公開している</strong>GetTickCountという関数を使用\r\n\r\nするための宣言です。</blockquote>\r\nAPIとは、要はVBAで使えるいろんなコードの種類の中のひとつといったところでし\r\n\r\nょうか。Kernel32というのは「Kernel32というライブラリ」とあるので、そういっ\r\n\r\nた種類のコードがまとめられている所があるということでしょう。\r\n\r\n&nbsp;\r\n\r\nちなみにAPIを使用するには、どのライブラリの、どの関数を使うかを予め宣言しな\r\n\r\nければならず、そのためには宣言セクションでDeclareステートメントを使う必要が\r\n\r\nあります。変数の宣言に似ています。\r\n\r\n&nbsp;\r\n\r\n今回はこのコードを使って、前回の課題だった読み込み時間中にエクセルに待機さ\r\n\r\nせるという指示が出せるか試してみます。\r\n<h2>Sleep関数を利用して自動で印刷できるようにしたコード</h2>\r\n冒頭部分の過去記事で書いたコードにAPIのkernel32のコードを利用してつくったの\r\n\r\nが以下のコードになります。\r\n<pre><strong>Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)</strong>\r\n\r\nSub 印刷()\r\n\r\n<strong>Dim time As Long</strong>\r\n<strong>time = 1500</strong>\r\n\r\nDim i As Long\r\n\r\nDim buf As String\r\n\r\nOn Error Resume Next\r\n\r\nRange("F7").Select\r\n\r\nRange("F7").Value = "=VLOOKUP(RC[-4],パス!C[-5]:C[3],9,0)"\r\n\r\nSelection.AutoFill Destination:=Range("F7:F100"), Type:=xlFillDefault\r\n\r\nFor i = 7 To 100\r\n\r\nIf Cells(i, 2) &lt;&gt; "" Then\r\n\r\nCells(i, 6).Hyperlinks.Add Anchor:=Cells(i, 6), Address:=Cells(i, 6).Value\r\n\r\nCells(i, 6).Hyperlinks(1).Follow\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "^{p}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "{enter}"\r\n\r\n<strong>Sleep time</strong>\r\n\r\nSendKeys "%{F4}"\r\n\r\nEnd If\r\n\r\nNext i\r\n\r\nRange("F7:F100").Delete\r\n\r\nEnd Sub</pre>\r\n上のDeclareステートメント内とコード中には「Sleep関数」というものを使っていま\r\n\r\nす。Sleep関数とは指定した時間(ミリ秒間)だけ処理を中断できる関数です。例えばコ\r\n\r\nードに中に「1000」と入れれば1000ミリ秒、つまり1秒間、「待ち」の時間をつくる\r\n\r\nということです。\r\n\r\n&nbsp;\r\n\r\nこのSleep関数を\r\n<ul>\r\n 	<li>PDFが開かれる前</li>\r\n 	<li>PDFが開かれて「Ctrl+P」で印刷ダイアログボックスが開かれる前</li>\r\n 	<li>印刷ダイアログボックスが開かれてenterが押された後</li>\r\n</ul>\r\nに「待機」の時間をつくることで、エクセルからの指示を対応できるようにしました。\r\n<h2>結果と感想</h2>\r\nとりあえず形にはなったかな、という感じです。過去記事ではPDFファイルが開かれる\r\n\r\nまでに若干のタイムラグがあり、その間にエクセルがSendkeysメソッドで指示を送っ\r\n\r\nてPDFが開かれていないので対応できない、という課題がありました。\r\n\r\n&nbsp;\r\n\r\nしかし、今回見つけたコードを入れることで「待ち」の時間をつくることができ、PDF\r\n\r\nが開いてから指示を送れるようになりました。\r\n\r\n&nbsp;\r\n\r\nそれによってある程度は理想的な動きをしてくれるようにはなったのですが、問題は\r\n\r\n「ちょっと時間がかかってしまう」ことだと感じています。\r\n\r\n&nbsp;\r\n\r\nVBAでマクロをつくるんだから、一瞬で作業を終わらせてしまう、とは言わないまで\r\n\r\nももうちょっと何とかならないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n特に数が印刷する数が増えれば増えるほどより時間がかかってしまいます。自分は\r\n\r\nVBA初心者なのでまだこういったコードしか書けませんが、たぶんもっと汎用性があ\r\n\r\nって便利なコードはあるはずです。\r\n\r\n&nbsp;\r\n\r\n実際インターネットでいろんなコードを見てみると、難しそうなコードをたくさん目\r\n\r\nにしますし。そのようなコードが理解できるように、自分は今後も勉強が必要だと感\r\n\r\nじました。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/03/0104">人間世界における勉強の概念の今後の1つの方向性について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n</ul>', 'PDFの自動印刷のためにAPIのkernel32を利用してみた', '', 'inherit', 'closed', 'closed', '', '2631-revision-v1', '', '', '2018-02-03 08:29:41', '2018-02-03 08:29:41', '', 2631, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2631-revision-v1', 0, 'revision', '', 0),
(2669, 1, '2018-02-03 13:03:45', '2018-02-03 13:03:45', 'プログラミング言語というものに対して多くの人はどんなイメージを持っているでしょうか？プログラミング言語には様々な種類がありますが、その中のひとつに「VBA」というものがあります。\r\n\r\n&nbsp;\r\n\r\nVBAといえばエクセル、エクセルといえばVBAというイメージが以前の自分にはありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケーションに特化したプログラミング言語のことであり、Visual Basicをベースとしています。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーションに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、その内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えないものだと思っていました。また「Visual Basic for Applications 」とあるように特定のアプリケーションに特化したプログラミング言語なわけですからそういうものなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エクセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいないでしょうか？\r\n\r\n&nbsp;\r\n\r\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのってエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でした。\r\n\r\n&nbsp;\r\n\r\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。そもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\r\n\r\n&nbsp;\r\n\r\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\r\n\r\n&nbsp;\r\n\r\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを入れることで開発タブが表示されるようになります。その中に「Visual Basic」を確認できました。あぁ、エクセル以外でも本当に使えるんですね。\r\n\r\n&nbsp;\r\n\r\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、その中に「Visual Basic」があります。\r\n\r\n&nbsp;\r\n\r\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボンに開発タブを表示させます。\r\n\r\n&nbsp;\r\n\r\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。MicrosoftOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実はそれ以外にも使えるアプリケーションがあります。\r\n\r\n&nbsp;\r\n\r\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフトになります。\r\n\r\n&nbsp;\r\n\r\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\r\n\r\n&nbsp;\r\n\r\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかしたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分とか繰り返し作業ってあったりしますからね。\r\n\r\n&nbsp;\r\n\r\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロがつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うことで異なるアプリケーション間でもやりとりができるようです。\r\n\r\n&nbsp;\r\n\r\n例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。この機能ってすごくないですか？最初知ったときは非常に驚きました。\r\n\r\n&nbsp;\r\n\r\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、MicrosoftOfficeのものであれば異なるアプリケーション間でVBAでやりとりができるということに。\r\n\r\n&nbsp;\r\n\r\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょうか。ちなみにもっとすごいことが次の項目で書いてあります。\r\n\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。なんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別のアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、オブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#など一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーション内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネットエクスプローラー）も使える、とあります。最初このことを知ったときは、「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステムのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla CorporationのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウザというものが必要になってきます。これを操作できるのがOLEオートメーションです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけではなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートがエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。今の時代はインターネットバンキングなんて言葉もあって、インターネット上から銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないですから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はあります。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認してダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられるんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがありますが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作できます。しかし、それはセルを操作するほど簡単なことではありません。たとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何らかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されません。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。それにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーションに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステムを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステムも操作できるということです。\r\n\r\n&nbsp;\r\n\r\n<!--nextpage-->\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発したアプリケーションなら使えることがわかりました。ここまでなら何となくは理解できます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使えるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲ってMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常のキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易にイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、さすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響を与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\nここまでVBAが使える範囲についていろいろと書いてきました。すごいですよね。エクセル以外で使えることに驚いたのはもちろん、Microsoft Officeに関するソフトであればほとんどがVBAが使えます。\r\n\r\n&nbsp;\r\n\r\nさらにインターネットエクスプローラーでも使えるということは、マクロでインターネット上からの情報も自動的に取得したり、手を加えられるわけです。\r\n\r\n&nbsp;\r\n\r\nさらにこれらを連携させる中でVBAを利用できます。エクセル→ワードとかエクセル→パワーポイントとか、ワード→エクセルとかです。\r\n\r\n&nbsp;\r\n\r\nここまではまだ予想はできそうです。「Microsoftが開発したのだから同じOffice製品なんだから内部構造も共通化できるだろう」みたいな感じで。\r\n\r\n&nbsp;\r\n\r\nでも、Microsoft製品以外にも何らかの形で影響を与えられるとは全く考えていませんでした。そのことについてはここまで書いてきた中で過去記事で触れました。\r\n\r\n&nbsp;\r\n\r\n特定のコード（SendKeysメソッドとか）や仕組みを利用することで、MicrosoftOffice製品以外のアプリケーションも操作できるということです。他の人はどう感じるかはわかりませんが、自分にとっては非常にすごいことです。\r\n\r\n&nbsp;\r\n\r\nというのも、これだけ使える範囲が広ければ、業務を自動化できる範囲もそれだけ広がるからです。\r\n\r\n&nbsp;\r\n\r\n以前は限定的だと考えていたことも、アイデアによっては非常にたくさんの動作をさせることができるのではないか、と考えられることはもちろん、今までとは全く違ったやり方の仕事ができるようになるのではないでしょうか。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block;" data-ad-format="autorelaxed" data-ad-client="ca-pub-5555284323037918" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-slot="8054263157"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'publish', 'open', 'open', '', '1303', '', '', '2018-04-25 22:34:04', '2018-04-25 22:34:04', '', 0, 'https://www.chishikinosoukonoseiri.com/?p=2669', 0, 'post', '', 0),
(2670, 1, '2018-02-03 10:24:48', '2018-02-03 10:24:48', 'VBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAという言葉を少し詳しく調べてみると、Visual Basic for Applications の略であり、', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 10:24:48', '2018-02-03 10:24:48', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2671, 1, '2018-02-03 10:56:53', '2018-02-03 10:56:53', 'VBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと思いま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものですね。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 10:56:53', '2018-02-03 10:56:53', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0),
(2672, 1, '2018-02-03 11:07:38', '2018-02-03 11:07:38', 'VBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと思いま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものですね。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 11:07:38', '2018-02-03 11:07:38', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0),
(2673, 1, '2018-02-03 11:52:37', '2018-02-03 11:52:37', 'VBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使えるようになります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプにや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式がのものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語を使うと、エクセル以外のシステムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと思いま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものですね。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 11:52:37', '2018-02-03 11:52:37', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0),
(2674, 1, '2018-02-03 11:55:32', '2018-02-03 11:55:32', '&nbsp;\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使えるようになります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプにや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式がのものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語を使うと、エクセル以外のシステムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと思いま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものですね。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 11:55:32', '2018-02-03 11:55:32', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0),
(2675, 1, '2018-02-03 11:57:21', '2018-02-03 11:57:21', '', 'diagram-155894_640', '', 'inherit', 'open', 'closed', '', 'diagram-155894_640', '', '', '2018-04-25 22:33:58', '2018-04-25 22:33:58', '', 2669, 'https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640.png', 0, 'attachment', 'image/png', 0);
INSERT INTO `wpmj_posts` VALUES
(2676, 1, '2018-02-03 11:57:33', '2018-02-03 11:57:33', '<img class="alignnone  wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使えるようになります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプにや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式がのものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語を使うと、エクセル以外のシステムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと思いま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものですね。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 11:57:33', '2018-02-03 11:57:33', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0),
(2677, 1, '2018-02-03 11:59:11', '2018-02-03 11:59:11', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\nワード、パワーポイント、アクセスでVBAが使えるというのは何となくイメージが\r\n\r\nつくかと思います。\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使えるようになります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプにや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式がのものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語を使うと、エクセル以外のシステムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと思いま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものですね。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 11:59:11', '2018-02-03 11:59:11', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0),
(2678, 1, '2018-02-03 12:03:19', '2018-02-03 12:03:19', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\nワード、パワーポイント、アクセスでVBAが使えるというのは何となくイメージが\r\n\r\nつくかと思います。\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプにや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式がのものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語を使うと、エクセル以外のシステムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと思いま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものですね。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 12:03:19', '2018-02-03 12:03:19', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2679, 1, '2018-02-03 12:08:48', '2018-02-03 12:08:48', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\nワード、パワーポイント、アクセスでVBAが使えるというのは何となくイメージが\r\n\r\nつくかと思います。\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと思いま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものですね。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 12:08:48', '2018-02-03 12:08:48', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0),
(2680, 1, '2018-02-03 12:17:47', '2018-02-03 12:17:47', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\nワード、パワーポイント、アクセスでVBAが使えるというのは何となくイメージが\r\n\r\nつくかと思います。\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\r\n\r\nイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\r\n\r\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\r\n\r\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\r\n\r\nさすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\r\n\r\n可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-03 12:17:47', '2018-02-03 12:17:47', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/03/2669-revision-v1', 0, 'revision', '', 0),
(2681, 1, '2018-02-04 07:33:52', '2018-02-04 07:33:52', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいない\r\n\r\nでしょうか？\r\n\r\n&nbsp;\r\n\r\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのっ\r\n\r\nてエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でし\r\n\r\nた。\r\n\r\n&nbsp;\r\n\r\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。\r\n\r\nそもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\r\n\r\n&nbsp;\r\n\r\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、\r\n\r\n開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\r\n\r\n&nbsp;\r\n\r\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを\r\n\r\n入れることで開発タブが表示されるようになります。その中に「Visual Basic」を\r\n\r\n確認できました。あぁ、エクセル以外でも本当に使えるんですね。\r\n\r\n&nbsp;\r\n\r\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、\r\n\r\nその中に「Visual Basic」があります。\r\n\r\n&nbsp;\r\n\r\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント\r\n\r\n2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボン\r\n\r\nに開発タブを表示させます。\r\n\r\n&nbsp;\r\n\r\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。Microsoft\r\n\r\nOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実\r\n\r\nはそれ以外にも使えるアプリケーションがあります。\r\n\r\n&nbsp;\r\n\r\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも\r\n\r\n見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフト\r\n\r\nになります。\r\n\r\n&nbsp;\r\n\r\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブ\r\n\r\nを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\r\n\r\n&nbsp;\r\n\r\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかし\r\n\r\nたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分\r\n\r\nとか繰り返し作業ってあったりしますからね。\r\n\r\n&nbsp;\r\n\r\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロが\r\n\r\nつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うこ\r\n\r\nとで異なるアプリケーション間でもやりとりができるようです。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでつくった表をワードの文書内に埋め込むなどです。この機能ってす\r\n\r\nごくないですか？最初知ったときは非常に驚きました。\r\n\r\n&nbsp;\r\n\r\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、Microsoft\r\n\r\nOfficeのものであれば異なるアプリケーション間でもやりとりができるということに。\r\n\r\n&nbsp;\r\n\r\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょ\r\n\r\nうか。ちなみにもっとすごいことが次の項目で書いてあります。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\r\n\r\nイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\r\n\r\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\r\n\r\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\r\n\r\nさすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\r\n\r\n可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-04 07:33:52', '2018-02-04 07:33:52', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/04/2669-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2682, 1, '2018-02-04 07:43:47', '2018-02-04 07:43:47', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいない\r\n\r\nでしょうか？\r\n\r\n&nbsp;\r\n\r\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのっ\r\n\r\nてエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でし\r\n\r\nた。\r\n\r\n&nbsp;\r\n\r\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。\r\n\r\nそもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\r\n\r\n&nbsp;\r\n\r\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、\r\n\r\n開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\r\n\r\n&nbsp;\r\n\r\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを\r\n\r\n入れることで開発タブが表示されるようになります。その中に「Visual Basic」を\r\n\r\n確認できました。あぁ、エクセル以外でも本当に使えるんですね。\r\n\r\n&nbsp;\r\n\r\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、\r\n\r\nその中に「Visual Basic」があります。\r\n\r\n&nbsp;\r\n\r\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント\r\n\r\n2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボン\r\n\r\nに開発タブを表示させます。\r\n\r\n&nbsp;\r\n\r\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。Microsoft\r\n\r\nOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実\r\n\r\nはそれ以外にも使えるアプリケーションがあります。\r\n\r\n&nbsp;\r\n\r\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも\r\n\r\n見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフト\r\n\r\nになります。\r\n\r\n&nbsp;\r\n\r\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブ\r\n\r\nを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\r\n\r\n&nbsp;\r\n\r\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかし\r\n\r\nたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分\r\n\r\nとか繰り返し作業ってあったりしますからね。\r\n\r\n&nbsp;\r\n\r\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロが\r\n\r\nつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うこ\r\n\r\nとで異なるアプリケーション間でもやりとりができるようです。\r\n\r\n&nbsp;\r\n\r\n例えばエクセルでつくった表をワードの文書内に埋め込むなどです。この機能ってす\r\n\r\nごくないですか？最初知ったときは非常に驚きました。\r\n\r\n&nbsp;\r\n\r\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、Microsoft\r\n\r\nOfficeのものであれば異なるアプリケーション間でもやりとりができるということに。\r\n\r\n&nbsp;\r\n\r\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょ\r\n\r\nうか。ちなみにもっとすごいことが次の項目で書いてあります。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\r\n\r\nイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\r\n\r\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\r\n\r\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\r\n\r\nさすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\r\n\r\n可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\nここまでVBAが使える範囲についていろいろと書いてきました。すごいですよね。\r\n\r\nエクセル以外で使えることに驚いたのはもちろん、Microsoft Officeに関するソフ\r\n\r\nトであればほとんどがVBAが使えます。\r\n\r\n&nbsp;\r\n\r\nさらにインターネットエクスプローラーでも使えるということは、マクロでインタ\r\n\r\nーネット上からの情報も自動的に取得したり、手を加えられるわけです。\r\n\r\n&nbsp;\r\n\r\nさらにこれらを連携させることもできます。エクセル→ワードとかエクセル→パワー\r\n\r\nポイントとか、ワード→エクセルとかです。\r\n\r\n&nbsp;\r\n\r\nここまではまだ予想はできそうです。「Microsoftが開発したのだから同じOffice製\r\n\r\n品なんだから内部構造も共通化できるだろう」みたいな感じで。\r\n\r\n&nbsp;\r\n\r\nでも、Microsoft製品以外にも何らかの形で影響を与えられるとは全く考えていませ\r\n\r\nんでした。そのことについてはここまで書いてきた中で過去記事で触れました。\r\n\r\n&nbsp;\r\n\r\n特定のコード（SendKeysメソッドとか）や仕組みを利用することで、Microsoft\r\n\r\nOffice製品以外のアプリケーションも操作できるということです。他の人はどう感\r\n\r\nじるかはわかりませんが、自分にとっては非常にすごいことです。\r\n\r\n&nbsp;\r\n\r\nというのも、これだけ使える範囲が広ければ、業務を自動化できる範囲もそれだけ\r\n\r\n広がるからです。以前は限定的だと考えていたことも、アイデアによっては、非常\r\n\r\nにたくさんの動作をさせることができるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-04 07:43:47', '2018-02-04 07:43:47', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/04/2669-revision-v1', 0, 'revision', '', 0),
(2683, 1, '2018-02-04 07:50:16', '2018-02-04 07:50:16', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいない\r\n\r\nでしょうか？\r\n\r\n&nbsp;\r\n\r\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのっ\r\n\r\nてエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でし\r\n\r\nた。\r\n\r\n&nbsp;\r\n\r\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。\r\n\r\nそもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\r\n\r\n&nbsp;\r\n\r\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、\r\n\r\n開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\r\n\r\n&nbsp;\r\n\r\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを\r\n\r\n入れることで開発タブが表示されるようになります。その中に「Visual Basic」を\r\n\r\n確認できました。あぁ、エクセル以外でも本当に使えるんですね。\r\n\r\n&nbsp;\r\n\r\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、\r\n\r\nその中に「Visual Basic」があります。\r\n\r\n&nbsp;\r\n\r\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント\r\n\r\n2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボン\r\n\r\nに開発タブを表示させます。\r\n\r\n&nbsp;\r\n\r\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。Microsoft\r\n\r\nOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実\r\n\r\nはそれ以外にも使えるアプリケーションがあります。\r\n\r\n&nbsp;\r\n\r\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも\r\n\r\n見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフト\r\n\r\nになります。\r\n\r\n&nbsp;\r\n\r\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブ\r\n\r\nを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\r\n\r\n&nbsp;\r\n\r\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかし\r\n\r\nたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分\r\n\r\nとか繰り返し作業ってあったりしますからね。\r\n\r\n&nbsp;\r\n\r\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロが\r\n\r\nつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うこ\r\n\r\nとで異なるアプリケーション間でもやりとりができるようです。\r\n\r\n&nbsp;\r\n\r\n例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。\r\n\r\nこの機能ってすごくないですか？最初知ったときは非常に驚きました。\r\n\r\n&nbsp;\r\n\r\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、Microsoft\r\n\r\nOfficeのものであれば異なるアプリケーション間でVBAでやりとりができるというこ\r\n\r\nとに。\r\n\r\n&nbsp;\r\n\r\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょ\r\n\r\nうか。ちなみにもっとすごいことが次の項目で書いてあります。\r\n\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n&nbsp;\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\r\n\r\nイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\r\n\r\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\r\n\r\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\r\n\r\nさすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\r\n\r\n可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\nここまでVBAが使える範囲についていろいろと書いてきました。すごいですよね。\r\n\r\nエクセル以外で使えることに驚いたのはもちろん、Microsoft Officeに関するソフ\r\n\r\nトであればほとんどがVBAが使えます。\r\n\r\n&nbsp;\r\n\r\nさらにインターネットエクスプローラーでも使えるということは、マクロでインタ\r\n\r\nーネット上からの情報も自動的に取得したり、手を加えられるわけです。\r\n\r\n&nbsp;\r\n\r\nさらにこれらを連携させる中でVBAを利用できます。エクセル→ワードとかエクセ\r\n\r\nル→パワーポイントとか、ワード→エクセルとかです。\r\n\r\n&nbsp;\r\n\r\nここまではまだ予想はできそうです。「Microsoftが開発したのだから同じOffice製\r\n\r\n品なんだから内部構造も共通化できるだろう」みたいな感じで。\r\n\r\n&nbsp;\r\n\r\nでも、Microsoft製品以外にも何らかの形で影響を与えられるとは全く考えていませ\r\n\r\nんでした。そのことについてはここまで書いてきた中で過去記事で触れました。\r\n\r\n&nbsp;\r\n\r\n特定のコード（SendKeysメソッドとか）や仕組みを利用することで、Microsoft\r\n\r\nOffice製品以外のアプリケーションも操作できるということです。他の人はどう感\r\n\r\nじるかはわかりませんが、自分にとっては非常にすごいことです。\r\n\r\n&nbsp;\r\n\r\nというのも、これだけ使える範囲が広ければ、業務を自動化できる範囲もそれだけ\r\n\r\n広がるからです。以前は限定的だと考えていたことも、アイデアによっては、非常\r\n\r\nにたくさんの動作をさせることができるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-04 07:50:16', '2018-02-04 07:50:16', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/04/2669-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2684, 1, '2018-02-04 07:52:33', '2018-02-04 07:52:33', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいない\r\n\r\nでしょうか？\r\n\r\n&nbsp;\r\n\r\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのっ\r\n\r\nてエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でし\r\n\r\nた。\r\n\r\n&nbsp;\r\n\r\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。\r\n\r\nそもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\r\n\r\n&nbsp;\r\n\r\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、\r\n\r\n開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\r\n\r\n&nbsp;\r\n\r\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを\r\n\r\n入れることで開発タブが表示されるようになります。その中に「Visual Basic」を\r\n\r\n確認できました。あぁ、エクセル以外でも本当に使えるんですね。\r\n\r\n&nbsp;\r\n\r\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、\r\n\r\nその中に「Visual Basic」があります。\r\n\r\n&nbsp;\r\n\r\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント\r\n\r\n2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボン\r\n\r\nに開発タブを表示させます。\r\n\r\n&nbsp;\r\n\r\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。Microsoft\r\n\r\nOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実\r\n\r\nはそれ以外にも使えるアプリケーションがあります。\r\n\r\n&nbsp;\r\n\r\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも\r\n\r\n見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフト\r\n\r\nになります。\r\n\r\n&nbsp;\r\n\r\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブ\r\n\r\nを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\r\n\r\n&nbsp;\r\n\r\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかし\r\n\r\nたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分\r\n\r\nとか繰り返し作業ってあったりしますからね。\r\n\r\n&nbsp;\r\n\r\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロが\r\n\r\nつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うこ\r\n\r\nとで異なるアプリケーション間でもやりとりができるようです。\r\n\r\n&nbsp;\r\n\r\n例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。\r\n\r\nこの機能ってすごくないですか？最初知ったときは非常に驚きました。\r\n\r\n&nbsp;\r\n\r\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、Microsoft\r\n\r\nOfficeのものであれば異なるアプリケーション間でVBAでやりとりができるというこ\r\n\r\nとに。\r\n\r\n&nbsp;\r\n\r\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょ\r\n\r\nうか。ちなみにもっとすごいことが次の項目で書いてあります。\r\n\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n<!--nextpage-->\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\r\n\r\nイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\r\n\r\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\r\n\r\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\r\n\r\nさすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\r\n\r\n可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\nここまでVBAが使える範囲についていろいろと書いてきました。すごいですよね。\r\n\r\nエクセル以外で使えることに驚いたのはもちろん、Microsoft Officeに関するソフ\r\n\r\nトであればほとんどがVBAが使えます。\r\n\r\n&nbsp;\r\n\r\nさらにインターネットエクスプローラーでも使えるということは、マクロでインタ\r\n\r\nーネット上からの情報も自動的に取得したり、手を加えられるわけです。\r\n\r\n&nbsp;\r\n\r\nさらにこれらを連携させる中でVBAを利用できます。エクセル→ワードとかエクセ\r\n\r\nル→パワーポイントとか、ワード→エクセルとかです。\r\n\r\n&nbsp;\r\n\r\nここまではまだ予想はできそうです。「Microsoftが開発したのだから同じOffice製\r\n\r\n品なんだから内部構造も共通化できるだろう」みたいな感じで。\r\n\r\n&nbsp;\r\n\r\nでも、Microsoft製品以外にも何らかの形で影響を与えられるとは全く考えていませ\r\n\r\nんでした。そのことについてはここまで書いてきた中で過去記事で触れました。\r\n\r\n&nbsp;\r\n\r\n特定のコード（SendKeysメソッドとか）や仕組みを利用することで、Microsoft\r\n\r\nOffice製品以外のアプリケーションも操作できるということです。他の人はどう感\r\n\r\nじるかはわかりませんが、自分にとっては非常にすごいことです。\r\n\r\n&nbsp;\r\n\r\nというのも、これだけ使える範囲が広ければ、業務を自動化できる範囲もそれだけ\r\n\r\n広がるからです。以前は限定的だと考えていたことも、アイデアによっては、非常\r\n\r\nにたくさんの動作をさせることができるのではないでしょうか。\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-04 07:52:33', '2018-02-04 07:52:33', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/04/2669-revision-v1', 0, 'revision', '', 0),
(2685, 1, '2018-02-04 07:54:11', '2018-02-04 07:54:11', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいない\r\n\r\nでしょうか？\r\n\r\n&nbsp;\r\n\r\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのっ\r\n\r\nてエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でし\r\n\r\nた。\r\n\r\n&nbsp;\r\n\r\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。\r\n\r\nそもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\r\n\r\n&nbsp;\r\n\r\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、\r\n\r\n開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\r\n\r\n&nbsp;\r\n\r\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを\r\n\r\n入れることで開発タブが表示されるようになります。その中に「Visual Basic」を\r\n\r\n確認できました。あぁ、エクセル以外でも本当に使えるんですね。\r\n\r\n&nbsp;\r\n\r\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、\r\n\r\nその中に「Visual Basic」があります。\r\n\r\n&nbsp;\r\n\r\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント\r\n\r\n2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボン\r\n\r\nに開発タブを表示させます。\r\n\r\n&nbsp;\r\n\r\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。Microsoft\r\n\r\nOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実\r\n\r\nはそれ以外にも使えるアプリケーションがあります。\r\n\r\n&nbsp;\r\n\r\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも\r\n\r\n見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフト\r\n\r\nになります。\r\n\r\n&nbsp;\r\n\r\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブ\r\n\r\nを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\r\n\r\n&nbsp;\r\n\r\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかし\r\n\r\nたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分\r\n\r\nとか繰り返し作業ってあったりしますからね。\r\n\r\n&nbsp;\r\n\r\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロが\r\n\r\nつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うこ\r\n\r\nとで異なるアプリケーション間でもやりとりができるようです。\r\n\r\n&nbsp;\r\n\r\n例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。\r\n\r\nこの機能ってすごくないですか？最初知ったときは非常に驚きました。\r\n\r\n&nbsp;\r\n\r\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、Microsoft\r\n\r\nOfficeのものであれば異なるアプリケーション間でVBAでやりとりができるというこ\r\n\r\nとに。\r\n\r\n&nbsp;\r\n\r\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょ\r\n\r\nうか。ちなみにもっとすごいことが次の項目で書いてあります。\r\n\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n<!--nextpage-->\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\r\n\r\nイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\r\n\r\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\r\n\r\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\r\n\r\nさすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\r\n\r\n可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\nここまでVBAが使える範囲についていろいろと書いてきました。すごいですよね。\r\n\r\nエクセル以外で使えることに驚いたのはもちろん、Microsoft Officeに関するソフ\r\n\r\nトであればほとんどがVBAが使えます。\r\n\r\n&nbsp;\r\n\r\nさらにインターネットエクスプローラーでも使えるということは、マクロでインタ\r\n\r\nーネット上からの情報も自動的に取得したり、手を加えられるわけです。\r\n\r\n&nbsp;\r\n\r\nさらにこれらを連携させる中でVBAを利用できます。エクセル→ワードとかエクセ\r\n\r\nル→パワーポイントとか、ワード→エクセルとかです。\r\n\r\n&nbsp;\r\n\r\nここまではまだ予想はできそうです。「Microsoftが開発したのだから同じOffice製\r\n\r\n品なんだから内部構造も共通化できるだろう」みたいな感じで。\r\n\r\n&nbsp;\r\n\r\nでも、Microsoft製品以外にも何らかの形で影響を与えられるとは全く考えていませ\r\n\r\nんでした。そのことについてはここまで書いてきた中で過去記事で触れました。\r\n\r\n&nbsp;\r\n\r\n特定のコード（SendKeysメソッドとか）や仕組みを利用することで、Microsoft\r\n\r\nOffice製品以外のアプリケーションも操作できるということです。他の人はどう感\r\n\r\nじるかはわかりませんが、自分にとっては非常にすごいことです。\r\n\r\n&nbsp;\r\n\r\nというのも、これだけ使える範囲が広ければ、業務を自動化できる範囲もそれだけ\r\n\r\n広がるからです。以前は限定的だと考えていたことも、アイデアによっては、非常\r\n\r\nにたくさんの動作をさせることができるのではないでしょうか。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-04 07:54:11', '2018-02-04 07:54:11', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/04/2669-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2686, 1, '2018-02-04 08:12:34', '2018-02-04 08:12:34', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nVBAというものに対して多くの人はどんなイメージを持っているでしょうか？\r\n\r\nVBAというとエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいない\r\n\r\nでしょうか？\r\n\r\n&nbsp;\r\n\r\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのっ\r\n\r\nてエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でし\r\n\r\nた。\r\n\r\n&nbsp;\r\n\r\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。\r\n\r\nそもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\r\n\r\n&nbsp;\r\n\r\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、\r\n\r\n開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\r\n\r\n&nbsp;\r\n\r\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを\r\n\r\n入れることで開発タブが表示されるようになります。その中に「Visual Basic」を\r\n\r\n確認できました。あぁ、エクセル以外でも本当に使えるんですね。\r\n\r\n&nbsp;\r\n\r\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、\r\n\r\nその中に「Visual Basic」があります。\r\n\r\n&nbsp;\r\n\r\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント\r\n\r\n2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボン\r\n\r\nに開発タブを表示させます。\r\n\r\n&nbsp;\r\n\r\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。Microsoft\r\n\r\nOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実\r\n\r\nはそれ以外にも使えるアプリケーションがあります。\r\n\r\n&nbsp;\r\n\r\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも\r\n\r\n見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフト\r\n\r\nになります。\r\n\r\n&nbsp;\r\n\r\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブ\r\n\r\nを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\r\n\r\n&nbsp;\r\n\r\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかし\r\n\r\nたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分\r\n\r\nとか繰り返し作業ってあったりしますからね。\r\n\r\n&nbsp;\r\n\r\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロが\r\n\r\nつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うこ\r\n\r\nとで異なるアプリケーション間でもやりとりができるようです。\r\n\r\n&nbsp;\r\n\r\n例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。\r\n\r\nこの機能ってすごくないですか？最初知ったときは非常に驚きました。\r\n\r\n&nbsp;\r\n\r\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、Microsoft\r\n\r\nOfficeのものであれば異なるアプリケーション間でVBAでやりとりができるというこ\r\n\r\nとに。\r\n\r\n&nbsp;\r\n\r\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょ\r\n\r\nうか。ちなみにもっとすごいことが次の項目で書いてあります。\r\n\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n<!--nextpage-->\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\r\n\r\nイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\r\n\r\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\r\n\r\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\r\n\r\nさすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\r\n\r\n可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\nここまでVBAが使える範囲についていろいろと書いてきました。すごいですよね。\r\n\r\nエクセル以外で使えることに驚いたのはもちろん、Microsoft Officeに関するソフ\r\n\r\nトであればほとんどがVBAが使えます。\r\n\r\n&nbsp;\r\n\r\nさらにインターネットエクスプローラーでも使えるということは、マクロでインタ\r\n\r\nーネット上からの情報も自動的に取得したり、手を加えられるわけです。\r\n\r\n&nbsp;\r\n\r\nさらにこれらを連携させる中でVBAを利用できます。エクセル→ワードとかエクセ\r\n\r\nル→パワーポイントとか、ワード→エクセルとかです。\r\n\r\n&nbsp;\r\n\r\nここまではまだ予想はできそうです。「Microsoftが開発したのだから同じOffice製\r\n\r\n品なんだから内部構造も共通化できるだろう」みたいな感じで。\r\n\r\n&nbsp;\r\n\r\nでも、Microsoft製品以外にも何らかの形で影響を与えられるとは全く考えていませ\r\n\r\nんでした。そのことについてはここまで書いてきた中で過去記事で触れました。\r\n\r\n&nbsp;\r\n\r\n特定のコード（SendKeysメソッドとか）や仕組みを利用することで、Microsoft\r\n\r\nOffice製品以外のアプリケーションも操作できるということです。他の人はどう感\r\n\r\nじるかはわかりませんが、自分にとっては非常にすごいことです。\r\n\r\n&nbsp;\r\n\r\nというのも、これだけ使える範囲が広ければ、業務を自動化できる範囲もそれだけ\r\n\r\n広がるからです。\r\n\r\n&nbsp;\r\n\r\n以前は限定的だと考えていたことも、アイデアによっては非常にたくさんの動作を\r\n\r\nさせることができるのではないか、と考えられることはもちろん、今までとは全く\r\n\r\n違ったやり方の仕事ができるようになるのではないでしょうか。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-04 08:12:34', '2018-02-04 08:12:34', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/04/2669-revision-v1', 0, 'revision', '', 0),
(2695, 1, '2018-02-11 11:31:12', '2018-02-11 11:31:12', '今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけではありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がすごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。というか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n自分から見て外国へ出張へ行く人とか、アメリカの現地の企業で働いている日本人というのはとてつもなく優秀で、まさに雲の上の存在みたいなイメージでした。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらそのことをブログで整理してみたいと思ったので、ちょっと書いてみようかと思います。\r\n<h2>外資系企業での日常</h2>\r\nなぜこのような感覚を持つようになったのか。理由はいくつか考えられます。\r\n\r\n&nbsp;\r\n\r\n考えられる理由のひとつは、現在働いている企業が「外資系」であるということの影響ではないかということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n今までの環境と違う点は、日常的に英語の会話を耳にするようになったことです。もちろんその会話の意味は全然わかりません。ただ、言葉の語感やアクセントなどから「あぁなんか英語で話してるんだな」というのはわかります。\r\n\r\n&nbsp;\r\n\r\nこれは誰でも感じることかとは思いますが、自分の周りで自分のわからない言語で話をしている人がいたらやはり気にはなりますよね。「あれ？何の話してるんだろう？」と\r\n\r\n&nbsp;\r\n\r\nそういった日々耳にする英語の会話がひとつ。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n「外国」を意識するもうひとつの点としては、書類に印字されている言語が英語であるということもあるでしょう。もちろん全部わかるわけではないので、わからない部分はグーグル翻訳やインターネットを使って調べます。\r\n\r\n&nbsp;\r\n\r\nこういった部分も外国で働く可能性を意識するようになった点のひとつだったんじゃないかなぁと思います。\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n外資とかアメリカとか意識するようになった理由としては、仕事以外でも「英語」という「文字」に触れる機会が増えたからでしょう。\r\n\r\n&nbsp;\r\n\r\n外資系の仕事で、処理する書類の中に英語があるというのはもちろんですが、最近勉強していたエクセルのVBAもある程度影響があったのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語というと基本的に英語です。例えば最近勉強した中では、「RowHeightプロパティ」とか「ColumnWidthプロパティ」といった単語が出てきました。\r\n\r\n&nbsp;\r\n\r\nテキストの中にそういった単語の意味について説明してくれている部分もありますが、全てではありません。ですから電子辞書などを使って調べなければいけません。\r\n\r\n&nbsp;\r\n\r\n「Rowは行でHeightは高さだから、RowHeightプロパティは行の高さを設定できるのか。」「Columnは列だけどWidthってどんな意味かな?（この後電子辞書で調べる）あぁ、『広さ、幅』という意味だから、ColumnWidthプロパティは列の幅を設定できるんだな」\r\n\r\n&nbsp;\r\n\r\nといった感じでわからない単語と格闘するのですが、そういった日々の蓄積が「英語」とか「外国」というものに対する意識に繋がっていっているのではないかと感じました。\r\n\r\n<!--nextpage-->\r\n<h2>日本企業と外資系企業の文化の違いを比較できるようになって</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとするのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりもあります。\r\n\r\n&nbsp;\r\n\r\nこのような企業の文化に自分はなかなか馴染めませんでした。全く酒が飲めないということもないのですが。\r\n\r\n&nbsp;\r\n\r\n外資系企業だからといって、全てが「完全に外国の文化やルール」というわけではないということです。外資系企業といっても、飲み会はあったりしますし、誘われたりもします。\r\n\r\n&nbsp;\r\n\r\n自分は派遣社員という身分を利用して、上手く理由をつくって飲み会の誘いを回避したりしましたが、その時は企業文化というものに少しショックを受けたのを覚えています。日本の文化が結構残っている所もあるんだという点にです。\r\n\r\n&nbsp;\r\n\r\nただ、現在働いている所と以前働いていた所で共通しているのは、「上司と部下の上下関係があまり厳しくない」という点です。この点は嬉しかったです。\r\n\r\n&nbsp;\r\n\r\nなんというか、上の人間の下の人間に対する言動などが優しい感じがします。それに役員とか社長に対しても役職名ではなく「さん」づけで呼んで良いというのは新鮮な感じがしました。仕事の進め方、報告や連絡の方法も合理的な感じがします。\r\n\r\n&nbsp;\r\n\r\nそれに対して日本企業は、特に大企業であるほど、なぜか無駄に上下関係が厳しいです。敬語とハンコとか上司に対する呼び方とか仕事のルールとか、何社も経験してきたからこそわかりますが、「なぜいまだにそんなことをするのだろう」と思えることが多々あります。\r\n\r\n&nbsp;\r\n\r\nそのように考えられるようになったのも、1つの会社だけではなくて、複数の会社を経験して比較できるようになったからだと思います。\r\n\r\n&nbsp;\r\n\r\nこれが今まで勤務してきた会社が1社とか2社だけだったら今のような感覚は持てていなかったでしょう。そのような経験や感覚も「海外で働く可能性」を意識できるようになった理由のひとつじゃないかと感じました。\r\n\r\n&nbsp;\r\n\r\n日本企業にも安定という面では良いのでしょうが、自分の感覚としては日本企業の文化はあまり合わない感じがします。まぁこれは個人差があると思うので、その人にとって適した文化の企業を選んでいけばいいと思います。\r\n<h2>人口が減少していく日本と増加していく世界との関係</h2>\r\n「海外で働く可能性」について意識するようになった理由の中のひとつとして、自分の日常的に接する部分以外に、昨今問題視されるようになった「日本の人口が今後減少していく」という点もあるんじゃないかと思っています。\r\n\r\n&nbsp;\r\n\r\n現在日本は人口の減少が始まっており、今後の日本の人口がどのように減っていくのかという「人口減少カレンダー」なるものもあるようです。\r\n\r\n&nbsp;\r\n\r\nそれに反して、世界の人口は今後70億とか80億、それ以上に増えていくだろうと言われています。\r\n\r\n&nbsp;\r\n\r\n日本の人口が減少していくだろうという点も、「海外で働くとはどんなものだろうか」という意識が生まれた原因のひとつではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nというのは、国内市場が縮小すれば必然的に外に目を向けていかなければいけないわけで、そうなると国内での仕事も減っていくのではないかと考えるのも自然な流れです。\r\n\r\n&nbsp;\r\n\r\n現在の日本は人口が減少していて人手不足であり、今後も人口の減少が続くのだから仕事が減るわけがない、という意見もあるかもしれません。ですが、現在の時間軸における技術の進歩は目覚しいものがあります。\r\n\r\n&nbsp;\r\n\r\n少し昔であれば「まだまだ何十年も先のことだろう」と思えたかもしれません。ですが、技術は「指数関数的」に進歩していると言われ、周りの環境や報道されるニュースでもなんとなくそれは理解できます。\r\n\r\n&nbsp;\r\n\r\n今まで起きたことが今後もずっと同じように起こるなんて言えないわけで、となれば、やはりいろいろな選択肢を考えるようになるのも自然な流れではないでしょうか。\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n何かを勉強するとか新しく何かを始めるという時に、<strong>「それが当たり前にある」</strong>という環境って非常に大事なんじゃないかと今回の件で思いました。\r\n\r\n&nbsp;\r\n\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書などを用意しますよね。それで「これを勉強するんだ」というある程度強い意識を持って勉強する、\r\n\r\n&nbsp;\r\n\r\nというのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語に限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めるとか、何らかのきっかけがないとなかなか始められない気がします。というのも将来はわかりませんが、現在の日本において外国語を学ばなければ食べていけない、というわけではないからです。つまり切羽詰った状態ではないということです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体から見ればそういった外国語が大きく関わる仕事というのは少数派ですし、それができなかったからといって特に困ることはありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら、その子どもは聞きなれた日本語とは違う言葉を日々耳にするわけで、やはり外国語というものを意識するというか、自然に学習していくのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描かれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で、さらに親がよく海外へ出張へ行ったりするような家庭であれば、その子どもは自然に「あぁ、大人になったら英語もできるようにならないといけないんだ」と考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、海外で働く可能性とか無理なく自然に外国語を勉強しようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする、と今回の自分の経験や感覚から思いました。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block;" data-ad-format="autorelaxed" data-ad-client="ca-pub-5555284323037918" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-slot="8054263157"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/08/05/155204">日系企業と比較した外資系企業の良さは「自由さ」にあるかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/04/30/143014">安易な心構えで外国資本企業に派遣社員の経理として入ってはいけない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/05/18/053830">外国資本企業含む許可事業所数（一般・特定）約８万社の派遣会社と、派遣会社ごとの得意分野について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/04/23/101513">「その案件は外資系の企業ですか？」━派遣社員が仕事先を選ぶ時の注意点</a></strong></li>\r\n</ul>', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'publish', 'open', 'open', '', '1131', '', '', '2018-04-29 21:28:27', '2018-04-29 21:28:27', '', 0, 'https://www.chishikinosoukonoseiri.com/?p=2695', 0, 'post', '', 0),
(2696, 1, '2018-02-11 11:19:19', '2018-02-11 11:19:19', '&nbsp;\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。今までの自分であれば、このアメリカなどの外国で働くと「意\r\n\r\n識」することですらとんでもないこと、敷居が非常に高いことでした。\r\n\r\n&nbsp;\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思いまして、ちょっと書いてみようかと思います。\r\n<h2>なぜこのような感覚を持つようになったのか？</h2>\r\nまぁ考えられる理由のひとつは、現在働いている企業が「外資系」であるということ\r\n\r\nの影響であろうということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n「外国」を意識する点としては、書類に印字されている言語が英語という点は\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意して、「これを勉強するんだ」というある程度強い意識を持って勉強する、と\r\n\r\nいうのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語に\r\n\r\n限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めないとなかなか始められない気がします。\r\n\r\nというのも、将来はわかりませんが、現在の日本において外国語を学ばなければ食べ\r\n\r\nていけない、というわけではないからです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が関わる仕事というのは少数派ですから、特に困ることは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を耳にするということで、やはり外国\r\n\r\n語というものを意識するようになるでしょう。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で親がよく海外へ出張へ行ったりするような家庭であれば、その\r\n\r\n子どもは自然に「あぁ、大人になったら英語もできるようにならないといけないんだ」\r\n\r\nと考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、無理なく自然に外国語を勉強\r\n\r\nしようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする\r\n\r\n、ということです。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-11 11:19:19', '2018-02-11 11:19:19', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/11/2695-revision-v1', 0, 'revision', '', 0),
(2697, 1, '2018-02-11 11:26:43', '2018-02-11 11:26:43', '', 'statue-of-liberty-2501264_640', '', 'inherit', 'open', 'closed', '', 'statue-of-liberty-2501264_640', '', '', '2018-04-29 21:28:23', '2018-04-29 21:28:23', '', 2695, 'https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640.jpg', 0, 'attachment', 'image/jpeg', 0),
(2698, 1, '2018-02-11 11:28:58', '2018-02-11 11:28:58', '<img class="alignnone  wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、このアメリカなどの外国で働くと「意識」することですら、\r\n\r\nとんでもないこと、敷居が非常に高いことでした。というか、そのような感覚が生ま\r\n\r\nれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思いまして、ちょっと書いてみようかと思います。\r\n<h2>なぜこのような感覚を持つようになったのか？</h2>\r\nまぁ考えられる理由のひとつは、現在働いている企業が「外資系」であるということ\r\n\r\nの影響であろうということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n「外国」を意識する点としては、書類に印字されている言語が英語という点は\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n&nbsp;\r\n<h2></h2>\r\n<h2>日本企業の文化が合わない</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような日本企業の文化に自分はなかなか馴染めません。全く酒が飲めないという\r\n\r\nこともないのですが、\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意して、「これを勉強するんだ」というある程度強い意識を持って勉強する、と\r\n\r\nいうのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語に\r\n\r\n限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めないとなかなか始められない気がします。\r\n\r\nというのも、将来はわかりませんが、現在の日本において外国語を学ばなければ食べ\r\n\r\nていけない、というわけではないからです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が関わる仕事というのは少数派ですから、特に困ることは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を耳にするということで、やはり外国\r\n\r\n語というものを意識するようになるでしょう。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で親がよく海外へ出張へ行ったりするような家庭であれば、その\r\n\r\n子どもは自然に「あぁ、大人になったら英語もできるようにならないといけないんだ」\r\n\r\nと考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、無理なく自然に外国語を勉強\r\n\r\nしようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする\r\n\r\n、ということです。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-11 11:28:58', '2018-02-11 11:28:58', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/11/2695-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2699, 1, '2018-02-11 11:31:12', '2018-02-11 11:31:12', '<img class="alignnone wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で\r\n\r\n働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思いまして、ちょっと書いてみようかと思います。\r\n<h2>なぜこのような感覚を持つようになったのか？</h2>\r\nまぁ考えられる理由のひとつは、現在働いている企業が「外資系」であるということ\r\n\r\nの影響であろうということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n「外国」を意識する点としては、書類に印字されている言語が英語という点は\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n&nbsp;\r\n<h2></h2>\r\n<h2>日本企業の文化が合わない</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような日本企業の文化に自分はなかなか馴染めません。全く酒が飲めないという\r\n\r\nこともないのですが、\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意して、「これを勉強するんだ」というある程度強い意識を持って勉強する、と\r\n\r\nいうのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語に\r\n\r\n限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めないとなかなか始められない気がします。\r\n\r\nというのも、将来はわかりませんが、現在の日本において外国語を学ばなければ食べ\r\n\r\nていけない、というわけではないからです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が関わる仕事というのは少数派ですから、特に困ることは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を耳にするということで、やはり外国\r\n\r\n語というものを意識するようになるでしょう。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で親がよく海外へ出張へ行ったりするような家庭であれば、その\r\n\r\n子どもは自然に「あぁ、大人になったら英語もできるようにならないといけないんだ」\r\n\r\nと考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、無理なく自然に外国語を勉強\r\n\r\nしようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする\r\n\r\n、ということです。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-11 11:31:12', '2018-02-11 11:31:12', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/11/2695-revision-v1', 0, 'revision', '', 0),
(2700, 1, '2018-02-12 06:31:05', '2018-02-12 06:31:05', '<img class="alignnone wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で\r\n\r\n働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思いまして、ちょっと書いてみようかと思います。\r\n<h2>なぜこのような感覚を持つようになったのか？</h2>\r\nまぁ考えられる理由のひとつは、現在働いている企業が「外資系」であるということ\r\n\r\nの影響であろうということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n「外国」を意識する点としては、書類に印字されている言語が英語という点は\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n外資とかアメリカとか意識するようになった理由としては、仕事以外で「英語」とい\r\n\r\nう「文字」に触れる機会が増えたからでしょう。\r\n\r\n&nbsp;\r\n\r\n外資系の仕事で、処理する書類の中に英語があるというのはもちろんですが、最近勉\r\n\r\n強していたエクセルのVBAもある程度影響があったのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語というと、基本的に英語です。例えば最近勉強した中では、\r\n\r\n「RowHeightプロパティ」とか「ColumnWidthプロパティ」といった単語が出てき\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\nテキストの中にそういった単語の意味について説明してくれている部分もありますが\r\n\r\n、全てではありません。ですから電子辞書などを使って調べなければいけません。\r\n\r\n&nbsp;\r\n\r\n「Rowは行でHeightは高さだから、RowHeightプロパティは行の高さを設定できる\r\n\r\nのか。」\r\n\r\n「Columnは列だけどWidthってどんな意味かな?（この後電子辞書で調べる）あぁ、\r\n\r\n『広さ、幅』という意味だから、ColumnWidthプロパティは列の幅を設定できるん\r\n\r\nだな」\r\n\r\n&nbsp;\r\n\r\nといった感じでわからない単語と格闘するのですが、そういった日々の蓄積が「英\r\n\r\n語」とか「外国」というものに対する意識に繋がっていっているのではないかと感じ\r\n\r\nました。\r\n<h2>日本企業の文化がいまだに疑問</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような日本企業の文化に自分はなかなか馴染めません。全く酒が飲めないという\r\n\r\nこともないのですが。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n外資系企業だからといって、全てが「完全に外国の文化やルール」というわけではな\r\n\r\nいということです。外資系企業といっても、飲み会はあったりしますし、誘われたり\r\n\r\nもします。\r\n\r\n&nbsp;\r\n\r\n自分は派遣社員という身分を利用して、上手く理由をつくって飲み会の誘いを回避し\r\n\r\nたりしましたが、その時は企業文化と言うものに少しショックを受けたのを覚えてい\r\n\r\nます。日本の文化が結構残っている所もあるんだという点にです。\r\n\r\n&nbsp;\r\n\r\nただ、現在働いている所と以前働いていた所で共通しているのは、「上司と部下の上\r\n\r\n下関係があまり厳しくない」という点です。この点は嬉しかったです。\r\n\r\n&nbsp;\r\n\r\nなんというか、上の人間の下の人間に対する言動などが優しい感じがします。それに\r\n\r\n役員とか社長に対しても役職名ではなく「さん」づけで呼んでいいというは新鮮な感\r\n\r\nじがしました。仕事の進め方もそうですし、報告や連絡の方法も合理的です。\r\n\r\n&nbsp;\r\n\r\nそれに対して日本企業は、特に大企業であるほど、なぜか無駄に上下関係が厳しいで\r\n\r\nす。敬語とハンコとか上司に対する呼び方とか、何社も経験してきたからこそわかり\r\n\r\nますが、「なぜいまだにそんなことをするのだろう」と思えることが多々あります。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n何かを勉強するとか新しく何かを始めるという時に、<strong>「それが当たり前にある」</strong>とい\r\n\r\nう環境って非常に大事なんじゃないかと今回の件で思いました。\r\n\r\n&nbsp;\r\n\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意しますよね。それで「これを勉強するんだ」というある程度強い意識を持って\r\n\r\n勉強する、\r\n\r\n&nbsp;\r\n\r\nというのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語\r\n\r\nに限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めなるとか、何らかのきっかけがないとなか\r\n\r\nなか始められない気がします。というのも将来はわかりませんが、現在の日本におい\r\n\r\nて外国語を学ばなければ食べていけない、というわけではないからです。つまり切羽\r\n\r\n詰った状態ではないということです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が関わる仕事というのは少数派ですから、特に困ることは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を日々耳にするわけで、やはり外国語\r\n\r\nというものを意識するというか、自然に学習していくのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で、さらに親がよく海外へ出張へ行ったりするような家庭であれ\r\n\r\nば、その子どもは自然に「あぁ、大人になったら英語もできるようにならないといけ\r\n\r\nないんだ」と考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、無理なく自然に外国語を勉強\r\n\r\nしようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする\r\n\r\n、と今回の自分の感覚から思いました。\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-12 06:31:05', '2018-02-12 06:31:05', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/12/2695-revision-v1', 0, 'revision', '', 0),
(2701, 1, '2018-02-12 06:48:23', '2018-02-12 06:48:23', '<img class="alignnone wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で\r\n\r\n働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n自分から見て外国へ出張へ行く人とか、アメリカの現地の企業で働いている日本人\r\n\r\nというのはとてつもなく優秀で、まさに雲の上の存在みたいなイメージです。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思いまして、ちょっと書いてみようかと思います。\r\n\r\n&nbsp;\r\n<h2>外資系企業での日常</h2>\r\nなぜこのような感覚を持つようになったのでしょうか？理由はいくつか考えられます。\r\n\r\n&nbsp;\r\n\r\n考えられる理由のひとつは、現在働いている企業が「外資系」であるということの影\r\n\r\n響ではないかということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n今までの環境と違う点は、日常的に英語の会話を耳にするようになったことです。も\r\n\r\nちろんその会話の意味は全然わかりません。ただ、言葉の語感やアクセントなどから\r\n\r\n「あぁなんか英語で話してるんだな」というのはわかります。\r\n\r\n&nbsp;\r\n\r\nこれは誰でも感じることかとは思いますが、自分の周りで自分のわからない言語で話\r\n\r\nをしている人がいたらやはり気にはなりますよね。「あれ？何の話してるんだろう？\r\n\r\n」と\r\n\r\n&nbsp;\r\n\r\nそういった日々に耳にする英語の会話がひとつ。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n「外国」を意識するもうひとつの点としては、書類に印字されている言語が英語であ\r\n\r\nるということもあるでしょう。もちろん全部わかるわけではないので、わからない部\r\n\r\n分はグーグル翻訳やインターネットを使って調べます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n外資とかアメリカとか意識するようになった理由としては、仕事以外で「英語」とい\r\n\r\nう「文字」に触れる機会が増えたからでしょう。\r\n\r\n&nbsp;\r\n\r\n外資系の仕事で、処理する書類の中に英語があるというのはもちろんですが、最近勉\r\n\r\n強していたエクセルのVBAもある程度影響があったのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語というと、基本的に英語です。例えば最近勉強した中では、\r\n\r\n「RowHeightプロパティ」とか「ColumnWidthプロパティ」といった単語が出てき\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\nテキストの中にそういった単語の意味について説明してくれている部分もありますが\r\n\r\n、全てではありません。ですから電子辞書などを使って調べなければいけません。\r\n\r\n&nbsp;\r\n\r\n「Rowは行でHeightは高さだから、RowHeightプロパティは行の高さを設定できる\r\n\r\nのか。」\r\n\r\n「Columnは列だけどWidthってどんな意味かな?（この後電子辞書で調べる）あぁ、\r\n\r\n『広さ、幅』という意味だから、ColumnWidthプロパティは列の幅を設定できるん\r\n\r\nだな」\r\n\r\n&nbsp;\r\n\r\nといった感じでわからない単語と格闘するのですが、そういった日々の蓄積が「英\r\n\r\n語」とか「外国」というものに対する意識に繋がっていっているのではないかと感じ\r\n\r\nました。\r\n<h2>日本企業の文化がいまだに疑問</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような日本企業の文化に自分はなかなか馴染めません。全く酒が飲めないという\r\n\r\nこともないのですが。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n外資系企業だからといって、全てが「完全に外国の文化やルール」というわけではな\r\n\r\nいということです。外資系企業といっても、飲み会はあったりしますし、誘われたり\r\n\r\nもします。\r\n\r\n&nbsp;\r\n\r\n自分は派遣社員という身分を利用して、上手く理由をつくって飲み会の誘いを回避し\r\n\r\nたりしましたが、その時は企業文化と言うものに少しショックを受けたのを覚えてい\r\n\r\nます。日本の文化が結構残っている所もあるんだという点にです。\r\n\r\n&nbsp;\r\n\r\nただ、現在働いている所と以前働いていた所で共通しているのは、「上司と部下の上\r\n\r\n下関係があまり厳しくない」という点です。この点は嬉しかったです。\r\n\r\n&nbsp;\r\n\r\nなんというか、上の人間の下の人間に対する言動などが優しい感じがします。それに\r\n\r\n役員とか社長に対しても役職名ではなく「さん」づけで呼んでいいというは新鮮な感\r\n\r\nじがしました。仕事の進め方もそうですし、報告や連絡の方法も合理的です。\r\n\r\n&nbsp;\r\n\r\nそれに対して日本企業は、特に大企業であるほど、なぜか無駄に上下関係が厳しいで\r\n\r\nす。敬語とハンコとか上司に対する呼び方とか仕事のルールとか、何社も経験してき\r\n\r\nたからこそわかりますが、「なぜいまだにそんなことをするのだろう」と思えること\r\n\r\nが多々あります。\r\n\r\n&nbsp;\r\n\r\n日本企業にも安定という面では良いのでしょうが、自分の感覚としては日本企業の文\r\n\r\n化はあまり合わない感じがします。まぁこれは個人差があると思うので、その人にと\r\n\r\nって適した文化の企業を選んでいけばいいと思います。\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n何かを勉強するとか新しく何かを始めるという時に、<strong>「それが当たり前にある」</strong>とい\r\n\r\nう環境って非常に大事なんじゃないかと今回の件で思いました。\r\n\r\n&nbsp;\r\n\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意しますよね。それで「これを勉強するんだ」というある程度強い意識を持って\r\n\r\n勉強する、\r\n\r\n&nbsp;\r\n\r\nというのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語\r\n\r\nに限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めなるとか、何らかのきっかけがないとなか\r\n\r\nなか始められない気がします。というのも将来はわかりませんが、現在の日本におい\r\n\r\nて外国語を学ばなければ食べていけない、というわけではないからです。つまり切羽\r\n\r\n詰った状態ではないということです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が関わる仕事というのは少数派ですから、特に困ることは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を日々耳にするわけで、やはり外国語\r\n\r\nというものを意識するというか、自然に学習していくのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で、さらに親がよく海外へ出張へ行ったりするような家庭であれ\r\n\r\nば、その子どもは自然に「あぁ、大人になったら英語もできるようにならないといけ\r\n\r\nないんだ」と考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、無理なく自然に外国語を勉強\r\n\r\nしようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする\r\n\r\n、と今回の自分の感覚から思いました。\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-12 06:48:23', '2018-02-12 06:48:23', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/12/2695-revision-v1', 0, 'revision', '', 0),
(2702, 1, '2018-02-12 08:09:05', '2018-02-12 08:09:05', '<img class="alignnone wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で\r\n\r\n働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n自分から見て外国へ出張へ行く人とか、アメリカの現地の企業で働いている日本人\r\n\r\nというのはとてつもなく優秀で、まさに雲の上の存在みたいなイメージです。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思ったので、ちょっと書いてみようかと思います。\r\n<h2>外資系企業での日常</h2>\r\nなぜこのような感覚を持つようになったのでしょうか？理由はいくつか考えられます。\r\n\r\n&nbsp;\r\n\r\n考えられる理由のひとつは、現在働いている企業が「外資系」であるということの影\r\n\r\n響ではないかということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n今までの環境と違う点は、日常的に英語の会話を耳にするようになったことです。も\r\n\r\nちろんその会話の意味は全然わかりません。ただ、言葉の語感やアクセントなどから\r\n\r\n「あぁなんか英語で話してるんだな」というのはわかります。\r\n\r\n&nbsp;\r\n\r\nこれは誰でも感じることかとは思いますが、自分の周りで自分のわからない言語で話\r\n\r\nをしている人がいたらやはり気にはなりますよね。「あれ？何の話してるんだろう？\r\n\r\n」と\r\n\r\n&nbsp;\r\n\r\nそういった日々に耳にする英語の会話がひとつ。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n「外国」を意識するもうひとつの点としては、書類に印字されている言語が英語であ\r\n\r\nるということもあるでしょう。もちろん全部わかるわけではないので、わからない部\r\n\r\n分はグーグル翻訳やインターネットを使って調べます。\r\n\r\n&nbsp;\r\n\r\nこういった部分も外国を意識するようになった点のひとつだったんじゃないかなぁと\r\n\r\n思います。\r\n\r\n&nbsp;\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n外資とかアメリカとか意識するようになった理由としては、仕事以外で「英語」とい\r\n\r\nう「文字」に触れる機会が増えたからでしょう。\r\n\r\n&nbsp;\r\n\r\n外資系の仕事で、処理する書類の中に英語があるというのはもちろんですが、最近勉\r\n\r\n強していたエクセルのVBAもある程度影響があったのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語というと、基本的に英語です。例えば最近勉強した中では、\r\n\r\n「RowHeightプロパティ」とか「ColumnWidthプロパティ」といった単語が出てき\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\nテキストの中にそういった単語の意味について説明してくれている部分もありますが\r\n\r\n、全てではありません。ですから電子辞書などを使って調べなければいけません。\r\n\r\n&nbsp;\r\n\r\n「Rowは行でHeightは高さだから、RowHeightプロパティは行の高さを設定できる\r\n\r\nのか。」\r\n\r\n「Columnは列だけどWidthってどんな意味かな?（この後電子辞書で調べる）あぁ、\r\n\r\n『広さ、幅』という意味だから、ColumnWidthプロパティは列の幅を設定できるん\r\n\r\nだな」\r\n\r\n&nbsp;\r\n\r\nといった感じでわからない単語と格闘するのですが、そういった日々の蓄積が「英\r\n\r\n語」とか「外国」というものに対する意識に繋がっていっているのではないかと感じ\r\n\r\nました。\r\n<h2>日本企業の文化がいまだに疑問</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような日本企業の文化に自分はなかなか馴染めません。全く酒が飲めないという\r\n\r\nこともないのですが。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n外資系企業だからといって、全てが「完全に外国の文化やルール」というわけではな\r\n\r\nいということです。外資系企業といっても、飲み会はあったりしますし、誘われたり\r\n\r\nもします。\r\n\r\n&nbsp;\r\n\r\n自分は派遣社員という身分を利用して、上手く理由をつくって飲み会の誘いを回避し\r\n\r\nたりしましたが、その時は企業文化と言うものに少しショックを受けたのを覚えてい\r\n\r\nます。日本の文化が結構残っている所もあるんだという点にです。\r\n\r\n&nbsp;\r\n\r\nただ、現在働いている所と以前働いていた所で共通しているのは、「上司と部下の上\r\n\r\n下関係があまり厳しくない」という点です。この点は嬉しかったです。\r\n\r\n&nbsp;\r\n\r\nなんというか、上の人間の下の人間に対する言動などが優しい感じがします。それに\r\n\r\n役員とか社長に対しても役職名ではなく「さん」づけで呼んでいいというは新鮮な感\r\n\r\nじがしました。仕事の進め方もそうですし、報告や連絡の方法も合理的です。\r\n\r\n&nbsp;\r\n\r\nそれに対して日本企業は、特に大企業であるほど、なぜか無駄に上下関係が厳しいで\r\n\r\nす。敬語とハンコとか上司に対する呼び方とか仕事のルールとか、何社も経験してき\r\n\r\nたからこそわかりますが、「なぜいまだにそんなことをするのだろう」と思えること\r\n\r\nが多々あります。\r\n\r\n&nbsp;\r\n\r\n日本企業にも安定という面では良いのでしょうが、自分の感覚としては日本企業の文\r\n\r\n化はあまり合わない感じがします。まぁこれは個人差があると思うので、その人にと\r\n\r\nって適した文化の企業を選んでいけばいいと思います。\r\n\r\n&nbsp;\r\n<h2>人口が減少していく日本と増加していく世界との関係</h2>\r\n「海外で働く可能性」について意識するようになった理由の中のひとつとして、自分\r\n\r\nの日常的に接する部分以外に、昨今問題視されるようになった「日本の人口が今後減\r\n\r\n少していく」という点もあるんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\n現在日本は人口の減少が始まっており、今後の日本の人口がどのように減っていくの\r\n\r\nかという「人口減少カレンダー」なるものもあるようです。\r\n\r\n&nbsp;\r\n\r\nそれに反して、世界の人口は今後70億とか80億、それ以上に増えていくだろうと言わ\r\n\r\nれています。\r\n\r\n&nbsp;\r\n\r\n日本の人口が減少していくだろうという点も、「海外で働くとはどんなものだろうか」\r\n\r\nという意識が生まれた原因のひとつではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nというのは、国内市場が縮小すれば必然的に外に目を向けていかなければいけないわけ\r\n\r\nで、そうなると国内での仕事も減っていくのではないかと考えるのもおかしなことでは\r\n\r\nないと思います。\r\n\r\n&nbsp;\r\n\r\n現在の日本は人口が減少していて人手不足であり、今後も人口の減少が続くのだから仕\r\n\r\n事が減るわけがない、という意見もあるかもしれません。ですが、現在の時間軸におけ\r\n\r\nる技術の進歩は目覚しいものがあります。\r\n\r\n&nbsp;\r\n\r\n少し昔であれば「まだまだ何十年も先のことだろう」と思えたかもしれません。ですが\r\n\r\n、技術は「指数関数的」に進歩していると言われ、周りの環境や報道されるニュースで\r\n\r\nもなんとなくそれは理解できます。\r\n\r\n&nbsp;\r\n\r\n今まで起きたことが今後もずっと同じように起こるなんて言えないわけで、となれば、\r\n\r\nやはりいろいろな選択肢を考えるようになるのも自然の流れではないでしょうか。\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n何かを勉強するとか新しく何かを始めるという時に、<strong>「それが当たり前にある」</strong>とい\r\n\r\nう環境って非常に大事なんじゃないかと今回の件で思いました。\r\n\r\n&nbsp;\r\n\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意しますよね。それで「これを勉強するんだ」というある程度強い意識を持って\r\n\r\n勉強する、\r\n\r\n&nbsp;\r\n\r\nというのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語\r\n\r\nに限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めなるとか、何らかのきっかけがないとなか\r\n\r\nなか始められない気がします。というのも将来はわかりませんが、現在の日本におい\r\n\r\nて外国語を学ばなければ食べていけない、というわけではないからです。つまり切羽\r\n\r\n詰った状態ではないということです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が関わる仕事というのは少数派ですから、特に困ることは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を日々耳にするわけで、やはり外国語\r\n\r\nというものを意識するというか、自然に学習していくのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で、さらに親がよく海外へ出張へ行ったりするような家庭であれ\r\n\r\nば、その子どもは自然に「あぁ、大人になったら英語もできるようにならないといけ\r\n\r\nないんだ」と考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、無理なく自然に外国語を勉強\r\n\r\nしようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする\r\n\r\n、と今回の自分の感覚から思いました。\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-12 08:09:05', '2018-02-12 08:09:05', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/12/2695-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2703, 1, '2018-02-12 08:12:13', '2018-02-12 08:12:13', '<img class="alignnone wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で\r\n\r\n働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n自分から見て外国へ出張へ行く人とか、アメリカの現地の企業で働いている日本人\r\n\r\nというのはとてつもなく優秀で、まさに雲の上の存在みたいなイメージです。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思ったので、ちょっと書いてみようかと思います。\r\n<h2>外資系企業での日常</h2>\r\nなぜこのような感覚を持つようになったのでしょうか？理由はいくつか考えられます。\r\n\r\n&nbsp;\r\n\r\n考えられる理由のひとつは、現在働いている企業が「外資系」であるということの影\r\n\r\n響ではないかということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n今までの環境と違う点は、日常的に英語の会話を耳にするようになったことです。も\r\n\r\nちろんその会話の意味は全然わかりません。ただ、言葉の語感やアクセントなどから\r\n\r\n「あぁなんか英語で話してるんだな」というのはわかります。\r\n\r\n&nbsp;\r\n\r\nこれは誰でも感じることかとは思いますが、自分の周りで自分のわからない言語で話\r\n\r\nをしている人がいたらやはり気にはなりますよね。「あれ？何の話してるんだろう？\r\n\r\n」と\r\n\r\n&nbsp;\r\n\r\nそういった日々に耳にする英語の会話がひとつ。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n「外国」を意識するもうひとつの点としては、書類に印字されている言語が英語であ\r\n\r\nるということもあるでしょう。もちろん全部わかるわけではないので、わからない部\r\n\r\n分はグーグル翻訳やインターネットを使って調べます。\r\n\r\n&nbsp;\r\n\r\nこういった部分も外国を意識するようになった点のひとつだったんじゃないかなぁと\r\n\r\n思います。\r\n\r\n&nbsp;\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n外資とかアメリカとか意識するようになった理由としては、仕事以外で「英語」とい\r\n\r\nう「文字」に触れる機会が増えたからでしょう。\r\n\r\n&nbsp;\r\n\r\n外資系の仕事で、処理する書類の中に英語があるというのはもちろんですが、最近勉\r\n\r\n強していたエクセルのVBAもある程度影響があったのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語というと、基本的に英語です。例えば最近勉強した中では、\r\n\r\n「RowHeightプロパティ」とか「ColumnWidthプロパティ」といった単語が出てき\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\nテキストの中にそういった単語の意味について説明してくれている部分もありますが\r\n\r\n、全てではありません。ですから電子辞書などを使って調べなければいけません。\r\n\r\n&nbsp;\r\n\r\n「Rowは行でHeightは高さだから、RowHeightプロパティは行の高さを設定できる\r\n\r\nのか。」\r\n\r\n「Columnは列だけどWidthってどんな意味かな?（この後電子辞書で調べる）あぁ、\r\n\r\n『広さ、幅』という意味だから、ColumnWidthプロパティは列の幅を設定できるん\r\n\r\nだな」\r\n\r\n&nbsp;\r\n\r\nといった感じでわからない単語と格闘するのですが、そういった日々の蓄積が「英\r\n\r\n語」とか「外国」というものに対する意識に繋がっていっているのではないかと感じ\r\n\r\nました。\r\n<h2>日本企業の文化がいまだに疑問</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような日本企業の文化に自分はなかなか馴染めません。全く酒が飲めないという\r\n\r\nこともないのですが。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n外資系企業だからといって、全てが「完全に外国の文化やルール」というわけではな\r\n\r\nいということです。外資系企業といっても、飲み会はあったりしますし、誘われたり\r\n\r\nもします。\r\n\r\n&nbsp;\r\n\r\n自分は派遣社員という身分を利用して、上手く理由をつくって飲み会の誘いを回避し\r\n\r\nたりしましたが、その時は企業文化と言うものに少しショックを受けたのを覚えてい\r\n\r\nます。日本の文化が結構残っている所もあるんだという点にです。\r\n\r\n&nbsp;\r\n\r\nただ、現在働いている所と以前働いていた所で共通しているのは、「上司と部下の上\r\n\r\n下関係があまり厳しくない」という点です。この点は嬉しかったです。\r\n\r\n&nbsp;\r\n\r\nなんというか、上の人間の下の人間に対する言動などが優しい感じがします。それに\r\n\r\n役員とか社長に対しても役職名ではなく「さん」づけで呼んでいいというは新鮮な感\r\n\r\nじがしました。仕事の進め方もそうですし、報告や連絡の方法も合理的です。\r\n\r\n&nbsp;\r\n\r\nそれに対して日本企業は、特に大企業であるほど、なぜか無駄に上下関係が厳しいで\r\n\r\nす。敬語とハンコとか上司に対する呼び方とか仕事のルールとか、何社も経験してき\r\n\r\nたからこそわかりますが、「なぜいまだにそんなことをするのだろう」と思えること\r\n\r\nが多々あります。\r\n\r\n&nbsp;\r\n\r\nそのように考えられるようになったのも、1つの会社だけではなくて、複数の会社を\r\n\r\n経験して比較できるようになったからだと思います。\r\n\r\n&nbsp;\r\n\r\nこれが今まで勤務してきた会社が1社とか2社だけだったら今のような感覚は持てて\r\n\r\nいなかったでしょう。\r\n\r\n&nbsp;\r\n\r\n日本企業にも安定という面では良いのでしょうが、自分の感覚としては日本企業の文\r\n\r\n化はあまり合わない感じがします。まぁこれは個人差があると思うので、その人にと\r\n\r\nって適した文化の企業を選んでいけばいいと思います。\r\n\r\n&nbsp;\r\n<h2>人口が減少していく日本と増加していく世界との関係</h2>\r\n「海外で働く可能性」について意識するようになった理由の中のひとつとして、自分\r\n\r\nの日常的に接する部分以外に、昨今問題視されるようになった「日本の人口が今後減\r\n\r\n少していく」という点もあるんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\n現在日本は人口の減少が始まっており、今後の日本の人口がどのように減っていくの\r\n\r\nかという「人口減少カレンダー」なるものもあるようです。\r\n\r\n&nbsp;\r\n\r\nそれに反して、世界の人口は今後70億とか80億、それ以上に増えていくだろうと言わ\r\n\r\nれています。\r\n\r\n&nbsp;\r\n\r\n日本の人口が減少していくだろうという点も、「海外で働くとはどんなものだろうか」\r\n\r\nという意識が生まれた原因のひとつではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nというのは、国内市場が縮小すれば必然的に外に目を向けていかなければいけないわけ\r\n\r\nで、そうなると国内での仕事も減っていくのではないかと考えるのもおかしなことでは\r\n\r\nないと思います。\r\n\r\n&nbsp;\r\n\r\n現在の日本は人口が減少していて人手不足であり、今後も人口の減少が続くのだから仕\r\n\r\n事が減るわけがない、という意見もあるかもしれません。ですが、現在の時間軸におけ\r\n\r\nる技術の進歩は目覚しいものがあります。\r\n\r\n&nbsp;\r\n\r\n少し昔であれば「まだまだ何十年も先のことだろう」と思えたかもしれません。ですが\r\n\r\n、技術は「指数関数的」に進歩していると言われ、周りの環境や報道されるニュースで\r\n\r\nもなんとなくそれは理解できます。\r\n\r\n&nbsp;\r\n\r\n今まで起きたことが今後もずっと同じように起こるなんて言えないわけで、となれば、\r\n\r\nやはりいろいろな選択肢を考えるようになるのも自然の流れではないでしょうか。\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n何かを勉強するとか新しく何かを始めるという時に、<strong>「それが当たり前にある」</strong>とい\r\n\r\nう環境って非常に大事なんじゃないかと今回の件で思いました。\r\n\r\n&nbsp;\r\n\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意しますよね。それで「これを勉強するんだ」というある程度強い意識を持って\r\n\r\n勉強する、\r\n\r\n&nbsp;\r\n\r\nというのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語\r\n\r\nに限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めなるとか、何らかのきっかけがないとなか\r\n\r\nなか始められない気がします。というのも将来はわかりませんが、現在の日本におい\r\n\r\nて外国語を学ばなければ食べていけない、というわけではないからです。つまり切羽\r\n\r\n詰った状態ではないということです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が関わる仕事というのは少数派ですから、特に困ることは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を日々耳にするわけで、やはり外国語\r\n\r\nというものを意識するというか、自然に学習していくのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で、さらに親がよく海外へ出張へ行ったりするような家庭であれ\r\n\r\nば、その子どもは自然に「あぁ、大人になったら英語もできるようにならないといけ\r\n\r\nないんだ」と考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、無理なく自然に外国語を勉強\r\n\r\nしようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする\r\n\r\n、と今回の自分の感覚から思いました。\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-12 08:12:13', '2018-02-12 08:12:13', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/12/2695-revision-v1', 0, 'revision', '', 0),
(2704, 1, '2018-02-12 08:35:32', '2018-02-12 08:35:32', '<img class="alignnone wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で\r\n\r\n働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n自分から見て外国へ出張へ行く人とか、アメリカの現地の企業で働いている日本人\r\n\r\nというのはとてつもなく優秀で、まさに雲の上の存在みたいなイメージでした。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思ったので、ちょっと書いてみようかと思います。\r\n<h2>外資系企業での日常</h2>\r\nなぜこのような感覚を持つようになったのか。理由はいくつか考えられます。\r\n\r\n&nbsp;\r\n\r\n考えられる理由のひとつは、現在働いている企業が「外資系」であるということの影\r\n\r\n響ではないかということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n今までの環境と違う点は、日常的に英語の会話を耳にするようになったことです。も\r\n\r\nちろんその会話の意味は全然わかりません。ただ、言葉の語感やアクセントなどから\r\n\r\n「あぁなんか英語で話してるんだな」というのはわかります。\r\n\r\n&nbsp;\r\n\r\nこれは誰でも感じることかとは思いますが、自分の周りで自分のわからない言語で話\r\n\r\nをしている人がいたらやはり気にはなりますよね。「あれ？何の話してるんだろう？\r\n\r\n」と\r\n\r\n&nbsp;\r\n\r\nそういった日々耳にする英語の会話がひとつ。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n「外国」を意識するもうひとつの点としては、書類に印字されている言語が英語であ\r\n\r\nるということもあるでしょう。もちろん全部わかるわけではないので、わからない部\r\n\r\n分はグーグル翻訳やインターネットを使って調べます。\r\n\r\n&nbsp;\r\n\r\nこういった部分も外国で働く可能性を意識するようになった点のひとつだったんじゃ\r\n\r\nないかなぁと思います。\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n外資とかアメリカとか意識するようになった理由としては、仕事以外でも「英語」と\r\n\r\nいう「文字」に触れる機会が増えたからでしょう。\r\n\r\n&nbsp;\r\n\r\n外資系の仕事で、処理する書類の中に英語があるというのはもちろんですが、最近勉\r\n\r\n強していたエクセルのVBAもある程度影響があったのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語というと基本的に英語です。例えば最近勉強した中では、\r\n\r\n「RowHeightプロパティ」とか「ColumnWidthプロパティ」といった単語が出てき\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\nテキストの中にそういった単語の意味について説明してくれている部分もありますが\r\n\r\n、全てではありません。ですから電子辞書などを使って調べなければいけません。\r\n\r\n&nbsp;\r\n\r\n「Rowは行でHeightは高さだから、RowHeightプロパティは行の高さを設定できる\r\n\r\nのか。」\r\n\r\n「Columnは列だけどWidthってどんな意味かな?（この後電子辞書で調べる）あぁ、\r\n\r\n『広さ、幅』という意味だから、ColumnWidthプロパティは列の幅を設定できるん\r\n\r\nだな」\r\n\r\n&nbsp;\r\n\r\nといった感じでわからない単語と格闘するのですが、そういった日々の蓄積が「英\r\n\r\n語」とか「外国」というものに対する意識に繋がっていっているのではないかと感じ\r\n\r\nました。\r\n<h2>日本企業と外資系企業の文化の違いを比較できるようになって</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような日本企業の文化に自分はなかなか馴染めません。全く酒が飲めないという\r\n\r\nこともないのですが。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n外資系企業だからといって、全てが「完全に外国の文化やルール」というわけではな\r\n\r\nいということです。外資系企業といっても、飲み会はあったりしますし、誘われたり\r\n\r\nもします。\r\n\r\n&nbsp;\r\n\r\n自分は派遣社員という身分を利用して、上手く理由をつくって飲み会の誘いを回避し\r\n\r\nたりしましたが、その時は企業文化と言うものに少しショックを受けたのを覚えてい\r\n\r\nます。日本の文化が結構残っている所もあるんだという点にです。\r\n\r\n&nbsp;\r\n\r\nただ、現在働いている所と以前働いていた所で共通しているのは、「上司と部下の上\r\n\r\n下関係があまり厳しくない」という点です。この点は嬉しかったです。\r\n\r\n&nbsp;\r\n\r\nなんというか、上の人間の下の人間に対する言動などが優しい感じがします。それに\r\n\r\n役員とか社長に対しても役職名ではなく「さん」づけで呼んでいいというは新鮮な感\r\n\r\nじがしました。仕事の進め方もそうですし、報告や連絡の方法も合理的です。\r\n\r\n&nbsp;\r\n\r\nそれに対して日本企業は、特に大企業であるほど、なぜか無駄に上下関係が厳しいで\r\n\r\nす。敬語とハンコとか上司に対する呼び方とか仕事のルールとか、何社も経験してき\r\n\r\nたからこそわかりますが、「なぜいまだにそんなことをするのだろう」と思えること\r\n\r\nが多々あります。\r\n\r\n&nbsp;\r\n\r\nそのように考えられるようになったのも、1つの会社だけではなくて、複数の会社を\r\n\r\n経験して比較できるようになったからだと思います。\r\n\r\n&nbsp;\r\n\r\nこれが今まで勤務してきた会社が1社とか2社だけだったら今のような感覚は持てて\r\n\r\nいなかったでしょう。\r\n\r\n&nbsp;\r\n\r\n日本企業にも安定という面では良いのでしょうが、自分の感覚としては日本企業の文\r\n\r\n化はあまり合わない感じがします。まぁこれは個人差があると思うので、その人にと\r\n\r\nって適した文化の企業を選んでいけばいいと思います。\r\n\r\n&nbsp;\r\n<h2>人口が減少していく日本と増加していく世界との関係</h2>\r\n「海外で働く可能性」について意識するようになった理由の中のひとつとして、自分\r\n\r\nの日常的に接する部分以外に、昨今問題視されるようになった「日本の人口が今後減\r\n\r\n少していく」という点もあるんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\n現在日本は人口の減少が始まっており、今後の日本の人口がどのように減っていくの\r\n\r\nかという「人口減少カレンダー」なるものもあるようです。\r\n\r\n&nbsp;\r\n\r\nそれに反して、世界の人口は今後70億とか80億、それ以上に増えていくだろうと言わ\r\n\r\nれています。\r\n\r\n&nbsp;\r\n\r\n日本の人口が減少していくだろうという点も、「海外で働くとはどんなものだろうか」\r\n\r\nという意識が生まれた原因のひとつではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nというのは、国内市場が縮小すれば必然的に外に目を向けていかなければいけないわけ\r\n\r\nで、そうなると国内での仕事も減っていくのではないかと考えるのもおかしなことでは\r\n\r\nないと思います。\r\n\r\n&nbsp;\r\n\r\n現在の日本は人口が減少していて人手不足であり、今後も人口の減少が続くのだから仕\r\n\r\n事が減るわけがない、という意見もあるかもしれません。ですが、現在の時間軸におけ\r\n\r\nる技術の進歩は目覚しいものがあります。\r\n\r\n&nbsp;\r\n\r\n少し昔であれば「まだまだ何十年も先のことだろう」と思えたかもしれません。ですが\r\n\r\n、技術は「指数関数的」に進歩していると言われ、周りの環境や報道されるニュースで\r\n\r\nもなんとなくそれは理解できます。\r\n\r\n&nbsp;\r\n\r\n今まで起きたことが今後もずっと同じように起こるなんて言えないわけで、となれば、\r\n\r\nやはりいろいろな選択肢を考えるようになるのも自然の流れではないでしょうか。\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n何かを勉強するとか新しく何かを始めるという時に、<strong>「それが当たり前にある」</strong>とい\r\n\r\nう環境って非常に大事なんじゃないかと今回の件で思いました。\r\n\r\n&nbsp;\r\n\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意しますよね。それで「これを勉強するんだ」というある程度強い意識を持って\r\n\r\n勉強する、\r\n\r\n&nbsp;\r\n\r\nというのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語\r\n\r\nに限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めなるとか、何らかのきっかけがないとなか\r\n\r\nなか始められない気がします。というのも将来はわかりませんが、現在の日本におい\r\n\r\nて外国語を学ばなければ食べていけない、というわけではないからです。つまり切羽\r\n\r\n詰った状態ではないということです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が関わる仕事というのは少数派ですから、特に困ることは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を日々耳にするわけで、やはり外国語\r\n\r\nというものを意識するというか、自然に学習していくのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で、さらに親がよく海外へ出張へ行ったりするような家庭であれ\r\n\r\nば、その子どもは自然に「あぁ、大人になったら英語もできるようにならないといけ\r\n\r\nないんだ」と考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、無理なく自然に外国語を勉強\r\n\r\nしようと考えられるようになるには、その人間の周りの環境ってすごい大事な気がする\r\n\r\n、と今回の自分の感覚から思いました。\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-12 08:35:32', '2018-02-12 08:35:32', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/12/2695-revision-v1', 0, 'revision', '', 0),
(2705, 1, '2018-02-12 08:48:33', '2018-02-12 08:48:33', '<img class="alignnone wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で\r\n\r\n働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n自分から見て外国へ出張へ行く人とか、アメリカの現地の企業で働いている日本人\r\n\r\nというのはとてつもなく優秀で、まさに雲の上の存在みたいなイメージでした。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思ったので、ちょっと書いてみようかと思います。\r\n<h2>外資系企業での日常</h2>\r\nなぜこのような感覚を持つようになったのか。理由はいくつか考えられます。\r\n\r\n&nbsp;\r\n\r\n考えられる理由のひとつは、現在働いている企業が「外資系」であるということの影\r\n\r\n響ではないかということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n今までの環境と違う点は、日常的に英語の会話を耳にするようになったことです。も\r\n\r\nちろんその会話の意味は全然わかりません。ただ、言葉の語感やアクセントなどから\r\n\r\n「あぁなんか英語で話してるんだな」というのはわかります。\r\n\r\n&nbsp;\r\n\r\nこれは誰でも感じることかとは思いますが、自分の周りで自分のわからない言語で話\r\n\r\nをしている人がいたらやはり気にはなりますよね。「あれ？何の話してるんだろう？\r\n\r\n」と\r\n\r\n&nbsp;\r\n\r\nそういった日々耳にする英語の会話がひとつ。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n「外国」を意識するもうひとつの点としては、書類に印字されている言語が英語であ\r\n\r\nるということもあるでしょう。もちろん全部わかるわけではないので、わからない部\r\n\r\n分はグーグル翻訳やインターネットを使って調べます。\r\n\r\n&nbsp;\r\n\r\nこういった部分も外国で働く可能性を意識するようになった点のひとつだったんじゃ\r\n\r\nないかなぁと思います。\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n外資とかアメリカとか意識するようになった理由としては、仕事以外でも「英語」と\r\n\r\nいう「文字」に触れる機会が増えたからでしょう。\r\n\r\n&nbsp;\r\n\r\n外資系の仕事で、処理する書類の中に英語があるというのはもちろんですが、最近勉\r\n\r\n強していたエクセルのVBAもある程度影響があったのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語というと基本的に英語です。例えば最近勉強した中では、\r\n\r\n「RowHeightプロパティ」とか「ColumnWidthプロパティ」といった単語が出てき\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\nテキストの中にそういった単語の意味について説明してくれている部分もありますが\r\n\r\n、全てではありません。ですから電子辞書などを使って調べなければいけません。\r\n\r\n&nbsp;\r\n\r\n「Rowは行でHeightは高さだから、RowHeightプロパティは行の高さを設定できる\r\n\r\nのか。」\r\n\r\n「Columnは列だけどWidthってどんな意味かな?（この後電子辞書で調べる）あぁ、\r\n\r\n『広さ、幅』という意味だから、ColumnWidthプロパティは列の幅を設定できるん\r\n\r\nだな」\r\n\r\n&nbsp;\r\n\r\nといった感じでわからない単語と格闘するのですが、そういった日々の蓄積が「英\r\n\r\n語」とか「外国」というものに対する意識に繋がっていっているのではないかと感じ\r\n\r\nました。\r\n\r\n<!--nextpage-->\r\n<h2>日本企業と外資系企業の文化の違いを比較できるようになって</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような企業の文化に自分はなかなか馴染めませんでした。全く酒が飲めないとい\r\n\r\nうこともないのですが。\r\n\r\n&nbsp;\r\n\r\n外資系企業だからといって、全てが「完全に外国の文化やルール」というわけではな\r\n\r\nいということです。外資系企業といっても、飲み会はあったりしますし、誘われたり\r\n\r\nもします。\r\n\r\n&nbsp;\r\n\r\n自分は派遣社員という身分を利用して、上手く理由をつくって飲み会の誘いを回避し\r\n\r\nたりしましたが、その時は企業文化というものに少しショックを受けたのを覚えてい\r\n\r\nます。日本の文化が結構残っている所もあるんだという点にです。\r\n\r\n&nbsp;\r\n\r\nただ、現在働いている所と以前働いていた所で共通しているのは、「上司と部下の上\r\n\r\n下関係があまり厳しくない」という点です。この点は嬉しかったです。\r\n\r\n&nbsp;\r\n\r\nなんというか、上の人間の下の人間に対する言動などが優しい感じがします。それに\r\n\r\n役員とか社長に対しても役職名ではなく「さん」づけで呼んで良いというのは新鮮な\r\n\r\n感じがしました。仕事の進め方、報告や連絡の方法も合理的な感じがします。\r\n\r\n&nbsp;\r\n\r\nそれに対して日本企業は、特に大企業であるほど、なぜか無駄に上下関係が厳しいで\r\n\r\nす。敬語とハンコとか上司に対する呼び方とか仕事のルールとか、何社も経験してき\r\n\r\nたからこそわかりますが、「なぜいまだにそんなことをするのだろう」と思えること\r\n\r\nが多々あります。\r\n\r\n&nbsp;\r\n\r\nそのように考えられるようになったのも、1つの会社だけではなくて、複数の会社を\r\n\r\n経験して比較できるようになったからだと思います。\r\n\r\n&nbsp;\r\n\r\nこれが今まで勤務してきた会社が1社とか2社だけだったら今のような感覚は持てて\r\n\r\nいなかったでしょう。そのような経験や感覚も「海外で働く可能性」を意識できる\r\n\r\nようになった理由のひとつじゃないかと感じました。\r\n\r\n&nbsp;\r\n\r\n日本企業にも安定という面では良いのでしょうが、自分の感覚としては日本企業の文\r\n\r\n化はあまり合わない感じがします。まぁこれは個人差があると思うので、その人にと\r\n\r\nって適した文化の企業を選んでいけばいいと思います。\r\n<h2>人口が減少していく日本と増加していく世界との関係</h2>\r\n「海外で働く可能性」について意識するようになった理由の中のひとつとして、自分\r\n\r\nの日常的に接する部分以外に、昨今問題視されるようになった「日本の人口が今後減\r\n\r\n少していく」という点もあるんじゃないかと思っています。\r\n\r\n&nbsp;\r\n\r\n現在日本は人口の減少が始まっており、今後の日本の人口がどのように減っていくの\r\n\r\nかという「人口減少カレンダー」なるものもあるようです。\r\n\r\n&nbsp;\r\n\r\nそれに反して、世界の人口は今後70億とか80億、それ以上に増えていくだろうと言わ\r\n\r\nれています。\r\n\r\n&nbsp;\r\n\r\n日本の人口が減少していくだろうという点も、「海外で働くとはどんなものだろうか」\r\n\r\nという意識が生まれた原因のひとつではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nというのは、国内市場が縮小すれば必然的に外に目を向けていかなければいけないわけ\r\n\r\nで、そうなると国内での仕事も減っていくのではないかと考えるのも自然な流れです。\r\n\r\n&nbsp;\r\n\r\n現在の日本は人口が減少していて人手不足であり、今後も人口の減少が続くのだから仕\r\n\r\n事が減るわけがない、という意見もあるかもしれません。ですが、現在の時間軸におけ\r\n\r\nる技術の進歩は目覚しいものがあります。\r\n\r\n&nbsp;\r\n\r\n少し昔であれば「まだまだ何十年も先のことだろう」と思えたかもしれません。ですが\r\n\r\n、技術は「指数関数的」に進歩していると言われ、周りの環境や報道されるニュースで\r\n\r\nもなんとなくそれは理解できます。\r\n\r\n&nbsp;\r\n\r\n今まで起きたことが今後もずっと同じように起こるなんて言えないわけで、となれば、\r\n\r\nやはりいろいろな選択肢を考えるようになるのも自然な流れではないでしょうか。\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n何かを勉強するとか新しく何かを始めるという時に、<strong>「それが当たり前にある」</strong>とい\r\n\r\nう環境って非常に大事なんじゃないかと今回の件で思いました。\r\n\r\n&nbsp;\r\n\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意しますよね。それで「これを勉強するんだ」というある程度強い意識を持って\r\n\r\n勉強する、\r\n\r\n&nbsp;\r\n\r\nというのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語\r\n\r\nに限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めるとか、何らかのきっかけがないとなかな\r\n\r\nか始められない気がします。というのも将来はわかりませんが、現在の日本において\r\n\r\n外国語を学ばなければ食べていけない、というわけではないからです。つまり切羽詰\r\n\r\nった状態ではないということです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が大きく関わる仕事というのは少数派ですし、それができ\r\n\r\nなかったからといって特に困ることはありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を日々耳にするわけで、やはり外国語\r\n\r\nというものを意識するというか、自然に学習していくのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で、さらに親がよく海外へ出張へ行ったりするような家庭であれ\r\n\r\nば、その子どもは自然に「あぁ、大人になったら英語もできるようにならないといけ\r\n\r\nないんだ」と考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、海外で働く可能性とか無理\r\n\r\nなく自然に外国語を勉強しようと考えられるようになるには、その人間の周りの環境\r\n\r\nってすごい大事な気がする、と今回の自分の経験や感覚から思いました。\r\n<h2>あわせて読みたい</h2>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/08/05/155204">日系企業と比較した外資系企業の良さは「自由さ」にあるかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/04/30/143014">安易な心構えで外国資本企業に派遣社員の経理として入ってはいけない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/05/18/053830">外国資本企業含む許可事業所数（一般・特定）約８万社の派遣会社と、派遣会社ごとの得意分野について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/04/23/101513">「その案件は外資系の企業ですか？」━派遣社員が仕事先を選ぶ時の注意点</a></strong></li>\r\n</ul>', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-12 08:48:33', '2018-02-12 08:48:33', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/12/2695-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2707, 1, '2018-02-12 08:50:54', '2018-02-12 08:50:54', '<img class="alignnone wp-image-2697" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/statue-of-liberty-2501264_640-300x200.jpg" alt="" width="605" height="403" />\r\n\r\n今回の記事のタイトルは「アメリカなどの外国で働くことを意識する日が来るとは夢\r\n\r\nにも思わなかった」ですが、注意点は実際にアメリカまで出張で仕事に行くわけでは\r\n\r\nありません。\r\n\r\n&nbsp;\r\n\r\n最近「アメリカで働くってどんな感じなんだろうか・・・」と「考えた」だけ、「意\r\n\r\n識」をしただけです。ただ、その「意識をした」ということですら、自分の感覚がす\r\n\r\nごく変わってきたんだなぁと感じています。\r\n\r\n&nbsp;\r\n\r\n今までの自分であれば、まず考えられなかったことです。このアメリカなどの外国で\r\n\r\n働くと「意識」することですら、とんでもないこと、敷居が非常に高いことでした。\r\n\r\nというか、そのような感覚が生まれたことすらありませんでした。\r\n\r\n&nbsp;\r\n\r\n自分から見て外国へ出張へ行く人とか、アメリカの現地の企業で働いている日本人\r\n\r\nというのはとてつもなく優秀で、まさに雲の上の存在みたいなイメージでした。\r\n\r\n&nbsp;\r\n\r\n他の人にとっては、外国へ旅行に行くとか、出張で海外に行くというのはそれほど抵\r\n\r\n抗はないかもしれません。でも自分にとっては全く縁のない世界というか、テレビや\r\n\r\n写真で見る程度の本当に別世界の出来事でしかありませんでした。\r\n\r\n&nbsp;\r\n\r\nそんな自分がなぜこのような感覚を持つようになったのか、考え事をしていたらその\r\n\r\nことをブログで整理してみたいと思ったので、ちょっと書いてみようかと思います。\r\n<h2>外資系企業での日常</h2>\r\nなぜこのような感覚を持つようになったのか。理由はいくつか考えられます。\r\n\r\n&nbsp;\r\n\r\n考えられる理由のひとつは、現在働いている企業が「外資系」であるということの影\r\n\r\n響ではないかということです。\r\n\r\n&nbsp;\r\n\r\nやはり外資系の企業だけあって、日々外国人を目にすることになります。目にするだ\r\n\r\nけであれば通勤途中とか街を歩いている時にすれ違うといったことはあるので、それ\r\n\r\nだけでは特に意識することはありません。\r\n\r\n&nbsp;\r\n\r\n今までの環境と違う点は、日常的に英語の会話を耳にするようになったことです。も\r\n\r\nちろんその会話の意味は全然わかりません。ただ、言葉の語感やアクセントなどから\r\n\r\n「あぁなんか英語で話してるんだな」というのはわかります。\r\n\r\n&nbsp;\r\n\r\nこれは誰でも感じることかとは思いますが、自分の周りで自分のわからない言語で話\r\n\r\nをしている人がいたらやはり気にはなりますよね。「あれ？何の話してるんだろう？\r\n\r\n」と\r\n\r\n&nbsp;\r\n\r\nそういった日々耳にする英語の会話がひとつ。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n「外国」を意識するもうひとつの点としては、書類に印字されている言語が英語であ\r\n\r\nるということもあるでしょう。もちろん全部わかるわけではないので、わからない部\r\n\r\n分はグーグル翻訳やインターネットを使って調べます。\r\n\r\n&nbsp;\r\n\r\nこういった部分も外国で働く可能性を意識するようになった点のひとつだったんじゃ\r\n\r\nないかなぁと思います。\r\n<h2>VBAというプログラミング言語の勉強も影響があったと思う</h2>\r\n外資とかアメリカとか意識するようになった理由としては、仕事以外でも「英語」と\r\n\r\nいう「文字」に触れる機会が増えたからでしょう。\r\n\r\n&nbsp;\r\n\r\n外資系の仕事で、処理する書類の中に英語があるというのはもちろんですが、最近勉\r\n\r\n強していたエクセルのVBAもある程度影響があったのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語というと基本的に英語です。例えば最近勉強した中では、\r\n\r\n「RowHeightプロパティ」とか「ColumnWidthプロパティ」といった単語が出てき\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\nテキストの中にそういった単語の意味について説明してくれている部分もありますが\r\n\r\n、全てではありません。ですから電子辞書などを使って調べなければいけません。\r\n\r\n&nbsp;\r\n\r\n「Rowは行でHeightは高さだから、RowHeightプロパティは行の高さを設定できる\r\n\r\nのか。」\r\n\r\n「Columnは列だけどWidthってどんな意味かな?（この後電子辞書で調べる）あぁ、\r\n\r\n『広さ、幅』という意味だから、ColumnWidthプロパティは列の幅を設定できるん\r\n\r\nだな」\r\n\r\n&nbsp;\r\n\r\nといった感じでわからない単語と格闘するのですが、そういった日々の蓄積が「英\r\n\r\n語」とか「外国」というものに対する意識に繋がっていっているのではないかと感じ\r\n\r\nました。\r\n\r\n<!--nextpage-->\r\n<h2>日本企業と外資系企業の文化の違いを比較できるようになって</h2>\r\n勤務先でいつも思うのですが、なんで日本人はこんなに頻繁に飲み会をしようとする\r\n\r\nのでしょうか。他にも社員旅行っていうイベントがありますし、部活動的な集まりも\r\n\r\nあります。\r\n\r\n&nbsp;\r\n\r\nこのような企業の文化に自分はなかなか馴染めませんでした。全く酒が飲めないとい\r\n\r\nうこともないのですが。\r\n\r\n&nbsp;\r\n\r\n外資系企業だからといって、全てが「完全に外国の文化やルール」というわけではな\r\n\r\nいということです。外資系企業といっても、飲み会はあったりしますし、誘われたり\r\n\r\nもします。\r\n\r\n&nbsp;\r\n\r\n自分は派遣社員という身分を利用して、上手く理由をつくって飲み会の誘いを回避し\r\n\r\nたりしましたが、その時は企業文化というものに少しショックを受けたのを覚えてい\r\n\r\nます。日本の文化が結構残っている所もあるんだという点にです。\r\n\r\n&nbsp;\r\n\r\nただ、現在働いている所と以前働いていた所で共通しているのは、「上司と部下の上\r\n\r\n下関係があまり厳しくない」という点です。この点は嬉しかったです。\r\n\r\n&nbsp;\r\n\r\nなんというか、上の人間の下の人間に対する言動などが優しい感じがします。それに\r\n\r\n役員とか社長に対しても役職名ではなく「さん」づけで呼んで良いというのは新鮮な\r\n\r\n感じがしました。仕事の進め方、報告や連絡の方法も合理的な感じがします。\r\n\r\n&nbsp;\r\n\r\nそれに対して日本企業は、特に大企業であるほど、なぜか無駄に上下関係が厳しいで\r\n\r\nす。敬語とハンコとか上司に対する呼び方とか仕事のルールとか、何社も経験してき\r\n\r\nたからこそわかりますが、「なぜいまだにそんなことをするのだろう」と思えること\r\n\r\nが多々あります。\r\n\r\n&nbsp;\r\n\r\nそのように考えられるようになったのも、1つの会社だけではなくて、複数の会社を\r\n\r\n経験して比較できるようになったからだと思います。\r\n\r\n&nbsp;\r\n\r\nこれが今まで勤務してきた会社が1社とか2社だけだったら今のような感覚は持てて\r\n\r\nいなかったでしょう。そのような経験や感覚も「海外で働く可能性」を意識できる\r\n\r\nようになった理由のひとつじゃないかと感じました。\r\n\r\n&nbsp;\r\n\r\n日本企業にも安定という面では良いのでしょうが、自分の感覚としては日本企業の文\r\n\r\n化はあまり合わない感じがします。まぁこれは個人差があると思うので、その人にと\r\n\r\nって適した文化の企業を選んでいけばいいと思います。\r\n<h2>人口が減少していく日本と増加していく世界との関係</h2>\r\n「海外で働く可能性」について意識するようになった理由の中のひとつとして、自分\r\n\r\nの日常的に接する部分以外に、昨今問題視されるようになった「日本の人口が今後減\r\n\r\n少していく」という点もあるんじゃないかと思っています。\r\n\r\n&nbsp;\r\n\r\n現在日本は人口の減少が始まっており、今後の日本の人口がどのように減っていくの\r\n\r\nかという「人口減少カレンダー」なるものもあるようです。\r\n\r\n&nbsp;\r\n\r\nそれに反して、世界の人口は今後70億とか80億、それ以上に増えていくだろうと言わ\r\n\r\nれています。\r\n\r\n&nbsp;\r\n\r\n日本の人口が減少していくだろうという点も、「海外で働くとはどんなものだろうか」\r\n\r\nという意識が生まれた原因のひとつではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nというのは、国内市場が縮小すれば必然的に外に目を向けていかなければいけないわけ\r\n\r\nで、そうなると国内での仕事も減っていくのではないかと考えるのも自然な流れです。\r\n\r\n&nbsp;\r\n\r\n現在の日本は人口が減少していて人手不足であり、今後も人口の減少が続くのだから仕\r\n\r\n事が減るわけがない、という意見もあるかもしれません。ですが、現在の時間軸におけ\r\n\r\nる技術の進歩は目覚しいものがあります。\r\n\r\n&nbsp;\r\n\r\n少し昔であれば「まだまだ何十年も先のことだろう」と思えたかもしれません。ですが\r\n\r\n、技術は「指数関数的」に進歩していると言われ、周りの環境や報道されるニュースで\r\n\r\nもなんとなくそれは理解できます。\r\n\r\n&nbsp;\r\n\r\n今まで起きたことが今後もずっと同じように起こるなんて言えないわけで、となれば、\r\n\r\nやはりいろいろな選択肢を考えるようになるのも自然な流れではないでしょうか。\r\n<h2>何かを意識する、学ぶのに周りの環境って大事だと思う</h2>\r\n何かを勉強するとか新しく何かを始めるという時に、<strong>「それが当たり前にある」</strong>とい\r\n\r\nう環境って非常に大事なんじゃないかと今回の件で思いました。\r\n\r\n&nbsp;\r\n\r\n例えば英語を勉強するというと、英語の単語帳とかテキスト、ノート、電子辞書など\r\n\r\nを用意しますよね。それで「これを勉強するんだ」というある程度強い意識を持って\r\n\r\n勉強する、\r\n\r\n&nbsp;\r\n\r\nというのが英語などの外国語を勉強するイメージではないでしょうか。（特に外国語\r\n\r\nに限った話ではなく、勉強すること全般に言えそうな事ですが。）\r\n\r\n&nbsp;\r\n\r\nでもそれってかなり気持ちとか意識を改めるとか、何らかのきっかけがないとなかな\r\n\r\nか始められない気がします。というのも将来はわかりませんが、現在の日本において\r\n\r\n外国語を学ばなければ食べていけない、というわけではないからです。つまり切羽詰\r\n\r\nった状態ではないということです。\r\n\r\n&nbsp;\r\n\r\nもちろん「英文会計」とか英語の知識が必要な経理の仕事もあります。ただ、全体か\r\n\r\nら見ればそういった外国語が大きく関わる仕事というのは少数派ですし、それができ\r\n\r\nなかったからといって特に困ることはありません。\r\n\r\n&nbsp;\r\n\r\nただ、今回の出来事で思ったのは、「周りの環境が外国語を学ぶのに適した環境であ\r\n\r\nれば、その環境に生きる人間は『自然と』学ぶようになる」んじゃないかなぁと思い\r\n\r\nました。\r\n\r\n&nbsp;\r\n\r\n例えば両親が日本人で日常生活で頻繁に英語の会話をするような関係や環境だったら\r\n\r\n、その子どもは聞きなれた日本語とは違う言葉を日々耳にするわけで、やはり外国語\r\n\r\nというものを意識するというか、自然に学習していくのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nさらに、日常生活で当たり前に「英語で書かれた文字」とか「外国の都市や風景が描\r\n\r\nかれた写真」を目にしたり、食器とか道具、文化など身の回りにあるものの多くが外\r\n\r\n国のものだったら、それほど抵抗なく外国語を学べるのではないかなぁと。\r\n\r\n&nbsp;\r\n\r\n以上のような環境下で、さらに親がよく海外へ出張へ行ったりするような家庭であれ\r\n\r\nば、その子どもは自然に「あぁ、大人になったら英語もできるようにならないといけ\r\n\r\nないんだ」と考えられるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nまとめると、これはもちろん個人差はあると思いますが、海外で働く可能性とか無理\r\n\r\nなく自然に外国語を勉強しようと考えられるようになるには、その人間の周りの環境\r\n\r\nってすごい大事な気がする、と今回の自分の経験や感覚から思いました。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/08/05/155204">日系企業と比較した外資系企業の良さは「自由さ」にあるかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/04/30/143014">安易な心構えで外国資本企業に派遣社員の経理として入ってはいけない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/05/18/053830">外国資本企業含む許可事業所数（一般・特定）約８万社の派遣会社と、派遣会社ごとの得意分野について</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/04/23/101513">「その案件は外資系の企業ですか？」━派遣社員が仕事先を選ぶ時の注意点</a></strong></li>\r\n</ul>', 'アメリカなどの外国で働くことを意識する日が来るとは夢にも思わなかった', '', 'inherit', 'closed', 'closed', '', '2695-revision-v1', '', '', '2018-02-12 08:50:54', '2018-02-12 08:50:54', '', 2695, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/12/2695-revision-v1', 0, 'revision', '', 0),
(2708, 1, '2018-03-14 07:00:37', '2018-03-14 07:00:37', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\n\nプログラミング言語というものに対して多くの人はどんなイメージを持っているでしょうか？プログラミング言語には様々な種類がありますが、その中のひとつに「VBA」というものがあります。\n\n&nbsp;\n\nVBAといえばエクセル、エクセルといえばVBAというイメージが以前の自分にはありました。\n\n&nbsp;\n\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケーションに特化したプログラミング言語のことであり、Visual Basicをベースとしています。\n\n&nbsp;\n\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーションに入っています。\n\n&nbsp;\n\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、その内容や効果についていろいろと書いてきました。\n\n&nbsp;\n\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル「だけではない」んですね。\n\n&nbsp;\n\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えないものだと思っていました。また「Visual Basic for Applications 」とあるように特定のアプリケーションに特化したプログラミング言語なわけですからそういうものなのだろうとずっと思っていました。えぇ、つい最近までは。\n\n&nbsp;\n\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エクセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\n\n&nbsp;\n\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわけで、今回はそのことについて自分が思ったことを書いていってみます。\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいないでしょうか？\n\n&nbsp;\n\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのってエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でした。\n\n&nbsp;\n\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。そもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\n\n&nbsp;\n\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\n\n&nbsp;\n\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを入れることで開発タブが表示されるようになります。その中に「Visual Basic」を確認できました。あぁ、エクセル以外でも本当に使えるんですね。\n\n&nbsp;\n\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、その中に「Visual Basic」があります。\n\n&nbsp;\n\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボンに開発タブを表示させます。\n\n&nbsp;\n\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。MicrosoftOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実はそれ以外にも使えるアプリケーションがあります。\n\n&nbsp;\n\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフトになります。\n\n&nbsp;\n\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\n\n&nbsp;\n\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかしたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分とか繰り返し作業ってあったりしますからね。\n\n&nbsp;\n\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロがつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うことで異なるアプリケーション間でもやりとりができるようです。\n\n&nbsp;\n\n例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。この機能ってすごくないですか？最初知ったときは非常に驚きました。\n\n&nbsp;\n\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、MicrosoftOfficeのものであれば異なるアプリケーション間でVBAでやりとりができるということに。\n\n&nbsp;\n\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょうか。ちなみにもっとすごいことが次の項目で書いてあります。\n\n&nbsp;\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。なんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\n\n&nbsp;\n\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれています。\n\n&nbsp;\n<blockquote>p.182\n\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別のアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、オブジェクトをやり取りするための規格です。\n\n&nbsp;\n\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#など一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\n&nbsp;\n\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメージでしょうか。\n\n&nbsp;\n\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーション内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリケーションでも使える、\n\n&nbsp;\n\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\n\n&nbsp;\n\n本書においては、このOLEオートメーションを利用することでIE（インターネットエクスプローラー）も使える、とあります。最初このことを知ったときは、「え？インターネットも何か操作できちゃうの！？」と驚きました。\n\n&nbsp;\n\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステムのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla CorporationのFirefoxなどが有名です。\n\n&nbsp;\n\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウザというものが必要になってきます。これを操作できるのがOLEオートメーションです。\n\n&nbsp;\n\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっては指定のページの内容も書き換えることができるようです。\n\n&nbsp;\n\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為替のレートの収集に使えそうだなと思いました。\n\n&nbsp;\n\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけではなく、ある一定期間のレートの平均を使ったりする所もあります。\n\n&nbsp;\n\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートがエクセルのシートに抽出されるわけですから。\n\n&nbsp;\n\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。今の時代はインターネットバンキングなんて言葉もあって、インターネット上から銀行の入出金データをダウンロードできます。\n\n&nbsp;\n\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないですから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はあります。\n\n&nbsp;\n\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認してダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられるんじゃないかと思いました。\n\n&nbsp;\n\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがありますが、次のような注意点もあります。\n\n&nbsp;\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\n\np.186\n\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作できます。しかし、それはセルを操作するほど簡単なことではありません。たとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指定するクラス名は、VBAのヘルプには載っていません。\n\n&nbsp;\n\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何らかの方法で調べなければなりません。\n\n（中略）\n\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されません。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。それにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学習するしか方法はありません。</blockquote>\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\n\n&nbsp;\n\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセルよりかは少ないです。\n\n&nbsp;\n\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーションに関する本は実戦形式のものが多い気がします。\n\n&nbsp;\n\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステムを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステムも操作できるということです。\n\n<!--nextpage-->\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発したアプリケーションなら使えることがわかりました。ここまでなら何となくは理解できます。\n\n&nbsp;\n\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\n\nるようにはできそうだよね」と。\n\n&nbsp;\n\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\n\nMicrosoftがつくったものだけにしか使えないのでしょうか。\n\n&nbsp;\n\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\n<ul>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\n</ul>\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\n\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\n\n作したといった内容です。\n\n&nbsp;\n\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\n\n形で影響を及ぼせるということです。このことを知ったときは、\n\n&nbsp;\n\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\n\n&nbsp;\n\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\n\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\n\nイメージできます。\n\n&nbsp;\n\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\n\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\n\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\n\n&nbsp;\n\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\n\nさすがにどこまでかは今の自分ではわかりません。\n\n&nbsp;\n\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\n\n可能性が広そうだ」と考えられるようになりましたし、\n\n&nbsp;\n\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\n\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\n\n&nbsp;\n\nなるほど、何事も勉強してみるものです。\n\n&nbsp;\n<h2>まとめ</h2>\nここまでVBAが使える範囲についていろいろと書いてきました。すごいですよね。\n\nエクセル以外で使えることに驚いたのはもちろん、Microsoft Officeに関するソフ\n\nトであればほとんどがVBAが使えます。\n\n&nbsp;\n\nさらにインターネットエクスプローラーでも使えるということは、マクロでインタ\n\nーネット上からの情報も自動的に取得したり、手を加えられるわけです。\n\n&nbsp;\n\nさらにこれらを連携させる中でVBAを利用できます。エクセル→ワードとかエクセ\n\nル→パワーポイントとか、ワード→エクセルとかです。\n\n&nbsp;\n\nここまではまだ予想はできそうです。「Microsoftが開発したのだから同じOffice製\n\n品なんだから内部構造も共通化できるだろう」みたいな感じで。\n\n&nbsp;\n\nでも、Microsoft製品以外にも何らかの形で影響を与えられるとは全く考えていませ\n\nんでした。そのことについてはここまで書いてきた中で過去記事で触れました。\n\n&nbsp;\n\n特定のコード（SendKeysメソッドとか）や仕組みを利用することで、Microsoft\n\nOffice製品以外のアプリケーションも操作できるということです。他の人はどう感\n\nじるかはわかりませんが、自分にとっては非常にすごいことです。\n\n&nbsp;\n\nというのも、これだけ使える範囲が広ければ、業務を自動化できる範囲もそれだけ\n\n広がるからです。\n\n&nbsp;\n\n以前は限定的だと考えていたことも、アイデアによっては非常にたくさんの動作を\n\nさせることができるのではないか、と考えられることはもちろん、今までとは全く\n\n違ったやり方の仕事ができるようになるのではないでしょうか。\n<h2>あわせて読みたい</h2>\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\n<ul>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-autosave-v1', '', '', '2018-03-14 07:00:37', '2018-03-14 07:00:37', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/15/2669-autosave-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2709, 1, '2018-02-15 04:36:58', '2018-02-15 04:36:58', '<img class="alignnone wp-image-2675" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/diagram-155894_640-300x216.png" alt="" width="578" height="416" />\r\n\r\nプログラミング言語というものに対して多くの人はどんなイメージを持っている\r\n\r\nでしょうか？プログラミング言語には様々な種類がありますが、その中のひとつ\r\n\r\nに「VBA」というものがあります。\r\n\r\n&nbsp;\r\n\r\nVBAといえばエクセル、エクセルといえばVBAというイメージが以前の自分には\r\n\r\nありました。\r\n\r\n&nbsp;\r\n\r\nVBAとは、Visual Basic for Applications の略です。その意味は特定のアプリケー\r\n\r\nションに特化したプログラミング言語のことであり、Visual Basicをベースとして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\n私達が仕事で日常的に使っているExcelなどのMicrosoft Officeのアプリケーション\r\n\r\nに入っています。\r\n\r\n&nbsp;\r\n\r\nこのブログでは、数ヶ月前からとあるきっかけからVBAについて勉強を始めて、そ\r\n\r\nの内容や効果についていろいろと書いてきました。\r\n\r\n&nbsp;\r\n\r\n勉強したからこそわかるようになったのですが、VBAが使える範囲って、エクセル\r\n\r\n「だけではない」んですね。\r\n\r\n&nbsp;\r\n\r\nVBAを始める前の自分のイメージでは、VBAというのはエクセルだけにしか使えな\r\n\r\nいものだと思っていました。また「Visual Basic for Applications 」とあるように\r\n\r\n特定のアプリケーションに特化したプログラミング言語なわけですからそういうも\r\n\r\nのなのだろうとずっと思っていました。えぇ、つい最近までは。\r\n\r\n&nbsp;\r\n\r\nこのVBAを使ったプログラムやシステムが影響を与えられる範囲というのは、エク\r\n\r\nセルだけではなくて実はいろいろ使えるんだということを知るようになりました。\r\n\r\n&nbsp;\r\n\r\nですから、ちょっとした感動、おもしろさ、好奇心が出てくるようになってきたわ\r\n\r\nけで、今回はそのことについて自分が思ったことを書いていってみます。\r\n\r\n&nbsp;\r\n<h2>VBAはワード、パワーポイント、アクセスでも使える</h2>\r\n「ワード、パワーポイント、アクセスでVBAが使える」と言われて驚く人はいない\r\n\r\nでしょうか？\r\n\r\n&nbsp;\r\n\r\n「そんなことはもう知っている」という人もいるでしょうし、「VBAが使えるのっ\r\n\r\nてエクセルだけじゃないの？」という人もいるでしょう。最近まで自分は後者でし\r\n\r\nた。\r\n\r\n&nbsp;\r\n\r\nたぶんVBAについて勉強する機会がなかったら、一生知らなかったかもしれません。\r\n\r\nそもそも使うきっかけとかないですからね。実際に調べてみたら確認できました。\r\n\r\n&nbsp;\r\n\r\n自分が持っているパソコンの中に入っているMicrosoft Officeのワード2013だと、\r\n\r\n開いた画面上のリボンにはVBAが確認できるタブはありませんでした。\r\n\r\n&nbsp;\r\n\r\nけれども、リボン上で右クリックして表示される画面で「開発」の所にチェックを\r\n\r\n入れることで開発タブが表示されるようになります。その中に「Visual Basic」を\r\n\r\n確認できました。あぁ、エクセル以外でも本当に使えるんですね。\r\n\r\n&nbsp;\r\n\r\n他にアクセスでも確認できました。アクセス2013を開くと「作成」タブがあって、\r\n\r\nその中に「Visual Basic」があります。\r\n\r\n&nbsp;\r\n\r\nパワーポイントでも確認できました。自分のパソコンで使えるのはパワーポイント\r\n\r\n2013ですが、ここではワードと同様に開発タブがなかったので、同じ方法でリボン\r\n\r\nに開発タブを表示させます。\r\n\r\n&nbsp;\r\n\r\nその開発タブを開いてみると、ありました。「Visual Basic」の文字が。Microsoft\r\n\r\nOfficeで代表的なのが、エクセル、ワード、アクセス、パワーポイントですが、実\r\n\r\nはそれ以外にも使えるアプリケーションがあります。\r\n\r\n&nbsp;\r\n\r\n全部を確認したわけではありませんが、パブリッシャー（Publisher）というものも\r\n\r\n見てみました。Microsoftから出されているOfficeソフトのひとつで簡易DTPソフト\r\n\r\nになります。\r\n\r\n&nbsp;\r\n\r\nこれも初期設定では開発タブはないのですが、ワードと同様の方法による開発タブ\r\n\r\nを表示できるようにすると、「Visual Basic」を確認できます。あるんですねぇ。\r\n\r\n&nbsp;\r\n\r\nMicrosoft Officeに関するソフトを全て確認できるわけではないのですが、もしかし\r\n\r\nたら全ての製品でVBAが使えるのかもしれないですね。どんな仕事にも定型的な部分\r\n\r\nとか繰り返し作業ってあったりしますからね。\r\n\r\n&nbsp;\r\n\r\nそのような手間がかかったり、面倒くさく、ミスが許されない部分はVBAでマクロが\r\n\r\nつくれれば非常に楽になります。また、Microsoft OfficeのものであればVBAを使うこ\r\n\r\nとで異なるアプリケーション間でもやりとりができるようです。\r\n\r\n&nbsp;\r\n\r\n例えばVBAを利用してエクセルでつくった表をワードの文書内に埋め込むなどです。\r\n\r\nこの機能ってすごくないですか？最初知ったときは非常に驚きました。\r\n\r\n&nbsp;\r\n\r\nまずエクセル以外にもVBAが使えるということに驚いたことはもちろん、Microsoft\r\n\r\nOfficeのものであれば異なるアプリケーション間でVBAでやりとりができるというこ\r\n\r\nとに。\r\n\r\n&nbsp;\r\n\r\nこの機能を知っているか知らないかで、仕事の幅が全然違ってくるんじゃないでしょ\r\n\r\nうか。ちなみにもっとすごいことが次の項目で書いてあります。\r\n\r\n&nbsp;\r\n<h2>VBAはIE(インターネット・エクスプローラー)でも使える</h2>\r\nVBAを勉強していると「OLEオートメーション」なんて言葉を目にしたりします。\r\n\r\nなんだかかっこよさそうな名前ですね。どのような機能なのでしょうか。\r\n\r\n&nbsp;\r\n\r\n『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書か\r\n\r\nれています。\r\n\r\n&nbsp;\r\n<blockquote>p.182\r\n\r\nOLEはObject Linking and Embeddingの略称で、アプリケーションから別の\r\n\r\nアプリケーションを操作したり、Wordの文書内にExcelの表を埋め込むなど、\r\n\r\nオブジェクトをやり取りするための規格です。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションは、Excel VBAだけではなく、Visual BasicやVisual C#\r\n\r\nなど一般的なプログラミング言語から使用できる共通の規格です。</blockquote>\r\n&nbsp;\r\n\r\nエクセルで使えるプログラミング言語なんだけど、VBAじゃない、みたいなイメ\r\n\r\nージでしょうか。\r\n\r\n&nbsp;\r\n\r\n厳密に言えば、VBAはエクセルやワードなどのMicrosoft Officeのアプリケーショ\r\n\r\nン内でしか使えないようです。ですが、エクセルでもVBA以外でもMicrosoftが開\r\n\r\n発したVisual Basicなどであれば、特定のアプリケーションだけでなく別のアプリ\r\n\r\nケーションでも使える、\r\n\r\n&nbsp;\r\n\r\nそういった仕組みが「OLEオートメーション」である、ということでしょう。\r\n\r\n&nbsp;\r\n\r\n本書においては、このOLEオートメーションを利用することでIE（インターネッ\r\n\r\nトエクスプローラー）も使える、とあります。最初このことを知ったときは、\r\n\r\n「え？インターネットも何か操作できちゃうの！？」と驚きました。\r\n\r\n&nbsp;\r\n\r\nちなみにIE（インターネットエクスプローラー）とは、Microsoftが開発したウェ\r\n\r\nブブラウザです。ウェブブラウザとはウェブページを画面上に表示するシステム\r\n\r\nのことですが、これにはIE以外にもグーグルが開発したChromeやMozilla Corporation\r\n\r\nのFirefoxなどが有名です。\r\n\r\n&nbsp;\r\n\r\nインターネットで例えば天気に関するウェブページを見たい場合は、このブラウ\r\n\r\nザというものが必要になってきます。これを操作できるのがOLEオートメーション\r\n\r\nです。\r\n\r\n&nbsp;\r\n\r\n例えば特定のページを表示するとか、特定のページから文字列を抽出、操作によっ\r\n\r\nては指定のページの内容も書き換えることができるようです。\r\n\r\n&nbsp;\r\n\r\nこれってかなりすごいことじゃないですか？例えば経理の仕事であれば、毎日の為\r\n\r\n替のレートの収集に使えそうだなと思いました。\r\n\r\n&nbsp;\r\n\r\n世界の通過には円だけではなくドルやユーロ、元、香港ドル、オーストラリアドル\r\n\r\n等々たくさんの種類の通貨があります。会社によっては特定の日のレートだけでは\r\n\r\nなく、ある一定期間のレートの平均を使ったりする所もあります。\r\n\r\n&nbsp;\r\n\r\nこういった時に、特定のページから為替のレートを抽出する仕組みをつくれば、仕\r\n\r\n事がかなり楽になりそうです。仕組みさえ出来ればボタン一つでその日のレートが\r\n\r\nエクセルのシートに抽出されるわけですから。\r\n\r\n&nbsp;\r\n\r\nまた、銀行からの入出金データをダウンロードするときなんかにも使えそうですね。\r\n\r\n今の時代はインターネットバンキングなんて言葉もあって、インターネット上から\r\n\r\n銀行の入出金データをダウンロードできます。\r\n\r\n&nbsp;\r\n\r\nそのダウンロードしたデータを自社の会計ソフトに読み込ませるわけですが、これ\r\n\r\nが結構面倒くさいのです。会社が取引する銀行というのは基本的に1社だけでないで\r\n\r\nすから。みずほ銀行とか三菱東京UFJとか三井住友とか他にもいろいろ銀行はありま\r\n\r\nす。\r\n\r\n&nbsp;\r\n\r\n例えば自社が10の銀行と取引していたとして、毎日10行の入手金データを確認して\r\n\r\nダウンロードしなければならないとします。この作業が結構時間がかかって面倒くさ\r\n\r\nい。しかしOLEオートメーションを有効に使えればこの作業も一瞬で終わらせられる\r\n\r\nんじゃないかと思いました。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションはここまで書いたこと以外にもたくさんのメリットがあります\r\n\r\nが、次のような注意点もあります。\r\n\r\n&nbsp;\r\n<blockquote>『VBAエキスパート公式テキスト Excel VBA スタンダード』\r\n\r\np.186\r\n\r\nOLEオートメーションを使うと、Excel以外のアプリケーションをVBAから操作\r\n\r\nできます。しかし、それはセルを操作するほど簡単なことではありません。た\r\n\r\nとえば、参照設定で登録するオブジェクト名や、CreateObject関数の引数に指\r\n\r\n定するクラス名は、VBAのヘルプには載っていません。\r\n\r\n&nbsp;\r\n\r\nOLEオートメーションで操作するオブジェクトのクラス名が何なのかは、何ら\r\n\r\nかの方法で調べなければなりません。\r\n\r\n（中略）\r\n\r\nVBAのヘルプや解説書には載っていませんし、マクロ記録でも記録されませ\r\n\r\nん。では、どうやって必要なプロパティやメソッドを知ればいいのでしょう。\r\n\r\nそれにはInternet Explorerのオブジェクト構造やプロパティ、メソッドなど学\r\n\r\n習するしか方法はありません。</blockquote>\r\nうーん。要は自力で手探りで勉強していくしか方法はないということでしょうか。\r\n\r\n&nbsp;\r\n\r\n自分が確認した範囲では、確かにOLEオートメーションに関する書籍はVBAやエクセ\r\n\r\nルよりかは少ないです。\r\n\r\n&nbsp;\r\n\r\nVBAに関する本であれば、「○○というメソッドは・・・」とか「△△というオブジ\r\n\r\nェクトは・・・」みたいに丁寧に書かれているものもありますが、OLEオートメーショ\r\n\r\nンに関する本は実戦形式のものが多い気がします。\r\n\r\n&nbsp;\r\n\r\n以上のことをまとめると、厳密にはVBAでエクセル以外のアプリケーションやシステム\r\n\r\nを操作できるわけでないんだけど、エクセルを通して使えるVBA以外のMicrosoft社製の\r\n\r\n他のプログラミング言語とOLEオートメーションを利用すると、エクセル以外のシステ\r\n\r\nムも操作できるということです。\r\n\r\n<!--nextpage-->\r\n<h2>VBAはSendkeysメソッドを使ってPDFや他のアプリケーションなどMicrosoft Office系列以外にも使える</h2>\r\nここまで書いてきたように、VBAというのはエクセル以外にもMicrosoftが開発した\r\n\r\nアプリケーションなら使えることがわかりました。ここまでなら何となくは理解でき\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n「あぁ、Microsoftという同じ会社がつくったんだから内部構造も共通化させて使え\r\n\r\nるようにはできそうだよね」と。\r\n\r\n&nbsp;\r\n\r\nでもMicrosoft以外のアプリケーションならどうでしょうか？VBAが使える範囲って\r\n\r\nMicrosoftがつくったものだけにしか使えないのでしょうか。\r\n\r\n&nbsp;\r\n\r\nいいえ、そうでもないようです。その証拠に以下のような過去記事も書いてきました。\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/20/0951">SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/27/0424">CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/01/28/0742">PDFの自動印刷のためにAPIのkernel32を利用してみた</a></strong></li>\r\n</ul>\r\n引用した過去記事はSendKeysメソッドというコードを使うと、キーボードの通常の\r\n\r\nキー操作やショートカットキーなどを利用してアドビシステムズが開発したPDFを操\r\n\r\n作したといった内容です。\r\n\r\n&nbsp;\r\n\r\nつまり、やり方によってはMicrosoftが開発したシステム以外にも、VBAで何らかの\r\n\r\n形で影響を及ぼせるということです。このことを知ったときは、\r\n\r\n&nbsp;\r\n\r\n「あれ？もしかしてVBAって結構使える範囲が広いんじゃないか？」と思いました。\r\n\r\n&nbsp;\r\n\r\nプログラミング言語には有名どころではC言語やJavaなどがあります。こういったプ\r\n\r\nログラミング言語であればVBAに比べればかなり汎用性は高いのではないかと容易に\r\n\r\nイメージできます。\r\n\r\n&nbsp;\r\n\r\nとはいうものの、C言語やJava程ではないにしてもPDFを操作できた事例があるのだ\r\n\r\nから、やり方によってはMicrosoftが開発したアプリケーション以外でももっと広い\r\n\r\n範囲でVBAが使えるのではないか、と誰でもイメージがつくはずです。\r\n\r\n&nbsp;\r\n\r\nでは、具体的にどこまでの範囲でVBAが使えるのでしょうか？申し訳ないですが、\r\n\r\nさすがにどこまでかは今の自分ではわかりません。\r\n\r\n&nbsp;\r\n\r\nただ、当初勉強を始めた時よりはVBAというものに対して「思っていたよりも非常に\r\n\r\n可能性が広そうだ」と考えられるようになりましたし、\r\n\r\n&nbsp;\r\n\r\nVBAを勉強することで、プログラミング言語によってつくれるシステムの範囲や影響\r\n\r\nを与えられる範囲というものが存在するんだ、ということが段々とわかってきました。\r\n\r\n&nbsp;\r\n\r\nなるほど、何事も勉強してみるものです。\r\n\r\n&nbsp;\r\n<h2>まとめ</h2>\r\nここまでVBAが使える範囲についていろいろと書いてきました。すごいですよね。\r\n\r\nエクセル以外で使えることに驚いたのはもちろん、Microsoft Officeに関するソフ\r\n\r\nトであればほとんどがVBAが使えます。\r\n\r\n&nbsp;\r\n\r\nさらにインターネットエクスプローラーでも使えるということは、マクロでインタ\r\n\r\nーネット上からの情報も自動的に取得したり、手を加えられるわけです。\r\n\r\n&nbsp;\r\n\r\nさらにこれらを連携させる中でVBAを利用できます。エクセル→ワードとかエクセ\r\n\r\nル→パワーポイントとか、ワード→エクセルとかです。\r\n\r\n&nbsp;\r\n\r\nここまではまだ予想はできそうです。「Microsoftが開発したのだから同じOffice製\r\n\r\n品なんだから内部構造も共通化できるだろう」みたいな感じで。\r\n\r\n&nbsp;\r\n\r\nでも、Microsoft製品以外にも何らかの形で影響を与えられるとは全く考えていませ\r\n\r\nんでした。そのことについてはここまで書いてきた中で過去記事で触れました。\r\n\r\n&nbsp;\r\n\r\n特定のコード（SendKeysメソッドとか）や仕組みを利用することで、Microsoft\r\n\r\nOffice製品以外のアプリケーションも操作できるということです。他の人はどう感\r\n\r\nじるかはわかりませんが、自分にとっては非常にすごいことです。\r\n\r\n&nbsp;\r\n\r\nというのも、これだけ使える範囲が広ければ、業務を自動化できる範囲もそれだけ\r\n\r\n広がるからです。\r\n\r\n&nbsp;\r\n\r\n以前は限定的だと考えていたことも、アイデアによっては非常にたくさんの動作を\r\n\r\nさせることができるのではないか、と考えられることはもちろん、今までとは全く\r\n\r\n違ったやり方の仕事ができるようになるのではないでしょうか。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/12/31/0830">業務を自動化できる技術を持たないと自動化される時代が来るかもしれない</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/11/0256"><strong>今まで大したことないと思っていた仕事が今は宝の山に見える</strong></a></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/04/2026">RPAツールが一般化されればプログラミング言語の知識は不要になるのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n</ul>', 'VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ', '', 'inherit', 'closed', 'closed', '', '2669-revision-v1', '', '', '2018-02-15 04:36:58', '2018-02-15 04:36:58', '', 2669, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/15/2669-revision-v1', 0, 'revision', '', 0),
(2710, 1, '2018-02-16 06:43:52', '0000-00-00 00:00:00', '『決定版 FinTech-フィンテック　金融革命の全貌』には次のように書かれています。\r\n\r\n&nbsp;\r\n<blockquote>人工知能の進化の過程は大きく4つのレベルで表すことができる。レベル1は単\r\n\r\n純な制御プログラム。温度があればスイッチを入れる・切るといった家電の自\r\n\r\n動制御プログラム等がこれにあたる。\r\n\r\n&nbsp;\r\n\r\nレベル2は膨大な入力・出力で探索や知識を活用することで、豊富なパターン\r\n\r\nを実現するレベル。掃除ロボ等がこれにあたる。\r\n\r\n&nbsp;\r\n\r\nレベル3は、データを元にルールなどを自動で学習する機械学習を活用した人\r\n\r\n工知能。機械学習は以前から研究されていたが、2000年代に入り、学習する元\r\n\r\nデータとなる「ビッグデータ」の発達で進化が加速している。\r\n\r\n&nbsp;\r\n\r\nレベル4は、ディープラーニングを活用した人工知能。ディープラーニングと\r\n\r\nは、機械学習で利用する際のデータの特徴量そのものを自動学習するものであ\r\n\r\nる。例えば、画像認識において、動物の「ゾウ(象)」をゾウであると理解する\r\n\r\nために、「鼻は長い」「色はグレー」「耳が大きい」等のパターンを認識する\r\n\r\nための特徴量を自動で学習することができる。</blockquote>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'コンピュータに仕事を覚えさせる時代から特徴量を学習させる時代へ', '', 'draft', 'open', 'open', '', '', '', '', '2018-02-16 06:43:52', '2018-02-16 06:43:52', '', 0, 'https://www.chishikinosoukonoseiri.com/?p=2710', 0, 'post', '', 0),
(2711, 1, '2018-02-16 06:43:52', '2018-02-16 06:43:52', '『決定版 FinTech-フィンテック　金融革命の全貌』には次のように書かれています。\r\n\r\n&nbsp;\r\n<blockquote>人工知能の進化の過程は大きく4つのレベルで表すことができる。レベル1は単\r\n\r\n純な制御プログラム。温度があればスイッチを入れる・切るといった家電の自\r\n\r\n動制御プログラム等がこれにあたる。\r\n\r\n&nbsp;\r\n\r\nレベル2は膨大な入力・出力で探索や知識を活用することで、豊富なパターン\r\n\r\nを実現するレベル。掃除ロボ等がこれにあたる。\r\n\r\n&nbsp;\r\n\r\nレベル3は、データを元にルールなどを自動で学習する機械学習を活用した人\r\n\r\n工知能。機械学習は以前から研究されていたが、2000年代に入り、学習する元\r\n\r\nデータとなる「ビッグデータ」の発達で進化が加速している。\r\n\r\n&nbsp;\r\n\r\nレベル4は、ディープラーニングを活用した人工知能。ディープラーニングと\r\n\r\nは、機械学習で利用する際のデータの特徴量そのものを自動学習するものであ\r\n\r\nる。例えば、画像認識において、動物の「ゾウ(象)」をゾウであると理解する\r\n\r\nために、「鼻は長い」「色はグレー」「耳が大きい」等のパターンを認識する\r\n\r\nための特徴量を自動で学習することができる。</blockquote>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', 'コンピュータに仕事を覚えさせる時代から特徴量を学習させる時代へ', '', 'inherit', 'closed', 'closed', '', '2710-revision-v1', '', '', '2018-02-16 06:43:52', '2018-02-16 06:43:52', '', 2710, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/2710-revision-v1', 0, 'revision', '', 0),
(2712, 1, '2018-02-17 04:00:40', '2018-02-17 04:00:40', '経理という仕事をしていると、どの職場でも次のような言葉が耳に入ってきます。\r\n\r\n「あぁ合わない、合わない！」\r\n\r\n&nbsp;\r\n\r\n何が合わないのかというと、「数値の合計が合わない」ということです。\r\n\r\n&nbsp;\r\n\r\n企業というのは日々膨大な取引をしています。取引先へ自社の製品を販売したり、販売した製品の代金を回収したり、\r\n\r\n&nbsp;\r\n\r\nまたは取引先から商品やサービスを購入してそのための代金を支払ったり、それ以外にも社員の営業活動の経費を精算したり等様々なお金の出入りがあります。\r\n\r\n&nbsp;\r\n\r\nそういった日々の膨大なお金の流れを算出する、というのが経理業務の中のひとつとしてあるのですが、これが「全て一発で合う」ということはまずありません。\r\n\r\n&nbsp;\r\n\r\nというのも途中で簡単な計算ミスをしたり、そもそも計算の元になる数値自体が間違っているという可能性もあります。他にも取引先に請求書を出し忘れていたりとか、エクセルの関数で消費税の端数の計算が一部違っていて1円合わないとか、\r\n\r\n&nbsp;\r\n\r\n仮に合計が合ったとしても、途中の計算が微妙にずれていたり、必要な数値が入っていなかったりなど、数え上げたらキリがありません。\r\n\r\n&nbsp;\r\n\r\nどんな場所でもどんな計算でも「ミス」する可能性は存在しているわけです。以前まではそういったミスというのはどうしようもないものだと思っていました。\r\n\r\n&nbsp;\r\n\r\nしかしそのような考え方は、プログラミング言語というものを勉強してからちょっとずつ変わってきました。というのもプログラミングには「デバッグ」というものがあるからです。\r\n\r\n&nbsp;\r\n\r\nこのブログではVBAというプログラミング言語の内容や業務での効果についていろいろ書いてきましたが、業務を効率化するためのプログラムをつくるときにVBEに搭載されている「デバッグ機能」には何度も助けられました。\r\n\r\n&nbsp;\r\n\r\n今回はこの「デバッグ」というものについて経理業務と絡めて思ったことを書いていってみます。\r\n<h2>プログラミングやVBAにおける「デバッグ」とは</h2>\r\nそもそも「デバッグ」とはどういったものなのでしょうか。wikipediaには次のように書かれています。\r\n<blockquote><a href="https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0">デバッグ-wikipedia</a>\r\n\r\nデバッグ（debug）とは、コンピュータプログラムや電気機器中のバグ・欠陥を発見および修正し、動作を仕様通りのものとするための作業である。\r\n\r\n&nbsp;\r\n\r\nサブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出すので、バグの修正がより困難となる。</blockquote>\r\n&nbsp;\r\n\r\n要は問題がある所を探して、その部分を修正するということですね。プログラミングという領域においては、さらにこのデバッグをより簡単にできるようにした「デバッガ」というツールがあります。\r\n\r\n&nbsp;\r\n\r\n同様にwikipediaには以下のように書かれています。\r\n<blockquote>デバッガを使うとプログラムの実行について観測、停止、再開、速度を落としての実行、メモリ中の値の変更が行え、さらには時間を巻き戻すことさえ可能な場合がある。また、デバッグ作業を行う人のことを指してデバッガと呼ぶこともある</blockquote>\r\n&nbsp;\r\n\r\nデバッグをより簡単にできるツールはVBE（VBA用のエディター）にもあります。実際にこれを使ってプログラミングをしたからこそわかるのですが、本当にびっくりします。\r\n\r\n&nbsp;\r\n\r\n要はプログラミングで間違っても、その部分をエラーとしてVBEが「教えてくれる」のです。\r\n<h2>ExcelVBAのエラーの種類</h2>\r\nプログラミングをしていると様々なエラーが出てきます、特に自分のような初心者の場合は。ではVBAでプログラミングしているとどんなエラーがでてくるのでしょうか。\r\n\r\n&nbsp;\r\n\r\nこの部分を詳細に伝えようとするとかなり長くなってしまいそうなので簡単に説明していきます。\r\n\r\n&nbsp;\r\n\r\nExcelのVBAでマクロをつくる際に発生するエラーとして次の2種類に分類できると言われています。\r\n\r\n1.文法エラー\r\n\r\n2.論理エラー\r\n\r\n&nbsp;\r\n\r\n文法エラーは主にVBAの構文や文法などに違反した形で記述した時に発生します。例えば次のようなコードです。\r\n<pre>Range("A1).select</pre>\r\n何が間違っているのかというと、A1の後ろに"（ダブルクォーテーション）がありません。これだとExcelは反応してしてくれずにエラーを表示してきます。\r\n\r\n&nbsp;\r\n\r\n正確には以下のような形にしないといけません\r\n<pre>Range("A1").select</pre>\r\n&nbsp;\r\n\r\n論理エラーはVBAの文法的な間違いはなくても、論理的に矛盾がある場合に発生するエラーです。これはコンパイルエラーと実行時エラーの2つがあり詳細は割愛しますが、例えば次のようなケースが考えられます。\r\n\r\n&nbsp;\r\n\r\nエクセルの3枚目のシートのA1に「エクセル」の文字列を入力しようとしても3枚目のシートがない場合は「エクセル」の文字列を入力しようがないのでエラーが発生してエクセルからエラーが表示される、といった具合です。\r\n\r\n&nbsp;\r\n\r\nしかし意図通りの結果ではないのにエラーが表示されないような場合もあります。こういった場合はどうすればいいのでしょうか。\r\n\r\n&nbsp;\r\n\r\nエラーに対してエクセルとかVBAとかVBE、デバッガを「すごい」と思ったのがエラーを「追跡できる」という部分です。\r\n\r\n&nbsp;\r\n\r\nこの部分も説明しだすと長くなってしまうので割愛しますが、例えば「ブレークポイントの設定」という機能によってコードを一行ずつ実行して動作を確認していくとか、\r\n\r\n&nbsp;\r\n\r\n「ウォッチウィンドウ」という機能によってコード内の変数や式がどう動いていっているのかを確認できるのです。\r\n\r\n&nbsp;\r\n\r\n他にもエラーが出た際にそれをわかりやすく詳細にチェックできる機能がまだまだたくさんあるのですが、VBEのデバッグ機能には以上のようなことができるわけです。\r\n\r\n&nbsp;\r\n\r\nここで思ったのは、経理業務とか会計ソフトを使っている時にプログラミングのデバッグ機能のようなものががあればどんなにチェックが楽になるだろうか、ということです。\r\n\r\n&nbsp;\r\n\r\nたぶんこれは経理という業務に限らず、事務的な仕事全般に言えるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\n<!--nextpage-->\r\n<h2>複数の会社で共通して感じる経理業務の問題点</h2>\r\nこれは今まで働いてきた全ての会社に共通して言えることですが、中々<strong>「数値が</strong><strong>合</strong><strong>わない」</strong>という点です。\r\n\r\n&nbsp;\r\n\r\n冒頭部分でも書きましたが、数値が合わない理由や可能性というのは膨大にありキリがありません。\r\n\r\n&nbsp;\r\n\r\nですから「数値が合わない」というのは「もうどうしようもない問題」とか「当たり前」みたいに思われがちです。さらに問題なのは何度もチェックしたりそのチェックの仕方もいろいろと工夫されていて、なおそういった問題が出るという点です。\r\n\r\n&nbsp;\r\n\r\nしかしこういった問題に対して、プログラミングとかエクセルの関数、フリーソフトの利用やこれらITに関するツールの組み合わせ、今回の記事で書いたデバッグのツールやその概念を経理業務に入れることで、いつも発生する「合わない」という問題を解決できるのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nというのも、このブログで自分の実体験としてVBAやプログラミングの記事をいくつか書いてきましたが、これらが上手く使えるようになると「本当に全くミスが出なくなった」からです。\r\n\r\n&nbsp;\r\n\r\nそれはもちろん「個人」という小さい範囲だったのでできたからかもしれませんが、これがやり方によっては部署単位、企業単位でできるようになるのではないでしょうか。\r\n\r\n&nbsp;\r\n\r\nしかしここで大きな問題が発生します。それは「上の人たちに新しい方法を勧めてもなかなか理解してただけない」という点です。\r\n\r\n&nbsp;\r\n\r\n部署単位、企業単位で何かを変えようとしても、上の人たちが承認してくれなければどんなに良い解決策であっても進みません。\r\n\r\n&nbsp;\r\n\r\nでもこれは仕方ないかもしれません。自分も数ヶ月前にやっとVBAというプログラミング言語のすごさがわかりました。そういった理解も、実際の業務においてマクロのすごさを実体験として経験できたからです。\r\n\r\n&nbsp;\r\n\r\n今の時代は様々なメディアや本から「プログラミングの時代になる」とか「このプログラミング言語を勉強した方がいい」といった言葉をよく目にするようになりました。\r\n\r\n&nbsp;\r\n\r\nじゃあ多くの人がプログラミングの道に進んだかというとそうでもありません。IT業界では長年慢性的な人手不足に悩まされています。\r\n\r\n&nbsp;\r\n\r\n「論より証拠」とはよく言ったもので、そもそも「なぜそれが必要なのか」ということが理解できないと、人間というのはなかなか取り組めないものです。\r\n\r\n&nbsp;\r\n\r\n特に職位が上がれば上がるほど現場レベルの業務からは遠ざかっていきます。企業の大きな方向性を決めるとか財務の分析業務に比べれば、日々の数値を合わせる業務なんて上の人たちから見れば些細なものでしかないのかもしれませんね。\r\n<h2>もし会計ソフトが学習してくれたら</h2>\r\nここまでプログラミングのデバッグとかそれをより簡単にできるツールについて書いてきました。\r\n\r\n&nbsp;\r\n\r\n経理業務に欠かせないものとして「会計ソフト」があります。この会計ソフトにプログラミングで使うデバッガなどのツールのようなものがあったらどれだけ便利になるかなぁと考えるようになりました。\r\n\r\n&nbsp;\r\n\r\nここまで書くと会計ソフトにはデバッガ的な部分は何もないかのように見えるかもしれませんがそんなことはありません。\r\n\r\n&nbsp;\r\n\r\n例えば会計ソフトで何らかの取引の仕訳を入力する時があったとします。これが借方が10,000円で貸方が9,980円となった場合に貸借不一致として仕訳が入力ができないようになっています。\r\n\r\n&nbsp;\r\n\r\n他にも、ある勘定科目にしか特定の補助科目が表示されないようにしていたりなど、機能ごとに間違った入力ができないようになっています。\r\n\r\n&nbsp;\r\n\r\n他にもいろいろな機能があるのですが、だからといって経理業務においてミスがなくなって数値が「合う」ようになる、というわけではありません。人間の手が入ると様々なミスが発生します。\r\n\r\n&nbsp;\r\n\r\n例えば家賃などは毎月発生するものですが、この部分の入力を忘れていたりということがあります。\r\n\r\n&nbsp;\r\n\r\nまた、資金移動の時とか社員への給与の支払いとかお金が移動するときにいくらかの手数料が発生するのですが、この数値は小さいためにミスが発生しやすいです。\r\n\r\n&nbsp;\r\n\r\n例えば単純に見落としていたり、入力する時に微妙に数値を間違えたり（648円とか256円など金額の多寡や振込み方法の違いなどで混同しやすい）、桁数を間違えたり(648円を6480円にしてしまったり)など可能性は無限にあります。\r\n\r\n&nbsp;\r\n\r\nしかし会計ソフトがその企業の取引のパターンを学習してくれたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えば、ある月に特定の仕訳が入力されなかった場合、会計ソフトから「過去3年間の5月にこの取引先に毎回支払いをしていますが仕訳が入力されていません。問題はありませんか？」みたいな警告が表示されたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\nこのような警告が表示されたら入力忘れは少なくなるかもしれません。\r\n\r\n&nbsp;\r\n\r\n他にも毎月決まった取引先に決まった金額を支払っていたとします。例えば毎月90万から110万円の範囲で支払っていたのにある月は1000万円の支払いの入力をした場合、会計ソフトから「この数値は過去のデータの平均と比較すると突出していますが異常値ではありませんか」と警告してくれたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\nもしかしたら仕訳を入力した人が単純に入力する桁数を間違えてしまったかもしれませんし、他にも考えられる可能性はいくらでもあります。\r\n\r\n&nbsp;\r\n\r\nもしくはVBEのデバッグ機能のように日々の取引の仕訳入力でミスが発生した場合、取引ごとに自動でミスを追跡できるようになったりなど、\r\n\r\n&nbsp;\r\n\r\n別にこういった形でなくても構わないのですが、プログラミングのデバッグツールのように人間が何らかのミスをしてしまったことに対して「警告してくれる」機能や「追跡できる」機能が会計ソフトにあったら便利だなぁと考えるようになりました。\r\n\r\n&nbsp;\r\n\r\nまぁ一番良いのは完全に人の手が入らないようにしてしまうことだとは思いますが。完全にコンピュータに処理させてしまえば、人間がしてしまうミスの可能性はほとんど排除できるので。\r\n\r\n&nbsp;\r\n\r\n仮にそういったシステムができても、そのシステムを利用するための知識がまた必要になってくるわけで、この「ミスをしない」という課題を解決するのはなかなか難しそうではあります。\r\n<h2>あわせて読みたい</h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block;" data-ad-format="autorelaxed" data-ad-client="ca-pub-5555284323037918" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-slot="8054263157"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2018/02/03/1303">VBAが使える範囲はエクセルの他にMicrosoft系列以外にも及ぶ</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/11/17/1248">なぜプログラミング言語の習得が叫ばれるようになってきたのか</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2">経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/09/23/1206">経理担当者がマクロやフリーソフトと関数を組み合わせて仕事をした結果</a></strong></li>\r\n 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>\r\n</ul>', '経理業務でデバッグツールが使えたり会計ソフトが学習できたら便利なのに', '', 'publish', 'open', 'open', '', '2712', '', '', '2018-04-25 22:30:12', '2018-04-25 22:30:12', '', 0, 'https://www.chishikinosoukonoseiri.com/?p=2712', 0, 'post', '', 0),
(2713, 1, '2018-02-16 07:22:22', '2018-02-16 07:22:22', '経理という仕事をしていると、どの職場での次のような言葉が耳に入ってきました。\r\n\r\n「あぁ合わない、合わない！」\r\n\r\n&nbsp;\r\n\r\n何が合わないのかというと、「数値の合計が合わない」ということです。\r\n\r\n&nbsp;\r\n\r\n企業というのは日々膨大な取引をしています。取引先へ自社の製品を販売したり、\r\n\r\n販売した製品の代金を回収したり、\r\n\r\n&nbsp;\r\n\r\nまたは取引先から商品やサービスを購入してそのための代金を支払ったり、それ以\r\n\r\n外にも社員の営業活動の経費を精算したり等様々なお金の出入りがあります。\r\n\r\n&nbsp;\r\n\r\nそういった日々の膨大なお金の流れを算出する、というのが経理業務の中のひとつ\r\n\r\nとしてあるのですが、これが「全て一発で合う」ということはまずありません。\r\n\r\n&nbsp;\r\n\r\nというのも途中で簡単な計算ミスをしたり、そもそも計算の元になる数値自体が間\r\n\r\n違っているという可能性もあります。他にも取引先に請求書を出し忘れていたりと\r\n\r\nか、エクセルの関数で消費税の端数の計算が一部違っていて1円合わないとか、\r\n\r\n&nbsp;\r\n\r\n仮に合計が合ったとしても、途中の計算が微妙にずれていたり、必要な数値が入っ\r\n\r\nていなかったりなど、数え上げたらキリがありません。\r\n\r\n&nbsp;\r\n\r\nどんな場所でもどんな計算でも「ミス」する可能性は存在しているわけです。以前\r\n\r\nまではそういったミスというのはどうしようもないものだと思っていました。\r\n\r\n&nbsp;\r\n\r\nしかしそのような考え方は、プログラミング言語というものを勉強してからちょっと\r\n\r\nずつ変わってきました。というのもプログラミングには「デバッグ」というものがあ\r\n\r\nるからです。\r\n\r\n&nbsp;\r\n\r\nこのブログではVBAというプログラミング言語の内容や業務での効果についていろい\r\n\r\nろ書いてきましたが、業務を効率化するためのプログラムをつくるときにVBEに搭載\r\n\r\nされている「デバッグ機能」には何度も助けられました。\r\n\r\n&nbsp;\r\n\r\n今回はこの「デバッグ」というものについて経理業務と絡めて思ったことを書いていっ\r\n\r\nてみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', '経理業務にデバッグ機能がついたり会計ソフトが学習できたら超便利なのに', '', 'inherit', 'closed', 'closed', '', '2712-revision-v1', '', '', '2018-02-16 07:22:22', '2018-02-16 07:22:22', '', 2712, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/2712-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2714, 1, '2018-02-16 07:39:50', '2018-02-16 07:39:50', '経理という仕事をしていると、どの職場での次のような言葉が耳に入ってきました。\r\n\r\n「あぁ合わない、合わない！」\r\n\r\n&nbsp;\r\n\r\n何が合わないのかというと、「数値の合計が合わない」ということです。\r\n\r\n&nbsp;\r\n\r\n企業というのは日々膨大な取引をしています。取引先へ自社の製品を販売したり、\r\n\r\n販売した製品の代金を回収したり、\r\n\r\n&nbsp;\r\n\r\nまたは取引先から商品やサービスを購入してそのための代金を支払ったり、それ以\r\n\r\n外にも社員の営業活動の経費を精算したり等様々なお金の出入りがあります。\r\n\r\n&nbsp;\r\n\r\nそういった日々の膨大なお金の流れを算出する、というのが経理業務の中のひとつ\r\n\r\nとしてあるのですが、これが「全て一発で合う」ということはまずありません。\r\n\r\n&nbsp;\r\n\r\nというのも途中で簡単な計算ミスをしたり、そもそも計算の元になる数値自体が間\r\n\r\n違っているという可能性もあります。他にも取引先に請求書を出し忘れていたりと\r\n\r\nか、エクセルの関数で消費税の端数の計算が一部違っていて1円合わないとか、\r\n\r\n&nbsp;\r\n\r\n仮に合計が合ったとしても、途中の計算が微妙にずれていたり、必要な数値が入っ\r\n\r\nていなかったりなど、数え上げたらキリがありません。\r\n\r\n&nbsp;\r\n\r\nどんな場所でもどんな計算でも「ミス」する可能性は存在しているわけです。以前\r\n\r\nまではそういったミスというのはどうしようもないものだと思っていました。\r\n\r\n&nbsp;\r\n\r\nしかしそのような考え方は、プログラミング言語というものを勉強してからちょっと\r\n\r\nずつ変わってきました。というのもプログラミングには「デバッグ」というものがあ\r\n\r\nるからです。\r\n\r\n&nbsp;\r\n\r\nこのブログではVBAというプログラミング言語の内容や業務での効果についていろい\r\n\r\nろ書いてきましたが、業務を効率化するためのプログラムをつくるときにVBEに搭載\r\n\r\nされている「デバッグ機能」には何度も助けられました。\r\n\r\n&nbsp;\r\n\r\n今回はこの「デバッグ」というものについて経理業務と絡めて思ったことを書いていっ\r\n\r\nてみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>プログラミングやVBAにおける「デバッグ」とは</h2>\r\nそもそも「デバッグ」とはどういったものなのでしょうか。wikipediaには次のように\r\n\r\n書かれています。\r\n<blockquote><a href="https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0">デバッグ-wikipedia</a>\r\n\r\nデバッグ（debug）とは、コンピュータプログラムや電気機器中のバグ・欠陥\r\n\r\nを発見および修正し、動作を仕様通りのものとするための作業である。\r\n\r\n&nbsp;\r\n\r\nサブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出す\r\n\r\nので、バグの修正がより困難となる。</blockquote>\r\n&nbsp;\r\n\r\n要は問題がある所を探して、その部分を修正するということですね。プログラミング\r\n\r\nという領域においては、さらにこのデバッグをより簡単にできるようにした「デバッ\r\n\r\nガ」というツールがあります。\r\n\r\n&nbsp;\r\n\r\n同様にwikipediaには以下のように書かれています。\r\n<blockquote>デバッガを使うとプログラムの実行について観測、停止、再開、速度を落とし\r\n\r\nての実行、メモリ中の値の変更が行え、さらには時間を巻き戻すことさえ可能\r\n\r\nな場合がある。また、デバッグ作業を行う人のことを指してデバッガと呼ぶこ\r\n\r\nともある</blockquote>\r\n&nbsp;\r\n\r\nデバッグをより簡単にできるツールはVBE（VBA用のエディター）にもあります。実\r\n\r\n際にこれを使ってプログラミングをしたからこそわかるのですが、本当にびっくりし\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n要はプログラミングで間違っても、その部分をエラーとしてVBEが「教えてくれる」\r\n\r\nのです。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>複数の会社で共通して感じる経理業務の問題点</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>もし会計ソフトが学習してくれたら</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', '経理業務にデバッグツールがついたり会計ソフトが学習できたら超便利なのに', '', 'inherit', 'closed', 'closed', '', '2712-revision-v1', '', '', '2018-02-16 07:39:50', '2018-02-16 07:39:50', '', 2712, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/2712-revision-v1', 0, 'revision', '', 0),
(2715, 1, '2018-02-16 07:41:18', '2018-02-16 07:41:18', '経理という仕事をしていると、どの職場での次のような言葉が耳に入ってきました。\r\n\r\n「あぁ合わない、合わない！」\r\n\r\n&nbsp;\r\n\r\n何が合わないのかというと、「数値の合計が合わない」ということです。\r\n\r\n&nbsp;\r\n\r\n企業というのは日々膨大な取引をしています。取引先へ自社の製品を販売したり、\r\n\r\n販売した製品の代金を回収したり、\r\n\r\n&nbsp;\r\n\r\nまたは取引先から商品やサービスを購入してそのための代金を支払ったり、それ以\r\n\r\n外にも社員の営業活動の経費を精算したり等様々なお金の出入りがあります。\r\n\r\n&nbsp;\r\n\r\nそういった日々の膨大なお金の流れを算出する、というのが経理業務の中のひとつ\r\n\r\nとしてあるのですが、これが「全て一発で合う」ということはまずありません。\r\n\r\n&nbsp;\r\n\r\nというのも途中で簡単な計算ミスをしたり、そもそも計算の元になる数値自体が間\r\n\r\n違っているという可能性もあります。他にも取引先に請求書を出し忘れていたりと\r\n\r\nか、エクセルの関数で消費税の端数の計算が一部違っていて1円合わないとか、\r\n\r\n&nbsp;\r\n\r\n仮に合計が合ったとしても、途中の計算が微妙にずれていたり、必要な数値が入っ\r\n\r\nていなかったりなど、数え上げたらキリがありません。\r\n\r\n&nbsp;\r\n\r\nどんな場所でもどんな計算でも「ミス」する可能性は存在しているわけです。以前\r\n\r\nまではそういったミスというのはどうしようもないものだと思っていました。\r\n\r\n&nbsp;\r\n\r\nしかしそのような考え方は、プログラミング言語というものを勉強してからちょっと\r\n\r\nずつ変わってきました。というのもプログラミングには「デバッグ」というものがあ\r\n\r\nるからです。\r\n\r\n&nbsp;\r\n\r\nこのブログではVBAというプログラミング言語の内容や業務での効果についていろい\r\n\r\nろ書いてきましたが、業務を効率化するためのプログラムをつくるときにVBEに搭載\r\n\r\nされている「デバッグ機能」には何度も助けられました。\r\n\r\n&nbsp;\r\n\r\n今回はこの「デバッグ」というものについて経理業務と絡めて思ったことを書いていっ\r\n\r\nてみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>プログラミングやVBAにおける「デバッグ」とは</h2>\r\nそもそも「デバッグ」とはどういったものなのでしょうか。wikipediaには次のように\r\n\r\n書かれています。\r\n<blockquote><a href="https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0">デバッグ-wikipedia</a>\r\n\r\nデバッグ（debug）とは、コンピュータプログラムや電気機器中のバグ・欠陥\r\n\r\nを発見および修正し、動作を仕様通りのものとするための作業である。\r\n\r\n&nbsp;\r\n\r\nサブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出す\r\n\r\nので、バグの修正がより困難となる。</blockquote>\r\n&nbsp;\r\n\r\n要は問題がある所を探して、その部分を修正するということですね。プログラミング\r\n\r\nという領域においては、さらにこのデバッグをより簡単にできるようにした「デバッ\r\n\r\nガ」というツールがあります。\r\n\r\n&nbsp;\r\n\r\n同様にwikipediaには以下のように書かれています。\r\n<blockquote>デバッガを使うとプログラムの実行について観測、停止、再開、速度を落とし\r\n\r\nての実行、メモリ中の値の変更が行え、さらには時間を巻き戻すことさえ可能\r\n\r\nな場合がある。また、デバッグ作業を行う人のことを指してデバッガと呼ぶこ\r\n\r\nともある</blockquote>\r\n&nbsp;\r\n\r\nデバッグをより簡単にできるツールはVBE（VBA用のエディター）にもあります。実\r\n\r\n際にこれを使ってプログラミングをしたからこそわかるのですが、本当にびっくりし\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n要はプログラミングで間違っても、その部分をエラーとしてVBEが「教えてくれる」\r\n\r\nのです。\r\n\r\n&nbsp;\r\n<h2>ExcelVBAのエラーの種類</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>複数の会社で共通して感じる経理業務の問題点</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>もし会計ソフトが学習してくれたら</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', '経理業務にデバッグツールがついたり会計ソフトが学習できたら超便利なのに', '', 'inherit', 'closed', 'closed', '', '2712-revision-v1', '', '', '2018-02-16 07:41:18', '2018-02-16 07:41:18', '', 2712, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/2712-revision-v1', 0, 'revision', '', 0),
(2716, 1, '2018-02-16 09:04:06', '2018-02-16 09:04:06', '', 'accountant-1238598_640', '', 'inherit', 'open', 'closed', '', 'accountant-1238598_640', '', '', '2018-04-25 22:29:39', '2018-04-25 22:29:39', '', 2712, 'https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/accountant-1238598_640.jpg', 0, 'attachment', 'image/jpeg', 0),
(2717, 1, '2018-02-16 09:04:18', '2018-02-16 09:04:18', '<img class="alignnone  wp-image-2716" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/accountant-1238598_640-300x200.jpg" alt="" width="587" height="391" />\r\n\r\n経理という仕事をしていると、どの職場での次のような言葉が耳に入ってきました。\r\n\r\n「あぁ合わない、合わない！」\r\n\r\n&nbsp;\r\n\r\n何が合わないのかというと、「数値の合計が合わない」ということです。\r\n\r\n&nbsp;\r\n\r\n企業というのは日々膨大な取引をしています。取引先へ自社の製品を販売したり、\r\n\r\n販売した製品の代金を回収したり、\r\n\r\n&nbsp;\r\n\r\nまたは取引先から商品やサービスを購入してそのための代金を支払ったり、それ以\r\n\r\n外にも社員の営業活動の経費を精算したり等様々なお金の出入りがあります。\r\n\r\n&nbsp;\r\n\r\nそういった日々の膨大なお金の流れを算出する、というのが経理業務の中のひとつ\r\n\r\nとしてあるのですが、これが「全て一発で合う」ということはまずありません。\r\n\r\n&nbsp;\r\n\r\nというのも途中で簡単な計算ミスをしたり、そもそも計算の元になる数値自体が間\r\n\r\n違っているという可能性もあります。他にも取引先に請求書を出し忘れていたりと\r\n\r\nか、エクセルの関数で消費税の端数の計算が一部違っていて1円合わないとか、\r\n\r\n&nbsp;\r\n\r\n仮に合計が合ったとしても、途中の計算が微妙にずれていたり、必要な数値が入っ\r\n\r\nていなかったりなど、数え上げたらキリがありません。\r\n\r\n&nbsp;\r\n\r\nどんな場所でもどんな計算でも「ミス」する可能性は存在しているわけです。以前\r\n\r\nまではそういったミスというのはどうしようもないものだと思っていました。\r\n\r\n&nbsp;\r\n\r\nしかしそのような考え方は、プログラミング言語というものを勉強してからちょっと\r\n\r\nずつ変わってきました。というのもプログラミングには「デバッグ」というものがあ\r\n\r\nるからです。\r\n\r\n&nbsp;\r\n\r\nこのブログではVBAというプログラミング言語の内容や業務での効果についていろい\r\n\r\nろ書いてきましたが、業務を効率化するためのプログラムをつくるときにVBEに搭載\r\n\r\nされている「デバッグ機能」には何度も助けられました。\r\n\r\n&nbsp;\r\n\r\n今回はこの「デバッグ」というものについて経理業務と絡めて思ったことを書いていっ\r\n\r\nてみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>プログラミングやVBAにおける「デバッグ」とは</h2>\r\nそもそも「デバッグ」とはどういったものなのでしょうか。wikipediaには次のように\r\n\r\n書かれています。\r\n<blockquote><a href="https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0">デバッグ-wikipedia</a>\r\n\r\nデバッグ（debug）とは、コンピュータプログラムや電気機器中のバグ・欠陥\r\n\r\nを発見および修正し、動作を仕様通りのものとするための作業である。\r\n\r\n&nbsp;\r\n\r\nサブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出す\r\n\r\nので、バグの修正がより困難となる。</blockquote>\r\n&nbsp;\r\n\r\n要は問題がある所を探して、その部分を修正するということですね。プログラミング\r\n\r\nという領域においては、さらにこのデバッグをより簡単にできるようにした「デバッ\r\n\r\nガ」というツールがあります。\r\n\r\n&nbsp;\r\n\r\n同様にwikipediaには以下のように書かれています。\r\n<blockquote>デバッガを使うとプログラムの実行について観測、停止、再開、速度を落とし\r\n\r\nての実行、メモリ中の値の変更が行え、さらには時間を巻き戻すことさえ可能\r\n\r\nな場合がある。また、デバッグ作業を行う人のことを指してデバッガと呼ぶこ\r\n\r\nともある</blockquote>\r\n&nbsp;\r\n\r\nデバッグをより簡単にできるツールはVBE（VBA用のエディター）にもあります。実\r\n\r\n際にこれを使ってプログラミングをしたからこそわかるのですが、本当にびっくりし\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n要はプログラミングで間違っても、その部分をエラーとしてVBEが「教えてくれる」\r\n\r\nのです。\r\n\r\n&nbsp;\r\n<h2>ExcelVBAのエラーの種類</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>複数の会社で共通して感じる経理業務の問題点</h2>\r\nこれは今まで働いてきた全ての会社に共通して言えることですが、中々<strong>「数値が合</strong>\r\n\r\n<strong>わない」</strong>という点です。\r\n\r\n&nbsp;\r\n\r\n冒頭部分でも書きましたが、数値が合わない理由や可能性というのは膨大にありキ\r\n\r\nリがありません。\r\n\r\n&nbsp;\r\n\r\nですから「数値が合わない」というのは「もうどうしようもない問題」とか「当た\r\n\r\nり前」みたいに思われがちです。さらに問題なのは何度もチェックしたりそのチェ\r\n\r\nックの仕方もいろいろと工夫されていて、なおそういった問題が出るという点です。\r\n\r\n&nbsp;\r\n\r\nしかしこういった問題に対して、プログラミングとかエクセルの関数、フリーソフ\r\n\r\nトの利用やこれらITに関するツールの組み合わせ、今回の記事で書いたデバッグの\r\n\r\nツールやその概念を経理業務に入れることで、いつも発生する「合わない」という\r\n\r\n問題を解決できるのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nというのも、このブログで自分の実体験としてVBAやプログラミングの記事をいく\r\n\r\nつか書いてきましたが、これらが上手く使えるようになると「本当に全くミスが出\r\n\r\nなくなった」からです。\r\n\r\n&nbsp;\r\n\r\nそれはもちろん「個人」という小さい範囲だったのでできたからかもしれませんが、\r\n\r\nこれがやり方によっては部署単位、企業単位でできるようになるのではないでしょう\r\n\r\nか。\r\n\r\n&nbsp;\r\n\r\nしかしここで大きな問題が発生します。それは「上の人たちのITに関する理解が足り\r\n\r\nない、そもそもそういった概念がない」という点です。\r\n\r\n&nbsp;\r\n\r\n部署単位、企業単位で何かを変えようとしても、上の人たちにその理解がなければ、\r\n\r\nどんなに良い解決策であっても進みません。\r\n\r\n&nbsp;\r\n\r\nでもこれは仕方ないかもしれません。自分も数ヶ月前にやっとVBAというプログラミ\r\n\r\nング言語のすごさがわかりました。そういった理解も、実際の業務においてマクロの\r\n\r\nすごさを実体験として経験できたからです。\r\n\r\n&nbsp;\r\n\r\n今の時代は様々なメディアや本から「プログラミングの時代になる」とか「このプロ\r\n\r\nグラミング言語を勉強した方がいい」といった言葉をよく目にするようになりました。\r\n\r\n&nbsp;\r\n\r\n「論より証拠」とはよく言ったもので、そもそも「なぜそれが必要なのか」というこ\r\n\r\nとが理解できないと、人間というのはなかなか取り組めないものです。\r\n\r\n&nbsp;\r\n\r\n特に職位が上がれば上がるほど現場レベルの業務からは遠ざかっていきます。企業の\r\n\r\n大きな方向性を決めるとか財務の分析業務に比べれば、日々の数値を合わせる業務な\r\n\r\nんて上の人たちから見れば些細なものでしかないでしょう。\r\n\r\n&nbsp;\r\n\r\n特にありがちなことなのですが、とにかく「やれ」としか言われないことです。根性\r\n\r\n論でとにかく丁寧に長い時間かけてチェックすればミスも減るだろう考えているのか\r\n\r\nもしれません。\r\n\r\n&nbsp;\r\n\r\nこれは自分の考えなのですが、要は具体的な解決策が「わからない」から「やれ」と\r\n\r\nしか言えないのではないでしょうか。これは自分が人を見る時の基準のひとつにして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\nよく「自分の頭で考えろ」という人がいますけど、これを言う人ってたぶん理解でき\r\n\r\nてないと思うんですよね。確かに全部上司から教えてもらうというのは、考えるとい\r\n\r\nう点から良くないとは思います。\r\n\r\n&nbsp;\r\n\r\nしかし、上司がちゃんと理解できているのであれば「何らかのヒント」ぐらいは出せ\r\n\r\nるはずだからです。\r\n\r\n&nbsp;\r\n\r\nもしちゃんと理解できているのであれば、例えば\r\n\r\n「VLOOKUP関数でこの数値を引っ張ってきたいのですが、キーとなる数値が重複し\r\n\r\nてしまう部分があるのでどうしても引っ張ってこれません。こういった場合どうすれ\r\n\r\nばいいですか？」という質問に対して\r\n\r\n&nbsp;\r\n\r\n「この列のこの数値を文字列連結演算子の『<em>&amp;』</em>か、CONCATENATE<em>関数を使って繋</em>\r\n\r\n<em>げる、そうすると全体の中で『一意の数値』になる</em>はずだからVLOOKUP関数のキー\r\n\r\nとして利用できる」といった感じで答えられるはずだからです。\r\n\r\n&nbsp;\r\n\r\nしかしただ「やれ」としか言えない人間がいたら、「あっ（察し）」と自分ではなっ\r\n\r\nてしまいます。ですからこれは職位が上の人に限りませんが、何事も「言い方」には\r\n\r\n注意した方が良いかと思います。\r\n<h2>もし会計ソフトが学習してくれたら</h2>\r\nここまでプログラミングのデバッグとかそれをより簡単にできるツールについて書い\r\n\r\nてきました。\r\n\r\n&nbsp;\r\n\r\n経理業務に欠かせないものとして「会計ソフト」があります。この会計ソフトにプロ\r\n\r\nグラミングで使うデバッガなどのツールがあったらどれだけ便利になるかなぁと考え\r\n\r\nるようになりました。\r\n\r\n&nbsp;\r\n\r\nここまで書くと会計ソフトにはデバッガ的な部分は何もないかのように見えるかもし\r\n\r\nれませんがそんなことはありません。\r\n\r\n&nbsp;\r\n\r\n例えば会計ソフトで何らかの取引の仕訳を入力する時があったとします。これが借方\r\n\r\nが10,000円で貸方が9,980円となった場合に貸借不一致として仕訳が入力ができない\r\n\r\nようになっています。\r\n\r\n&nbsp;\r\n\r\n他にも、ある勘定科目にしか特定の補助科目が表示されないようにしていたりなど、\r\n\r\n機能ごとにおかしな入力がされないようになっています。\r\n\r\n&nbsp;\r\n\r\n他にもいろいろな機能があるのですが、だからといって経理業務において数値が「\r\n\r\n合う」というわけではありません。人間の手が入ると様々なミスが発生します。\r\n\r\n&nbsp;\r\n\r\n例えば家賃などは毎月発生するものですが、この部分の入力を忘れていたりという\r\n\r\nことがあります。\r\n\r\n&nbsp;\r\n\r\nまた、資金移動の時とか社員への給与の支払いとかお金が移動するときにいくらか\r\n\r\nの手数料が発生するのですが、この数値は小さいためにミスが発生しやすいです。\r\n\r\n&nbsp;\r\n\r\n例えば単純に見落としていたり、入力する時に微妙に数値を間違えたり（648円とか\r\n\r\n256円など金額の多寡や振込み方法の違いなどで混同しやすい）、桁数を間違えたり\r\n\r\n(648円を6480円にしてしまったり)など可能性は無限にあります。\r\n\r\n&nbsp;\r\n\r\nしかし会計ソフトがその企業の取引のパターンを学習してくれたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えば、ある月に特定の仕訳が入力されなかった場合、会計ソフトから「過去3年間\r\n\r\nの5月にこの取引先に毎回支払いをしていますが仕訳が入力されていません。問題は\r\n\r\nありませんか？」みたいな警告が表示されたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\nこのような警告が表示されたら入力忘れは少なくなるかもしれません。\r\n\r\n&nbsp;\r\n\r\n他にも毎月決まった取引先に決まった金額を支払っていたとします。例えば毎月90万\r\n\r\nから110万円の範囲で支払っていたのにある月は1000万円の支払いの入力をした場合、\r\n\r\n会計ソフトから「この数値は過去のデータの平均と比較すると突出していますが異常値\r\n\r\nではありませんか」と警告してくれたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\nもしかしたら仕訳を入力した人が単純に入力する桁数を間違えてしまったかもしれませ\r\n\r\nん。\r\n\r\n&nbsp;\r\n\r\n別にこういった形でなくても構わないのですが、プログラミングのデバッグツールのよ\r\n\r\nうに人間が何らかのミスをしてしまったことに対して「警告してくれる」機能が会計ソ\r\n\r\nフトにあったら便利だなぁと思います。\r\n\r\n&nbsp;\r\n\r\nまぁ一番良いのは完全に人の手が入らないようにしてしまうことだとは思いますが。完\r\n\r\n全にコンピュータに処理させてしまえば、人間がしてしまうミスの可能性はほとんど排\r\n\r\n除できるので。\r\n\r\n&nbsp;\r\n\r\n仮にそういったシステムができても、そのシステムを利用するための知識がまた必要に\r\n\r\nなってくるわけで、この「ミスをしない」という課題を解決するのはなかなか難しそう\r\n\r\nですね。\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', '経理業務にデバッグツールがついたり会計ソフトが学習できたら便利なのに', '', 'inherit', 'closed', 'closed', '', '2712-revision-v1', '', '', '2018-02-16 09:04:18', '2018-02-16 09:04:18', '', 2712, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/2712-revision-v1', 0, 'revision', '', 0),
(2718, 1, '2018-02-16 09:04:53', '2018-02-16 09:04:53', '<img class="alignnone wp-image-2716" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/accountant-1238598_640-300x200.jpg" alt="" width="587" height="391" />\r\n\r\n経理という仕事をしていると、どの職場でも次のような言葉が耳に入ってきます。\r\n\r\n「あぁ合わない、合わない！」\r\n\r\n&nbsp;\r\n\r\n何が合わないのかというと、「数値の合計が合わない」ということです。\r\n\r\n&nbsp;\r\n\r\n企業というのは日々膨大な取引をしています。取引先へ自社の製品を販売したり、\r\n\r\n販売した製品の代金を回収したり、\r\n\r\n&nbsp;\r\n\r\nまたは取引先から商品やサービスを購入してそのための代金を支払ったり、それ以\r\n\r\n外にも社員の営業活動の経費を精算したり等様々なお金の出入りがあります。\r\n\r\n&nbsp;\r\n\r\nそういった日々の膨大なお金の流れを算出する、というのが経理業務の中のひとつ\r\n\r\nとしてあるのですが、これが「全て一発で合う」ということはまずありません。\r\n\r\n&nbsp;\r\n\r\nというのも途中で簡単な計算ミスをしたり、そもそも計算の元になる数値自体が間\r\n\r\n違っているという可能性もあります。他にも取引先に請求書を出し忘れていたりと\r\n\r\nか、エクセルの関数で消費税の端数の計算が一部違っていて1円合わないとか、\r\n\r\n&nbsp;\r\n\r\n仮に合計が合ったとしても、途中の計算が微妙にずれていたり、必要な数値が入っ\r\n\r\nていなかったりなど、数え上げたらキリがありません。\r\n\r\n&nbsp;\r\n\r\nどんな場所でもどんな計算でも「ミス」する可能性は存在しているわけです。以前\r\n\r\nまではそういったミスというのはどうしようもないものだと思っていました。\r\n\r\n&nbsp;\r\n\r\nしかしそのような考え方は、プログラミング言語というものを勉強してからちょっと\r\n\r\nずつ変わってきました。というのもプログラミングには「デバッグ」というものがあ\r\n\r\nるからです。\r\n\r\n&nbsp;\r\n\r\nこのブログではVBAというプログラミング言語の内容や業務での効果についていろい\r\n\r\nろ書いてきましたが、業務を効率化するためのプログラムをつくるときにVBEに搭載\r\n\r\nされている「デバッグ機能」には何度も助けられました。\r\n\r\n&nbsp;\r\n\r\n今回はこの「デバッグ」というものについて経理業務と絡めて思ったことを書いていっ\r\n\r\nてみます。\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>プログラミングやVBAにおける「デバッグ」とは</h2>\r\nそもそも「デバッグ」とはどういったものなのでしょうか。wikipediaには次のように\r\n\r\n書かれています。\r\n<blockquote><a href="https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0">デバッグ-wikipedia</a>\r\n\r\nデバッグ（debug）とは、コンピュータプログラムや電気機器中のバグ・欠陥\r\n\r\nを発見および修正し、動作を仕様通りのものとするための作業である。\r\n\r\n&nbsp;\r\n\r\nサブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出す\r\n\r\nので、バグの修正がより困難となる。</blockquote>\r\n&nbsp;\r\n\r\n要は問題がある所を探して、その部分を修正するということですね。プログラミング\r\n\r\nという領域においては、さらにこのデバッグをより簡単にできるようにした「デバッ\r\n\r\nガ」というツールがあります。\r\n\r\n&nbsp;\r\n\r\n同様にwikipediaには以下のように書かれています。\r\n<blockquote>デバッガを使うとプログラムの実行について観測、停止、再開、速度を落とし\r\n\r\nての実行、メモリ中の値の変更が行え、さらには時間を巻き戻すことさえ可能\r\n\r\nな場合がある。また、デバッグ作業を行う人のことを指してデバッガと呼ぶこ\r\n\r\nともある</blockquote>\r\n&nbsp;\r\n\r\nデバッグをより簡単にできるツールはVBE（VBA用のエディター）にもあります。実\r\n\r\n際にこれを使ってプログラミングをしたからこそわかるのですが、本当にびっくりし\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n要はプログラミングで間違っても、その部分をエラーとしてVBEが「教えてくれる」\r\n\r\nのです。\r\n\r\n&nbsp;\r\n<h2>ExcelVBAのエラーの種類</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>複数の会社で共通して感じる経理業務の問題点</h2>\r\nこれは今まで働いてきた全ての会社に共通して言えることですが、中々<strong>「数値が合</strong>\r\n\r\n<strong>わない」</strong>という点です。\r\n\r\n&nbsp;\r\n\r\n冒頭部分でも書きましたが、数値が合わない理由や可能性というのは膨大にありキ\r\n\r\nリがありません。\r\n\r\n&nbsp;\r\n\r\nですから「数値が合わない」というのは「もうどうしようもない問題」とか「当た\r\n\r\nり前」みたいに思われがちです。さらに問題なのは何度もチェックしたりそのチェ\r\n\r\nックの仕方もいろいろと工夫されていて、なおそういった問題が出るという点です。\r\n\r\n&nbsp;\r\n\r\nしかしこういった問題に対して、プログラミングとかエクセルの関数、フリーソフ\r\n\r\nトの利用やこれらITに関するツールの組み合わせ、今回の記事で書いたデバッグの\r\n\r\nツールやその概念を経理業務に入れることで、いつも発生する「合わない」という\r\n\r\n問題を解決できるのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nというのも、このブログで自分の実体験としてVBAやプログラミングの記事をいく\r\n\r\nつか書いてきましたが、これらが上手く使えるようになると「本当に全くミスが出\r\n\r\nなくなった」からです。\r\n\r\n&nbsp;\r\n\r\nそれはもちろん「個人」という小さい範囲だったのでできたからかもしれませんが、\r\n\r\nこれがやり方によっては部署単位、企業単位でできるようになるのではないでしょう\r\n\r\nか。\r\n\r\n&nbsp;\r\n\r\nしかしここで大きな問題が発生します。それは「上の人たちのITに関する理解が足り\r\n\r\nない、そもそもそういった概念がない」という点です。\r\n\r\n&nbsp;\r\n\r\n部署単位、企業単位で何かを変えようとしても、上の人たちにその理解がなければ、\r\n\r\nどんなに良い解決策であっても進みません。\r\n\r\n&nbsp;\r\n\r\nでもこれは仕方ないかもしれません。自分も数ヶ月前にやっとVBAというプログラミ\r\n\r\nング言語のすごさがわかりました。そういった理解も、実際の業務においてマクロの\r\n\r\nすごさを実体験として経験できたからです。\r\n\r\n&nbsp;\r\n\r\n今の時代は様々なメディアや本から「プログラミングの時代になる」とか「このプロ\r\n\r\nグラミング言語を勉強した方がいい」といった言葉をよく目にするようになりました。\r\n\r\n&nbsp;\r\n\r\n「論より証拠」とはよく言ったもので、そもそも「なぜそれが必要なのか」というこ\r\n\r\nとが理解できないと、人間というのはなかなか取り組めないものです。\r\n\r\n&nbsp;\r\n\r\n特に職位が上がれば上がるほど現場レベルの業務からは遠ざかっていきます。企業の\r\n\r\n大きな方向性を決めるとか財務の分析業務に比べれば、日々の数値を合わせる業務な\r\n\r\nんて上の人たちから見れば些細なものでしかないでしょう。\r\n\r\n&nbsp;\r\n\r\n特にありがちなことなのですが、とにかく「やれ」としか言われないことです。根性\r\n\r\n論でとにかく丁寧に長い時間かけてチェックすればミスも減るだろう考えているのか\r\n\r\nもしれません。\r\n\r\n&nbsp;\r\n\r\nこれは自分の考えなのですが、要は具体的な解決策が「わからない」から「やれ」と\r\n\r\nしか言えないのではないでしょうか。これは自分が人を見る時の基準のひとつにして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\nよく「自分の頭で考えろ」という人がいますけど、これを言う人ってたぶん理解でき\r\n\r\nてないと思うんですよね。確かに全部上司から教えてもらうというのは、考えるとい\r\n\r\nう点から良くないとは思います。\r\n\r\n&nbsp;\r\n\r\nしかし、上司がちゃんと理解できているのであれば「何らかのヒント」ぐらいは出せ\r\n\r\nるはずだからです。\r\n\r\n&nbsp;\r\n\r\nもしちゃんと理解できているのであれば、例えば\r\n\r\n「VLOOKUP関数でこの数値を引っ張ってきたいのですが、キーとなる数値が重複し\r\n\r\nてしまう部分があるのでどうしても引っ張ってこれません。こういった場合どうすれ\r\n\r\nばいいですか？」という質問に対して\r\n\r\n&nbsp;\r\n\r\n「この列のこの数値を文字列連結演算子の『<em>&amp;』</em>か、CONCATENATE<em>関数を使って繋</em>\r\n\r\n<em>げる、そうすると全体の中で『一意の数値』になる</em>はずだからVLOOKUP関数のキー\r\n\r\nとして利用できる」といった感じで答えられるはずだからです。\r\n\r\n&nbsp;\r\n\r\nしかしただ「やれ」としか言えない人間がいたら、「あっ（察し）」と自分ではなっ\r\n\r\nてしまいます。ですからこれは職位が上の人に限りませんが、何事も「言い方」には\r\n\r\n注意した方が良いかと思います。\r\n<h2>もし会計ソフトが学習してくれたら</h2>\r\nここまでプログラミングのデバッグとかそれをより簡単にできるツールについて書い\r\n\r\nてきました。\r\n\r\n&nbsp;\r\n\r\n経理業務に欠かせないものとして「会計ソフト」があります。この会計ソフトにプロ\r\n\r\nグラミングで使うデバッガなどのツールがあったらどれだけ便利になるかなぁと考え\r\n\r\nるようになりました。\r\n\r\n&nbsp;\r\n\r\nここまで書くと会計ソフトにはデバッガ的な部分は何もないかのように見えるかもし\r\n\r\nれませんがそんなことはありません。\r\n\r\n&nbsp;\r\n\r\n例えば会計ソフトで何らかの取引の仕訳を入力する時があったとします。これが借方\r\n\r\nが10,000円で貸方が9,980円となった場合に貸借不一致として仕訳が入力ができない\r\n\r\nようになっています。\r\n\r\n&nbsp;\r\n\r\n他にも、ある勘定科目にしか特定の補助科目が表示されないようにしていたりなど、\r\n\r\n機能ごとにおかしな入力がされないようになっています。\r\n\r\n&nbsp;\r\n\r\n他にもいろいろな機能があるのですが、だからといって経理業務において数値が「\r\n\r\n合う」というわけではありません。人間の手が入ると様々なミスが発生します。\r\n\r\n&nbsp;\r\n\r\n例えば家賃などは毎月発生するものですが、この部分の入力を忘れていたりという\r\n\r\nことがあります。\r\n\r\n&nbsp;\r\n\r\nまた、資金移動の時とか社員への給与の支払いとかお金が移動するときにいくらか\r\n\r\nの手数料が発生するのですが、この数値は小さいためにミスが発生しやすいです。\r\n\r\n&nbsp;\r\n\r\n例えば単純に見落としていたり、入力する時に微妙に数値を間違えたり（648円とか\r\n\r\n256円など金額の多寡や振込み方法の違いなどで混同しやすい）、桁数を間違えたり\r\n\r\n(648円を6480円にしてしまったり)など可能性は無限にあります。\r\n\r\n&nbsp;\r\n\r\nしかし会計ソフトがその企業の取引のパターンを学習してくれたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えば、ある月に特定の仕訳が入力されなかった場合、会計ソフトから「過去3年間\r\n\r\nの5月にこの取引先に毎回支払いをしていますが仕訳が入力されていません。問題は\r\n\r\nありませんか？」みたいな警告が表示されたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\nこのような警告が表示されたら入力忘れは少なくなるかもしれません。\r\n\r\n&nbsp;\r\n\r\n他にも毎月決まった取引先に決まった金額を支払っていたとします。例えば毎月90万\r\n\r\nから110万円の範囲で支払っていたのにある月は1000万円の支払いの入力をした場合、\r\n\r\n会計ソフトから「この数値は過去のデータの平均と比較すると突出していますが異常値\r\n\r\nではありませんか」と警告してくれたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\nもしかしたら仕訳を入力した人が単純に入力する桁数を間違えてしまったかもしれませ\r\n\r\nん。\r\n\r\n&nbsp;\r\n\r\n別にこういった形でなくても構わないのですが、プログラミングのデバッグツールのよ\r\n\r\nうに人間が何らかのミスをしてしまったことに対して「警告してくれる」機能が会計ソ\r\n\r\nフトにあったら便利だなぁと思います。\r\n\r\n&nbsp;\r\n\r\nまぁ一番良いのは完全に人の手が入らないようにしてしまうことだとは思いますが。完\r\n\r\n全にコンピュータに処理させてしまえば、人間がしてしまうミスの可能性はほとんど排\r\n\r\n除できるので。\r\n\r\n&nbsp;\r\n\r\n仮にそういったシステムができても、そのシステムを利用するための知識がまた必要に\r\n\r\nなってくるわけで、この「ミスをしない」という課題を解決するのはなかなか難しそう\r\n\r\nですね。\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', '経理業務にデバッグツールがついたり会計ソフトが学習できたら便利なのに', '', 'inherit', 'closed', 'closed', '', '2712-revision-v1', '', '', '2018-02-16 09:04:53', '2018-02-16 09:04:53', '', 2712, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/2712-revision-v1', 0, 'revision', '', 0);
INSERT INTO `wpmj_posts` VALUES
(2719, 1, '2018-02-16 09:06:05', '2018-02-16 09:06:05', '<img class="alignnone wp-image-2716" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2018/02/accountant-1238598_640-300x200.jpg" alt="" width="587" height="391" />\r\n\r\n経理という仕事をしていると、どの職場でも次のような言葉が耳に入ってきます。\r\n\r\n「あぁ合わない、合わない！」\r\n\r\n&nbsp;\r\n\r\n何が合わないのかというと、「数値の合計が合わない」ということです。\r\n\r\n&nbsp;\r\n\r\n企業というのは日々膨大な取引をしています。取引先へ自社の製品を販売したり、\r\n\r\n販売した製品の代金を回収したり、\r\n\r\n&nbsp;\r\n\r\nまたは取引先から商品やサービスを購入してそのための代金を支払ったり、それ以\r\n\r\n外にも社員の営業活動の経費を精算したり等様々なお金の出入りがあります。\r\n\r\n&nbsp;\r\n\r\nそういった日々の膨大なお金の流れを算出する、というのが経理業務の中のひとつ\r\n\r\nとしてあるのですが、これが「全て一発で合う」ということはまずありません。\r\n\r\n&nbsp;\r\n\r\nというのも途中で簡単な計算ミスをしたり、そもそも計算の元になる数値自体が間\r\n\r\n違っているという可能性もあります。他にも取引先に請求書を出し忘れていたりと\r\n\r\nか、エクセルの関数で消費税の端数の計算が一部違っていて1円合わないとか、\r\n\r\n&nbsp;\r\n\r\n仮に合計が合ったとしても、途中の計算が微妙にずれていたり、必要な数値が入っ\r\n\r\nていなかったりなど、数え上げたらキリがありません。\r\n\r\n&nbsp;\r\n\r\nどんな場所でもどんな計算でも「ミス」する可能性は存在しているわけです。以前\r\n\r\nまではそういったミスというのはどうしようもないものだと思っていました。\r\n\r\n&nbsp;\r\n\r\nしかしそのような考え方は、プログラミング言語というものを勉強してからちょっと\r\n\r\nずつ変わってきました。というのもプログラミングには「デバッグ」というものがあ\r\n\r\nるからです。\r\n\r\n&nbsp;\r\n\r\nこのブログではVBAというプログラミング言語の内容や業務での効果についていろい\r\n\r\nろ書いてきましたが、業務を効率化するためのプログラムをつくるときにVBEに搭載\r\n\r\nされている「デバッグ機能」には何度も助けられました。\r\n\r\n&nbsp;\r\n\r\n今回はこの「デバッグ」というものについて経理業務と絡めて思ったことを書いていっ\r\n\r\nてみます。\r\n<h2>プログラミングやVBAにおける「デバッグ」とは</h2>\r\nそもそも「デバッグ」とはどういったものなのでしょうか。wikipediaには次のように\r\n\r\n書かれています。\r\n<blockquote><a href="https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0">デバッグ-wikipedia</a>\r\n\r\nデバッグ（debug）とは、コンピュータプログラムや電気機器中のバグ・欠陥\r\n\r\nを発見および修正し、動作を仕様通りのものとするための作業である。\r\n\r\n&nbsp;\r\n\r\nサブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出す\r\n\r\nので、バグの修正がより困難となる。</blockquote>\r\n&nbsp;\r\n\r\n要は問題がある所を探して、その部分を修正するということですね。プログラミング\r\n\r\nという領域においては、さらにこのデバッグをより簡単にできるようにした「デバッ\r\n\r\nガ」というツールがあります。\r\n\r\n&nbsp;\r\n\r\n同様にwikipediaには以下のように書かれています。\r\n<blockquote>デバッガを使うとプログラムの実行について観測、停止、再開、速度を落とし\r\n\r\nての実行、メモリ中の値の変更が行え、さらには時間を巻き戻すことさえ可能\r\n\r\nな場合がある。また、デバッグ作業を行う人のことを指してデバッガと呼ぶこ\r\n\r\nともある</blockquote>\r\n&nbsp;\r\n\r\nデバッグをより簡単にできるツールはVBE（VBA用のエディター）にもあります。実\r\n\r\n際にこれを使ってプログラミングをしたからこそわかるのですが、本当にびっくりし\r\n\r\nます。\r\n\r\n&nbsp;\r\n\r\n要はプログラミングで間違っても、その部分をエラーとしてVBEが「教えてくれる」\r\n\r\nのです。\r\n\r\n&nbsp;\r\n<h2>ExcelVBAのエラーの種類</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n<h2>複数の会社で共通して感じる経理業務の問題点</h2>\r\nこれは今まで働いてきた全ての会社に共通して言えることですが、中々<strong>「数値が合</strong>\r\n\r\n<strong>わない」</strong>という点です。\r\n\r\n&nbsp;\r\n\r\n冒頭部分でも書きましたが、数値が合わない理由や可能性というのは膨大にありキ\r\n\r\nリがありません。\r\n\r\n&nbsp;\r\n\r\nですから「数値が合わない」というのは「もうどうしようもない問題」とか「当た\r\n\r\nり前」みたいに思われがちです。さらに問題なのは何度もチェックしたりそのチェ\r\n\r\nックの仕方もいろいろと工夫されていて、なおそういった問題が出るという点です。\r\n\r\n&nbsp;\r\n\r\nしかしこういった問題に対して、プログラミングとかエクセルの関数、フリーソフ\r\n\r\nトの利用やこれらITに関するツールの組み合わせ、今回の記事で書いたデバッグの\r\n\r\nツールやその概念を経理業務に入れることで、いつも発生する「合わない」という\r\n\r\n問題を解決できるのではないかなぁと思いました。\r\n\r\n&nbsp;\r\n\r\nというのも、このブログで自分の実体験としてVBAやプログラミングの記事をいく\r\n\r\nつか書いてきましたが、これらが上手く使えるようになると「本当に全くミスが出\r\n\r\nなくなった」からです。\r\n\r\n&nbsp;\r\n\r\nそれはもちろん「個人」という小さい範囲だったのでできたからかもしれませんが、\r\n\r\nこれがやり方によっては部署単位、企業単位でできるようになるのではないでしょう\r\n\r\nか。\r\n\r\n&nbsp;\r\n\r\nしかしここで大きな問題が発生します。それは「上の人たちのITに関する理解が足り\r\n\r\nない、そもそもそういった概念がない」という点です。\r\n\r\n&nbsp;\r\n\r\n部署単位、企業単位で何かを変えようとしても、上の人たちにその理解がなければ、\r\n\r\nどんなに良い解決策であっても進みません。\r\n\r\n&nbsp;\r\n\r\nでもこれは仕方ないかもしれません。自分も数ヶ月前にやっとVBAというプログラミ\r\n\r\nング言語のすごさがわかりました。そういった理解も、実際の業務においてマクロの\r\n\r\nすごさを実体験として経験できたからです。\r\n\r\n&nbsp;\r\n\r\n今の時代は様々なメディアや本から「プログラミングの時代になる」とか「このプロ\r\n\r\nグラミング言語を勉強した方がいい」といった言葉をよく目にするようになりました。\r\n\r\n&nbsp;\r\n\r\n「論より証拠」とはよく言ったもので、そもそも「なぜそれが必要なのか」というこ\r\n\r\nとが理解できないと、人間というのはなかなか取り組めないものです。\r\n\r\n&nbsp;\r\n\r\n特に職位が上がれば上がるほど現場レベルの業務からは遠ざかっていきます。企業の\r\n\r\n大きな方向性を決めるとか財務の分析業務に比べれば、日々の数値を合わせる業務な\r\n\r\nんて上の人たちから見れば些細なものでしかないでしょう。\r\n\r\n&nbsp;\r\n\r\n特にありがちなことなのですが、とにかく「やれ」としか言われないことです。根性\r\n\r\n論でとにかく丁寧に長い時間かけてチェックすればミスも減るだろう考えているのか\r\n\r\nもしれません。\r\n\r\n&nbsp;\r\n\r\nこれは自分の考えなのですが、要は具体的な解決策が「わからない」から「やれ」と\r\n\r\nしか言えないのではないでしょうか。これは自分が人を見る時の基準のひとつにして\r\n\r\nいます。\r\n\r\n&nbsp;\r\n\r\nよく「自分の頭で考えろ」という人がいますけど、これを言う人ってたぶん理解でき\r\n\r\nてないと思うんですよね。確かに全部上司から教えてもらうというのは、考えるとい\r\n\r\nう点から良くないとは思います。\r\n\r\n&nbsp;\r\n\r\nしかし、上司がちゃんと理解できているのであれば「何らかのヒント」ぐらいは出せ\r\n\r\nるはずだからです。\r\n\r\n&nbsp;\r\n\r\nもしちゃんと理解できているのであれば、例えば\r\n\r\n「VLOOKUP関数でこの数値を引っ張ってきたいのですが、キーとなる数値が重複し\r\n\r\nてしまう部分があるのでどうしても引っ張ってこれません。こういった場合どうすれ\r\n\r\nばいいですか？」という質問に対して\r\n\r\n&nbsp;\r\n\r\n「この列のこの数値を文字列連結演算子の『<em>&amp;』</em>か、CONCATENATE<em>関数を使って繋</em>\r\n\r\n<em>げる、そうすると全体の中で『一意の数値』になる</em>はずだからVLOOKUP関数のキー\r\n\r\nとして利用できる」といった感じで答えられるはずだからです。\r\n\r\n&nbsp;\r\n\r\nしかしただ「やれ」としか言えない人間がいたら、「あっ（察し）」と自分ではなっ\r\n\r\nてしまいます。ですからこれは職位が上の人に限りませんが、何事も「言い方」には\r\n\r\n注意した方が良いかと思います。\r\n<h2>もし会計ソフトが学習してくれたら</h2>\r\nここまでプログラミングのデバッグとかそれをより簡単にできるツールについて書い\r\n\r\nてきました。\r\n\r\n&nbsp;\r\n\r\n経理業務に欠かせないものとして「会計ソフト」があります。この会計ソフトにプロ\r\n\r\nグラミングで使うデバッガなどのツールがあったらどれだけ便利になるかなぁと考え\r\n\r\nるようになりました。\r\n\r\n&nbsp;\r\n\r\nここまで書くと会計ソフトにはデバッガ的な部分は何もないかのように見えるかもし\r\n\r\nれませんがそんなことはありません。\r\n\r\n&nbsp;\r\n\r\n例えば会計ソフトで何らかの取引の仕訳を入力する時があったとします。これが借方\r\n\r\nが10,000円で貸方が9,980円となった場合に貸借不一致として仕訳が入力ができない\r\n\r\nようになっています。\r\n\r\n&nbsp;\r\n\r\n他にも、ある勘定科目にしか特定の補助科目が表示されないようにしていたりなど、\r\n\r\n機能ごとにおかしな入力がされないようになっています。\r\n\r\n&nbsp;\r\n\r\n他にもいろいろな機能があるのですが、だからといって経理業務において数値が「\r\n\r\n合う」というわけではありません。人間の手が入ると様々なミスが発生します。\r\n\r\n&nbsp;\r\n\r\n例えば家賃などは毎月発生するものですが、この部分の入力を忘れていたりという\r\n\r\nことがあります。\r\n\r\n&nbsp;\r\n\r\nまた、資金移動の時とか社員への給与の支払いとかお金が移動するときにいくらか\r\n\r\nの手数料が発生するのですが、この数値は小さいためにミスが発生しやすいです。\r\n\r\n&nbsp;\r\n\r\n例えば単純に見落としていたり、入力する時に微妙に数値を間違えたり（648円とか\r\n\r\n256円など金額の多寡や振込み方法の違いなどで混同しやすい）、桁数を間違えたり\r\n\r\n(648円を6480円にしてしまったり)など可能性は無限にあります。\r\n\r\n&nbsp;\r\n\r\nしかし会計ソフトがその企業の取引のパターンを学習してくれたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\n例えば、ある月に特定の仕訳が入力されなかった場合、会計ソフトから「過去3年間\r\n\r\nの5月にこの取引先に毎回支払いをしていますが仕訳が入力されていません。問題は\r\n\r\nありませんか？」みたいな警告が表示されたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\nこのような警告が表示されたら入力忘れは少なくなるかもしれません。\r\n\r\n&nbsp;\r\n\r\n他にも毎月決まった取引先に決まった金額を支払っていたとします。例えば毎月90万\r\n\r\nから110万円の範囲で支払っていたのにある月は1000万円の支払いの入力をした場合、\r\n\r\n会計ソフトから「この数値は過去のデータの平均と比較すると突出していますが異常値\r\n\r\nではありませんか」と警告してくれたらどうでしょうか。\r\n\r\n&nbsp;\r\n\r\nもしかしたら仕訳を入力した人が単純に入力する桁数を間違えてしまったかもしれませ\r\n\r\nん。\r\n\r\n&nbsp;\r\n\r\n別にこういった形でなくても構わないのですが、プログラミングのデバッグツールのよ\r\n\r\nうに人間が何らかのミスをしてしまったことに対して「警告してくれる」機能が会計ソ\r\n\r\nフトにあったら便利だなぁと思います。\r\n\r\n&nbsp;\r\n\r\nまぁ一番良いのは完全に人の手が入らないようにしてしまうことだとは思いますが。完\r\n\r\n全にコンピュータに処理させてしまえば、人間がしてしまうミスの可能性はほとんど排\r\n\r\n除できるので。\r\n\r\n&nbsp;\r\n\r\n仮にそういったシステムができても、そのシステムを利用するための知識がまた必要に\r\n\r\nなってくるわけで、この「ミスをしない」という課題を解決するのはなかなか難しそう\r\n\r\nですね。\r\n<h2>あわせて読みたい</h2>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;', '経理業務にデバッグツールがついたり会計ソフトが学習できたら便利なのに', '', 'inherit', 'closed', 'closed', '', '2712-revision-v1', '', '', '2018-02-16 09:06:05', '2018-02-16 09:06:05', '', 2712, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/2712-revision-v1', 0, 'revision', '', 0),
(2720, 1, '2018-02-16 12:46:15', '2018-02-16 12:46:15', 'スポンサードリンク\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>\r\n<!-- 記事上② -->\r\n<ins class="adsbygoogle"\r\n     style="display:block"\r\n     data-ad-client="ca-pub-5555284323037918"\r\n     data-ad-slot="6477424589"\r\n     data-ad-format="auto"></ins>\r\n<script>\r\n(adsbygoogle = window.adsbygoogle || []).push({});\r\n</script>\r\n\r\n<!-- SITEMAP CONTENT REPLACE POINT -->\r\n\r\nスポンサーリンク\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>\r\n<ins class="adsbygoogle"\r\n     style="display:block; text-align:center;"\r\n     data-ad-format="fluid"\r\n     data-ad-layout="in-article"\r\n     data-ad-client="ca-pub-5555284323037918"\r\n     data-ad-slot="8783148987"></ins>\r\n<script>\r\n     (adsbygoogle = window.adsbygoogle || []).push({});\r\n</script>', 'サイトマップ', '', 'inherit', 'closed', 'closed', '', '1260-revision-v1', '', '', '2018-02-16 12:46:15', '2018-02-16 12:46:15', '', 1260, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/1260-revision-v1', 0, 'revision', '', 0),
(2721, 1, '2018-02-16 14:11:03', '2018-02-16 14:11:03', '今回は以下の前回の記事の続きからです。\r\n<ul>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2015/06/04/204718">「エクサスケールの衝撃」と「睡蓮」 - 知識の倉庫の整理</a></b></li>\r\n</ul>\r\n<div class="section">\r\n<h2 id="前特異点と技術的特異点"><u><b>前特異点と技術的特異点</b></u></h2>\r\nタイトルの<b>前特異点</b>とは2030年前後のことを指しています。\r\n\r\nちなみに<b><u>技術的特異点（シンギュラリティー）※1</u></b>というものがあり、これが2045年\r\n\r\n前後を指しています。\r\n<div class="section">\r\n<h2 id="技術的特異点シンギュラリティーとレイカーツワイル"><u><b>技術的特異点（シンギュラリティー）とレイ・カーツワイル</b></u></h2>\r\nこの<b>技術的特異点</b>という概念について2005年に『The Singularity Is Near: When\r\n\r\nHumans Transcend Biology』という著書を通して説明したのがアメリカの「<b><u>レイ・</u></b>\r\n\r\nカーツワイル※2」という人物です。\r\n\r\n&nbsp;\r\n\r\nわかりやすく言うと人工知能を研究しているすごい人ですね。この人物が発表した\r\n\r\n技術的特異点とは、現在パソコンの性能は非常に早いスピードで進化していますが、\r\n\r\n人工知能も同様であり、その人工知能が人類の知能を越えるのが2045年頃になるだ\r\n\r\nろうという言葉です。\r\n\r\n&nbsp;\r\n\r\n<b>AI（Artificial Intelligence：人工知能）</b>なんて言われたりもしています。前特異\r\n\r\n点とは技術的特異点の前段階、本書ではエクサスケールコンピューティングの実現で\r\n\r\n技術的特異点の前に前特異点が生まれるとあります。\r\n\r\n&nbsp;\r\n\r\n</div>\r\n</div>\r\n<div class="section">\r\n<h2 id="エクサスケールコンピュータができると何が起こるのか"><u><b>エクサスケールコンピュータができると何が起こるのか</b></u></h2>\r\n2020年までにエクサFLOPSの処理が実現できるスパコン（スーパーコンピュータ）が\r\n\r\nできあがって、2030年までにそれを使った様々な実験や試みが行われると予想されて\r\n\r\nいます。さらにその実験や試みが2030年以降に大きく花開くとのこと。\r\n\r\n&nbsp;\r\n\r\nではそれが具体的にどういったものなのかいくつか紹介してみたいと思います。\r\n<div class="section">\r\n<h2 id="2040年には商用の核融合発電の可能性も"><u><b>2040年には商用の核融合発電の可能性も</b></u></h2>\r\n自分が注目すべき点だと思っているのは第3章の「エネルギーがフリーになる」で、\r\n\r\nそのフリーになったエネルギーで、第4章にかけて「生活のために働く必要のない社会\r\n\r\nの出現」とあります。その第1項に「『衣』『食』『住』がフリーになる」とあります。\r\n\r\n&nbsp;\r\n\r\n自分の中での要約ですが、睡蓮の実現によって、そのエネルギーを発生させるための\r\n\r\n「最適解」の計算が短期間ですることが可能になります。例えば構造シミュレーショ\r\n\r\nンであるとか、耐久性であるとか、必要な材料など、あらゆることが今までの何倍も\r\n\r\nの速さでシミュレーションできるということです。\r\n\r\n&nbsp;\r\n\r\n<b><u>核融合発電</u></b>※3は今まであれば今世紀の実用化は難しいのではないか、と一般的には言わ\r\n\r\nれていましたが、睡蓮の完成によって2040年には商用の核融合発電の目標が立てられ\r\n\r\nているとのこと。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="レーザー核融合発電"><u><b>レーザー核融合発電</b></u></h2>\r\n<b><u>レーザー核融合発電</u></b>という分野もありますが、これも将来的には1つの集合住宅に1つ\r\n\r\n設置するというもの可能になり得るとのことです。それらが実現されるとどのように\r\n\r\nなるのか。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="植物工場による食料の無料化"><u><b>植物工場による食料の無料化</b></u></h2>\r\n電気代、輸送代がフリーになります。現在、先端的な技術の分野で進められている\r\n\r\n「植物工場」があります。睡蓮の実現によってエネルギーがフリーになる。\r\n\r\n&nbsp;\r\n\r\nそれによって電気代、輸送代がフリーになる。そうなると植物工場を稼動させるため\r\n\r\nの動力もフリーになり結果として多くの人々の食料が今後無料になっていくだろうと\r\n\r\nいう流れです。\r\n\r\n&nbsp;\r\n\r\n他にも睡蓮によって実現できる技術や社会インフラがたくさん書かれています。まだ\r\n\r\n実感はわきませんが、本当にそれらのことが実現するようになっていったらこれほど\r\n\r\n嬉しいことはないですね。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="長時間労働からの解放"><u><b>長時間労働からの解放</b></u></h2>\r\n今までであれば、生活のために多少無理をしてでも仕事をしなければいけませんでし\r\n\r\nた。会社の人間関係の問題や長時間労働もそれが当たり前だと思っている人が多いで\r\n\r\nしょう。\r\n\r\n&nbsp;\r\n\r\nしかし、それほど遠くない未来にそれらの問題が解放されるのであれば、これほど嬉\r\n\r\nしいことはありません。本書に書かれているような世界を切に願うばかりです。\r\n<div class="section"></div>\r\n<!--nextpage-->\r\n\r\n</div>\r\n</div>\r\n<div class="section">\r\n<div class="section">\r\n<h2 id="エクサスケールコンピュータは時間の流れを早める"><u><b>エクサスケールコンピュータは、時間の流れを早める</b></u></h2>\r\nこれらに対する自分の考察なのですが、次世代コンピュータによって今までよりもよ\r\n\r\nり短時間でより多くのシミュレーションができるようになります。これが何を意味す\r\n\r\nるのか？自分の考えでは「時間の流れを早める」ことにつながると思います。\r\n\r\n&nbsp;\r\n\r\n例えば、本書では現生人類が生まれたのが約25万年前であり、その後約24万年間は同\r\n\r\nじような生活をしていたようです。それまでの間に、一人の人間の寿命が仮に25歳だ\r\n\r\nったとして約1万世代の誕生があったとします。\r\n\r\n&nbsp;\r\n\r\nその24万年間という現実の時間のシミュレーションがあったからこそ農業革命が起こ\r\n\r\nせたと考えられます。その約24万年に及ぶシミュレーションがコンピュータという仮\r\n\r\n想空間の中で仮に1日でできてしまうようになったと考えたらどうでしょうか？\r\n\r\n&nbsp;\r\n\r\nさらにそれを100日間行ったとしたら「2400万年間の時間を進めた」と言えるのでは\r\n\r\nないでしょうか。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="時間も指数関数的に進んでいく"><u><b>時間も指数関数的に進んでいく</b></u></h2>\r\nそのように考えることができれば今後私たちが生きているこの時間の時計の針が進め\r\n\r\nば進むほど、私たちの時間も指数関数的に進んでいくと考えられないでしょうか。\r\n\r\n&nbsp;\r\n\r\nつまり何もしなければあっという間に時代遅れになってしまうと思われます。このこ\r\n\r\nとは、おそらくいろんな分野に影響してくるでしょう。\r\n\r\n&nbsp;\r\n\r\n例えば経済やビジネスにおいて第3次産業の割合が増加したり、海外への工場移転、\r\n\r\nアウトソーシング、それによって貧富の格差もますます早まってしまうのではない\r\n\r\nかと危惧しています。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="今後世界は分岐していく"><u><b>今後世界は分岐していく</b></u></h2>\r\nときどきスピリチュアルに関する本を読んだりして、その中に「今後世界は分岐し\r\n\r\nていく」という文章を見たりするのですが、まさにそのような現象が今後起こって\r\n\r\nくるのではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nであるならば、なるべく良い方の道へいけるように早めに準備、行動をしていった\r\n\r\nほうが良いでしょう。\r\n\r\n&nbsp;\r\n\r\n別の視点で見ると、そのような概念を持つ人や、最新のソフトや機械が使える人は\r\n\r\n「自分の時間を他の人よりも早く進めることができる」とも言えるのではないかと\r\n\r\n考えを巡らせたりもします。\r\n\r\n&nbsp;\r\n\r\nとなれば、そのような人はどんどん先に進んでしまい、最終的には追いつけなくな\r\n\r\nるという事態にもなるかもしれません。また別の見方をすれば自分の隣の人間は既\r\n\r\nに「1億年生きた人」と言えるような日が来るかもしれません。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="1億年分のシミュレーション"><u><b>1億年分のシミュレーション</b></u></h2>\r\n実際に1億年生きたわけではなくその人は最新の機械を使いこなせることによって、\r\n\r\n他の人にはできない「1億年分のシミュレーション」をすることができ、知識的に\r\n\r\n1億歳に相当すると言える、と判断される日が来るかもしれない。\r\n\r\n&nbsp;\r\n\r\n以上が「エクサスケールの衝撃」という本を読んで自分が感じたことです。\r\n\r\n&nbsp;\r\n\r\n要は、今我々が夢に描いてたようなことは意外に早く訪れるだろうから、そのため\r\n\r\nの準備をした方がいいのではないかなということです。\r\n\r\n&nbsp;\r\n\r\nこういったことは、また随時ブログに書いていこうと思います。\r\n\r\n</div>\r\n</div>\r\n<div class="section">\r\n<h2 id="あわせて読みたい"><u><b>あわせて読みたい</b></u></h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n\r\n<ul>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2015/05/16/051126">第4次産業革命による考える工場でマスカスタマイゼーションが実現する - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2015/05/21/225754">インダストリー4.0によってFDM方式を利用した3DCAD、3DCGデータを元に立体を造形できるようになる - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2015/12/06/145240">スーパーのセミセルフレジや大リーグの球審ロボットなど人間の仕事で無人化が進みつつあるようです。 - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2016/03/12/104145">もし料理ロボットが料理データをロボット同士でシェアして自律的に学習できたら - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2017/03/11/120529">チェス盤の法則と睡蓮から考える現代のコンピュータの指数関数的成長について - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2016/11/05/113306">みずほ銀行のペッパー・ワトソン導入やファナックのFIELD systemなどのロボット同士が会話をする未来について - 知識の倉庫の整理</a></b></li>\r\n</ul>\r\n&nbsp;\r\n\r\n</div>\r\n</div>\r\n<div class="section">\r\n<div class="section">\r\n\r\n&nbsp;\r\n\r\n</div>\r\n</div>', 'エクサスケールコンピュータ「睡蓮」と前特異点による新しい社会インフラ', '', 'inherit', 'closed', 'closed', '', '903-revision-v1', '', '', '2018-02-16 14:11:03', '2018-02-16 14:11:03', '', 903, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/903-revision-v1', 0, 'revision', '', 0),
(2722, 1, '2018-02-16 14:16:19', '2018-02-16 14:16:19', '今回は以下の前回の記事の続きからです。\r\n<ul>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2015/06/04/204718">「エクサスケールの衝撃」と「睡蓮」 - 知識の倉庫の整理</a></b></li>\r\n</ul>\r\n<div class="section">\r\n<h2>前特異点と技術的特異点</h2>\r\nタイトルの<b>前特異点</b>とは2030年前後のことを指しています。\r\n\r\nちなみに<b><u>技術的特異点（シンギュラリティー）※1</u></b>というものがあり、これが2045年\r\n\r\n前後を指しています。\r\n<div class="section">\r\n<h2 id="技術的特異点シンギュラリティーとレイカーツワイル"><u><b>技術的特異点（シンギュラリティー）とレイ・カーツワイル</b></u></h2>\r\nこの<b>技術的特異点</b>という概念について2005年に『The Singularity Is Near: When\r\n\r\nHumans Transcend Biology』という著書を通して説明したのがアメリカの「<b><u>レイ・</u></b>\r\n\r\nカーツワイル※2」という人物です。\r\n\r\n&nbsp;\r\n\r\nわかりやすく言うと人工知能を研究しているすごい人ですね。この人物が発表した\r\n\r\n技術的特異点とは、現在パソコンの性能は非常に早いスピードで進化していますが、\r\n\r\n人工知能も同様であり、その人工知能が人類の知能を越えるのが2045年頃になるだ\r\n\r\nろうという言葉です。\r\n\r\n&nbsp;\r\n\r\n<b>AI（Artificial Intelligence：人工知能）</b>なんて言われたりもしています。前特異\r\n\r\n点とは技術的特異点の前段階、本書ではエクサスケールコンピューティングの実現で\r\n\r\n技術的特異点の前に前特異点が生まれるとあります。\r\n\r\n&nbsp;\r\n\r\n</div>\r\n</div>\r\n<div class="section">\r\n<h2>エクサスケールコンピュータができると何が起こるのか</h2>\r\n2020年までにエクサFLOPSの処理が実現できるスパコン（スーパーコンピュータ）が\r\n\r\nできあがって、2030年までにそれを使った様々な実験や試みが行われると予想されて\r\n\r\nいます。さらにその実験や試みが2030年以降に大きく花開くとのこと。\r\n\r\n&nbsp;\r\n\r\nではそれが具体的にどういったものなのかいくつか紹介してみたいと思います。\r\n<div class="section">\r\n<h2 id="2040年には商用の核融合発電の可能性も"><u><b>2040年には商用の核融合発電の可能性も</b></u></h2>\r\n自分が注目すべき点だと思っているのは第3章の「エネルギーがフリーになる」で、\r\n\r\nそのフリーになったエネルギーで、第4章にかけて「生活のために働く必要のない社会\r\n\r\nの出現」とあります。その第1項に「『衣』『食』『住』がフリーになる」とあります。\r\n\r\n&nbsp;\r\n\r\n自分の中での要約ですが、睡蓮の実現によって、そのエネルギーを発生させるための\r\n\r\n「最適解」の計算が短期間ですることが可能になります。例えば構造シミュレーショ\r\n\r\nンであるとか、耐久性であるとか、必要な材料など、あらゆることが今までの何倍も\r\n\r\nの速さでシミュレーションできるということです。\r\n\r\n&nbsp;\r\n\r\n<b><u>核融合発電</u></b>※3は今まであれば今世紀の実用化は難しいのではないか、と一般的には言わ\r\n\r\nれていましたが、睡蓮の完成によって2040年には商用の核融合発電の目標が立てられ\r\n\r\nているとのこと。\r\n\r\n</div>\r\n<div class="section">\r\n<h2>レーザー核融合発電</h2>\r\n<b><u>レーザー核融合発電</u></b>という分野もありますが、これも将来的には1つの集合住宅に1つ\r\n\r\n設置するというもの可能になり得るとのことです。それらが実現されるとどのように\r\n\r\nなるのか。\r\n\r\n</div>\r\n<div class="section">\r\n<h2>植物工場による食料の無料化</h2>\r\n電気代、輸送代がフリーになります。現在、先端的な技術の分野で進められている\r\n\r\n「植物工場」があります。睡蓮の実現によってエネルギーがフリーになる。\r\n\r\n&nbsp;\r\n\r\nそれによって電気代、輸送代がフリーになる。そうなると植物工場を稼動させるため\r\n\r\nの動力もフリーになり結果として多くの人々の食料が今後無料になっていくだろうと\r\n\r\nいう流れです。\r\n\r\n&nbsp;\r\n\r\n他にも睡蓮によって実現できる技術や社会インフラがたくさん書かれています。まだ\r\n\r\n実感はわきませんが、本当にそれらのことが実現するようになっていったらこれほど\r\n\r\n嬉しいことはないですね。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="長時間労働からの解放"><u><b>長時間労働からの解放</b></u></h2>\r\n今までであれば、生活のために多少無理をしてでも仕事をしなければいけませんでし\r\n\r\nた。会社の人間関係の問題や長時間労働もそれが当たり前だと思っている人が多いで\r\n\r\nしょう。\r\n\r\n&nbsp;\r\n\r\nしかし、それほど遠くない未来にそれらの問題が解放されるのであれば、これほど嬉\r\n\r\nしいことはありません。本書に書かれているような世界を切に願うばかりです。\r\n<div class="section"></div>\r\n\r\n</div>\r\n</div>\r\n<div class="section">\r\n<div class="section">\r\n<h2 id="エクサスケールコンピュータは時間の流れを早める"><u><b>エクサスケールコンピュータは、時間の流れを早める</b></u></h2>\r\nこれらに対する自分の考察なのですが、次世代コンピュータによって今までよりもよ\r\n\r\nり短時間でより多くのシミュレーションができるようになります。これが何を意味す\r\n\r\nるのか？自分の考えでは「時間の流れを早める」ことにつながると思います。\r\n\r\n&nbsp;\r\n\r\n例えば、本書では現生人類が生まれたのが約25万年前であり、その後約24万年間は同\r\n\r\nじような生活をしていたようです。それまでの間に、一人の人間の寿命が仮に25歳だ\r\n\r\nったとして約1万世代の誕生があったとします。\r\n\r\n&nbsp;\r\n\r\nその24万年間という現実の時間のシミュレーションがあったからこそ農業革命が起こ\r\n\r\nせたと考えられます。その約24万年に及ぶシミュレーションがコンピュータという仮\r\n\r\n想空間の中で仮に1日でできてしまうようになったと考えたらどうでしょうか？\r\n\r\n&nbsp;\r\n\r\nさらにそれを100日間行ったとしたら「2400万年間の時間を進めた」と言えるのでは\r\n\r\nないでしょうか。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="時間も指数関数的に進んでいく"><u><b>時間も指数関数的に進んでいく</b></u></h2>\r\nそのように考えることができれば今後私たちが生きているこの時間の時計の針が進め\r\n\r\nば進むほど、私たちの時間も指数関数的に進んでいくと考えられないでしょうか。\r\n\r\n&nbsp;\r\n\r\nつまり何もしなければあっという間に時代遅れになってしまうと思われます。このこ\r\n\r\nとは、おそらくいろんな分野に影響してくるでしょう。\r\n\r\n&nbsp;\r\n\r\n例えば経済やビジネスにおいて第3次産業の割合が増加したり、海外への工場移転、\r\n\r\nアウトソーシング、それによって貧富の格差もますます早まってしまうのではない\r\n\r\nかと危惧しています。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="今後世界は分岐していく"><u><b>今後世界は分岐していく</b></u></h2>\r\nときどきスピリチュアルに関する本を読んだりして、その中に「今後世界は分岐し\r\n\r\nていく」という文章を見たりするのですが、まさにそのような現象が今後起こって\r\n\r\nくるのではないかと思っています。\r\n\r\n&nbsp;\r\n\r\nであるならば、なるべく良い方の道へいけるように早めに準備、行動をしていった\r\n\r\nほうが良いでしょう。\r\n\r\n&nbsp;\r\n\r\n別の視点で見ると、そのような概念を持つ人や、最新のソフトや機械が使える人は\r\n\r\n「自分の時間を他の人よりも早く進めることができる」とも言えるのではないかと\r\n\r\n考えを巡らせたりもします。\r\n\r\n&nbsp;\r\n\r\nとなれば、そのような人はどんどん先に進んでしまい、最終的には追いつけなくな\r\n\r\nるという事態にもなるかもしれません。また別の見方をすれば自分の隣の人間は既\r\n\r\nに「1億年生きた人」と言えるような日が来るかもしれません。\r\n\r\n</div>\r\n<div class="section">\r\n<h2 id="1億年分のシミュレーション"><u><b>1億年分のシミュレーション</b></u></h2>\r\n実際に1億年生きたわけではなくその人は最新の機械を使いこなせることによって、\r\n\r\n他の人にはできない「1億年分のシミュレーション」をすることができ、知識的に\r\n\r\n1億歳に相当すると言える、と判断される日が来るかもしれない。\r\n\r\n&nbsp;\r\n\r\n以上が「エクサスケールの衝撃」という本を読んで自分が感じたことです。\r\n\r\n&nbsp;\r\n\r\n要は、今我々が夢に描いてたようなことは意外に早く訪れるだろうから、そのため\r\n\r\nの準備をした方がいいのではないかなということです。\r\n\r\n&nbsp;\r\n\r\nこういったことは、また随時ブログに書いていこうと思います。\r\n\r\n</div>\r\n</div>\r\n<div class="section">\r\n<h2 id="あわせて読みたい"><u><b>あわせて読みたい</b></u></h2>\r\n<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8783148987"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>こんな記事も読まれています<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- pbad --><ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-5555284323037918" data-ad-slot="8054263157" data-matched-content-ui-type="image_card_stacked" data-matched-content-rows-num="3" data-matched-content-columns-num="3" data-ad-format="autorelaxed"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n<ul>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2015/05/16/051126">第4次産業革命による考える工場でマスカスタマイゼーションが実現する - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2015/05/21/225754">インダストリー4.0によってFDM方式を利用した3DCAD、3DCGデータを元に立体を造形できるようになる - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2015/12/06/145240">スーパーのセミセルフレジや大リーグの球審ロボットなど人間の仕事で無人化が進みつつあるようです。 - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2016/03/12/104145">もし料理ロボットが料理データをロボット同士でシェアして自律的に学習できたら - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2017/03/11/120529">チェス盤の法則と睡蓮から考える現代のコンピュータの指数関数的成長について - 知識の倉庫の整理</a></b></li>\r\n 	<li><b><a href="https://www.chishikinosoukonoseiri.com/entry/2016/11/05/113306">みずほ銀行のペッパー・ワトソン導入やファナックのFIELD systemなどのロボット同士が会話をする未来について - 知識の倉庫の整理</a></b></li>\r\n</ul>\r\n&nbsp;\r\n\r\n</div>\r\n<div class="section">\r\n<div class="section">\r\n\r\n&nbsp;\r\n\r\n</div>\r\n</div>', 'エクサスケールコンピュータ「睡蓮」と前特異点による新しい社会インフラ', '', 'inherit', 'closed', 'closed', '', '903-revision-v1', '', '', '2018-02-16 14:16:19', '2018-02-16 14:16:19', '', 903, 'https://www.chishikinosoukonoseiri.com/entry/2018/02/16/903-revision-v1', 0, 'revision', '', 0);
