VBAの勉強を始めてみた

色々試しています。

「効率の良さ」という価値に対してもっと具体的な対価がほしい(雑記-18)

効率良く仕事をこなす人っていうのは周りに評価されにくい場合があります。例えば同じ仕事を Aさんは、周囲の助言がなくても半日でこなせる Bさんは、周囲に知恵を借りまくり、さらに残業し、3日間かけてこなす 出来上がった成果が同じであれば、単純にAさん…

Windows1.0で遊んでみた(雑記-17)

ブラウザ上で Windows1.0 が動作するエミュレーターがあるようなので遊んでみます! ↓こちら「Virtual x86」というページ http://copy.sh/v86/ 上記にアクセスするとエミュレート可能な OS の一覧が表示されます。 Windows1.0の他に Windows95、Windows98、F…

使うほど時短になる! 愛用フリーソフトを晒すだけの巻(雑記-16)

今回は下記のようなPC操作を楽チンにしてくれるフリーソフトを3つ紹介します。 別ウィンドウの必要な箇所を見ながらアクティブウィンドウで作業する 最近コピーした文章や定型文を再利用(ペースト)する 目的のフォルダに簡単にアクセスする 似たような…

電気の雑学 ブラックアウト・ブラックスタートについて分かりやすく説明する試み(雑記-15)

今回は VBA とはまったく関係ありません。書くことも無くなってきた たまには違うことも書いてみましょう。 2018年9月6日に起こった、北海道胆振地方の地震および全域停電はまだ記憶に新しいところです。被災された方、停電で日常生活が困難になった方はとて…

Word 左からの文字数指定で置換する

前回は段落の両端に対しての処理でしたが、今回は段落の内側にアプローチしてみたいと思います。ということで、左からの文字数指定で各段落の内側を置換するマクロを作ってみました。 前回と同じように任意の範囲を選択します。仮に左から5文字目を置換開始…

Word 選択範囲の段落の先頭または末尾に指定文字を挿入する

文書の各段落の先頭や末尾に文字をまとめて追加したい場面ってありませんか?「俺(私)にそんな場面はないっ!」って方には、ここから下の記事は無用の長物です。他の場所に GoTo して下さい。 ということで、今回は選択範囲内にある各段落(の先頭または末…

Word 開いている全文書の同じ行にクリップボードのデータを貼り付ける

今回は Word で開いているすべての文書の同じ行(厳密にいうと段落※)にクリップボードのデータを貼り付けさせてみたいと思います。 イメージとしてはこんな感じ。 マクロ実行時にアクティブな文書(最前面にある文書)のカーソル位置を読み取り、すべての文…

Word 非連続な位置にクリップボードのデータを貼り付ける

タイトルの通り、今回は Word の文書で非連続な位置にクリップボードのデータを貼り付けるということをやってみようと思います。 と、いっても非連続な位置に対してどうやってマクロで処理するのか・・・・・・。少し考えた結果、以下のようにやってみることにしま…

Word 標準テンプレート(Normal.dotm)にVBAのコードを記述してマクロを使用するには

今回は Word で VBEを起動する方法 標準モジュールにコードを記述する方法 マクロを実行する方法 を順番に説明したいと思います。この辺は Excel とほとんど同じなので安心して下さい。 Word のデフォルトでは VBE を起動するためのボタンが非表示になってい…

非表示セルや結合セルを無かったことに・・・選択範囲を見たままコピペ

非表示セルや結合セルを含んだ範囲を普通にコピーし、他のセルへ値貼り付けしたら・・・・・・。 下のように、値が飛び飛びになってしまいます。 これを、マクロで飛び飛びにならないようにしてみましょう。 コードはこちらです。 Sub Tab改行区切りでクリップボー…

指定位置(セル)に瞬間移動する方法

エクセルで「列がAAAで行が30000のセルを、表示して下さい」と言われたら、何秒以内に表示できるでしょうか?私がやってみたところ・・・・・・A1セルを表示した状態から、通常のスクロールのみで1分以上かかりました。時間がかかることと、動く数字やアルファベッ…

VBAでIEを操る(フレームについて)

今回は、フレームについてです。社内システムでは未だに使われていたりするので、いちおう書いときましょう。 フレームとは? 複数個に分割した画面に、それぞれ別のページを表示する機能です。下の例では、3つのHTMLファイルが用意されます。 ・構成.html(…

VBAでIEを操る(ページ移動後にDOMや要素を再取得しなかったらどうなるのか?)

今回は、変数に取得したDOMや要素が、ページ移動後、どんな挙動になるか調べてみます。ページを移動した後、DOMツリー構造が変わるので、再取得する必要があるだろう・・・・・・と予想できます。が、実際はどうなのか、書籍やネットから腑に落ちる情報を見…

VBAでIEを操る(ポップアップや通知バーをSendKeysで操作する)

VBAでIEを操作している途中、ポップアップや通知バーが出てきたらどうすればいいでしょうか?今回は、その辺に焦点をあててみたいと思います。 ポップアップや通知バーが出たら、選択肢を選んで次へ進んだり、ファイルを保存したりする・・・・・・これをオブジェ…

VBAでIEを操る(処理・読み込みを待機する)

今回はIEの操作を行った後に発生する処理および読み込みを待って、次の操作を行うといったことに焦点を当てて話を進めていきたいと思います。前回も書きましたが、読み込み完了を待たずに次の操作を行っても空振りする場合があるので、何らかの形で処理を待…

VBAでIEを操る(取得した要素を操作:☆ボタンをn回クリックする)

今回は、VBAから、テキストボックスに文字列を入力したり、セレクトボックスの項目を選択したり、チェックボックス・ラジオボタンをON・OFFしたり、リンクやボタンをクリックしたりしてみたいと思います。 前回、要素の取得方法について説明したので、今回は…

VBAでIEを操る(DOMから要素を取得)

今回は、取得したIEからDOMを取得し、さらにそれぞれの要素を取得したいと思います。 DOMって何? という声が聞こえたり、聞こえなかったり・・・・・・。 えーっと、私もあんまり詳しいわけじゃないですが、JavaScriptの書籍などから得た知識によると・・・・・・Docume…

VBAでIEを操る(起動済みIEをシェルとして取得)

前回は、IEを起動させると同時にIEをオブジェクトとして取得しました。しかし、CreateObjectで起動したIEは何も表示していないIEです。Webページを表示するには、下記のように navigate メソッドでURLを指定します。 ie.navigate "URLをここに記載" ではでは…

VBAでIEを操る(IEをオブジェクトとして取得)

IE(Internet Explorer)の後継としてEdgeが登場していますが、IEもまだまだ現役なハズ。私は個人で Chrome を主に使っていますが、会社では IE を使っています(使わされています)。 なので、IEを使った社内システムにおいて、入力作業などを半自動化、あ…

ひっそりとExcel関数のおさらい(表の縦・横を入れ替える)

今回は、表の縦・横を簡単に入れ替える方法を紹介します。 目次 形式を選択して貼り付け(行列を入れ替える) TRANSPOSE関数を使用する 形式を選択して貼り付け(行列を入れ替える) これが一番手っ取り早く、簡単です。表をコピーし、貼り付けたい位置で、…

ひっそりとExcel関数のおさらい(乱数を発生させる)

今回は、エクセルで乱数を発生させる関数についてです。 目次 RAND関数(0以上、1未満の乱数を生成する) RANDBETWEEN関数(指定した範囲の整数の乱数を生成する) VBAで、RANDBETWEEN関数を使う RAND関数(0以上、1未満の乱数を生成する) =RAND()引数はあ…

ひっそりとExcel関数のおさらい(アラビア数字とローマ数字の相互変換)

アラビア数字をローマ数字に、ローマ数字をアラビア数字に変換する関数です。 ROMAN関数(アラビア数字をローマ数字に変換する) =ROMAN(数値)引数にアラビア数字の数値を指定します。 数値 返り値 1 I 2 II 3 III 4 IV 5 V 6 VI 7 VII 8 VIII 9 IX 10 X ARA…

ひっそりとExcel関数のおさらい(時間の切り上げ・切り捨て)

エクセルやVBAで、時間のデータを切り上げ・切り捨てするにはどうすればいいでしょうか?うーん・・・・・・。Round関数?DateAdd関数?通常の数値と違い、年・月・日・時・分・秒 をプログラム上でどう扱うか悩む人は少なからずいると思います。(私もその一人で…

セルを縦方向に結合

エクセルの標準ボタンには「横方向に結合」がありますが、「縦方向に結合」はありません。どうしてないのかわかりませんが、個人的にその機能が欲しいので、VBAで作ってみます。 ググればありそうだけど、簡単そうなので、自分でやってみます。 Sub 縦方…

日付データ(シリアル値)をお好みの表示形式で文字列に変換する

今回は、日付データを一括で文字列に変換する簡単なマクロを作ったので紹介します。 まず、日付データを文字列として扱いたいのはどんな場合か? について、軽く触れておきたいと思います。 このように、A列に日付データ、B列にコメントがあったとして これ…

プルダウンで選択すると、シート内の指定セルにジャンプするイベントプロシージャ

今回は、プルダウンメニューから選んだ文字列と同じ文字列を含む、同一シート内のセルにジャンプする(画面の一番上に表示させる)イベントプロシージャを紹介します。 プルダウンメニューから文字列を選ぶ度に、同じ文字列を含むセルを このように一番上に…

ループ処理を極力軽くする方法の模索~混乱編~(Tips-7)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 今回は、ループ処理を使わなければならない場合に、ループの中に含まれる処理を極力軽くする方法について、模索してみようと思います。 下のように、1~9の数値がラン…

指定した数の行を一瞬で挿入するには?(Tips-6)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 今回は、VBAで、ユーザーが指定した数の行を挿入する方法についてです。 まず、下のように、For ~Next を使って、指定した数の行を挿入させてみようと思います。アク…

空白以外のセルを一瞬でカウントするには?(Tips-5)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 今回は、VBAで、セルにデータが有るか無いか(または特定のデータが有るか無いか、でもいい)を調べて、そのデータ数をカウントする方法についてです。 まず、下のよ…

InputBoxのキャンセル判定について(Tips-4)

VBAの勉強を始めて、これまでに学んだことや、思いついたアレやコレをメモっておきます。 今回は、InputBoxでキャンセルを押された場合の判定についてです。 InputBoxでキャンセルを押されたときに、何らかの処理(例えばプロシージャを終了するとか)をさせ…