この記事は、「ExcelVBA Advent Calendar 2017」の10日目の記事です。 時間なくて過去記事でごめんなさい。。。 5年ぶり?、10年ぶり?くらいにExcelVBAでの開発案件がありそうなので事前にできるだけモダンな開発環境を構築してみようと思います。 通常VBAはExcel等のソフト内のエディタ(VBE)で開発し、モジュールの共有化やバージョン管理が難しい開発環境です。そのため今回は、VBE以外の外部エディタを利用したり、GitHubでバージョン管理や差分抽出ができる開発環境を構築できたらと思っています。 ツールについて自分で構築するか、既に良いツールがないか色々と探していたのですが、「text-scripting-vba」というツールが便利そうなので試してみました。詳細についてはText Scripting onVBAに記載されています。 まずはじめに、Exc
ExcelVBAでパスワードロックを解除する方法です。VBAのパスワードロックは、ユーザーがプログラムを変更できないよう制限する為に設定するものです。しかし、時にパスワードが紛失するということがあります。「パスワードを忘れてしまった」「開発者が退職し、パスワードがわからない」などが理由として多いのではないでしょうか。 ひどい案件でVBAのパスワードがかかったまま渡され、担当者に聞いたところ「知らない」と言われて途方に暮れるプログラマーもいたと聞いたことがあります。 そんな方たちの助けになればと、VBAのパスワード解除方法を紹介します。 くれぐれも悪用したり、他人の著作物を覗き見るような不正はしないでください。 全て自己責任において実施してください。当方では一切の責任を負いません。 今回はWindows7 /Excel 2010 を使って検証しました。Excel 2007 以降であれ

excelvba(2003,2007)で プログラムを途中で終了するには。 Application.Quit以外で、プログラムを途中で意図的に終了させるには、なにか関数がありますか? _ 先ほどの質問url http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1258171952 もっと単純なコードにしました。 ループも使ってません。excelのアプリケーション自体を終了させず、プログラムだけを終了させたい。 条件 ESCキー など、物理的なキーボードの操作を含む Application.Quit Exit Sub をつかわない。 Application.Quit →excelのアプリケーション自体を終了させてしまう。excelは閉じたくない。 Exit Sub、exit Function → そのsub もしくは、Fun

VBAやVBScriptって、変数宣言と初期化がものっそい面倒なイメージがある。 C#やJavaみたいにint num = 0;みたいに書ければいいのに…って思っている方は多いのではないでしょうか? 実は、1行でも書ける! やっとVisual Basic系(VB、VB.NET、VBA、VBScriptなど)で変数の宣言と初期化を1行で書く方法を見つけたのでまとめていく。 宣言と初期化を1行で書く 'VBA の場合 '---------------------------- Dim foo As Integer: foo = 0 Dim bar As String: bar = "hogehoge" Dim obj As Object: Set obj = WScript.CreateObject("WScript.Shell") ' VBScript の場合 '-------------

Excelマクロで、複数行のデータを別の複数行データから同じ文字列を検索するマクロがあったとします。この場合、よく使う手として2重ループを使って検索するのですが、2重ループのため時間がかかってしまいます。これを速度アップさせるテクニックを紹介します。 [ad#top-1] 例えば、下の図のようにA列に県市町村名が郵便番号順に並んでいて、B列に同じく県市町村名がランダムに並んだものを用意します。行数はA列、B列ともに1896行あります。 で、A列のすべての行に対して、B列の中に存在するかを調べるプログラムを組んだとします。 その場合、単純に考えると以下のようなプログラムになります。D1セルに処理時間、D2セルに処理回数を表示するようにしました。(TimerはNowと違ってミリ秒まで現れるので便利です) Sub Test1() dt1 = CDbl(Timer) cnt = 0 For m =

プログラマ以外の一般的なサラリーマンの間でExcel/VBAがよく利用されていますが、アマチュアだけにあまり処理速度を気にしていません。処理時間に数分かかってしまうようなものも放置されがちですが、やはり早いことには越したことはないので、速度をあげるちょっとしたテクニックを紹介します。 [ad#top-1] まずはサンプルコードです。 以下のプログラムコードは、C2セルの数値とC3セルの数値を割り算して前の結果に加算する計算を100万回行っています。 処理の最初と最後の時刻差を計算して秒数に直してC6セルに表示させています。この時間(秒)が処理時間となります。 Sub TimeTest0() time1 = Now() result = 0 For i = 0 To 1000000 result = result + Range("C2") + Range("C3") Next i Rang

クライアントからシステム開発案件を受注し、開発成果物を納品する際に、エビデンスとして、Excel上に貼り付けたスクリーンショット(以下、スクショ)を、成果物の仕様書や納品書と共に納品する場合がある。この作業は、クライアントに「こういったテストを実行しました」という証拠を提示するものとなる。クライアントに成果物の機能や制限事項などを説明する場合に大変に有効なものとなっているのが現状だ。 実際、Excel上に記述したテスト仕様書や納品書にスクショを張り付けて、成果物の一部として納品しておくと、後々何らかのトラブルが発生した場合も問題解決に大きく寄与することになる。 しかし現実問題として、成果物の機能のスクショを、Excel上に手作業で延々と張り付けていく作業は単純作業であることもあり、開発者にとっては苦痛この上ない作業だ。 そこで、そのような作業を自動化し手助けをしてくれるツールとして「Sel

【目次】 まえがきvbac の入手方法vbac の使い方vbac の仕様・注意点 余談1 余談2 【まえがき】Microsoft Office製品で利用可能なVBAのコードは、ExcelやWordなどのバイナリファイルに内包される形で保存されます。このために、いわゆるバージョン管理システムでは適切に管理することができず、メンテナンス性が悪いという問題があります。 また、バイナリファイルに内包されるために、コードの確認や微修正などの細々した作業のためにも、WordやExcelを立ち上げ、VBEを開く手間がかかります。小規模にVBAコードを書いている分には困らないのですが、コード量が増えてきた場合(*1)や、複数人に配布したものを保守する場合などにおいては、お世辞にも使い勝手が良いとは言えません。 (*1)個人的な感覚ですが、1ファイルに含まれる総コード量が2,3千行を越えると、どうに

【まえがき】 現状、VBAでInternetExplorer(IE)を自動制御(自動操作)するという話となると、Microsoft Internet Controlsを参照する、もしくは、CreateObjectを使うことで、IEオブジェクトを直接操作するのが定番かと思います。 自分自身、今までは、ExcelVBAのマクロで,IEを自動操作しよう (DOMセレクタ関数をVBAで自作)というblog記事を参考に、IEの制御部分をラップしたクラス(VAMIE)を自作して使っていたのですが…。 自動制御の対象とする IEのバージョンが変わるごとに、細々とした修正の手間が生じる&バージョン間の差異を吸収するような不毛な処理を実装し続ける(※)ことに発狂しかけたので、このたび制御方法を見直し、決別することにしました。 ※ ご存知の方も多いと思いますが、IEはバージョンによって挙動(DOM操作など)


エクセルで祝日/営業日処理・カレンダー・期間計算・ 勤務時間計算・旧暦/干支/六曜などについて調べている方 ちょっとお寄りになりませんか‥‥。フリーソフト『kt関数アドイン』を使うと祝日や第2/4土曜休み など今まで大変だった定義がすごく楽になります。 他にも祝日情報・期間計算の考え方など、お役立ち情報を 公開しています。言語別の祝日判定コード公開中です。 ※Outlook 祝日アップデート データ の提供を始めました。2050年までの祝日を登録できます。 ♪祝♪ H20/2/1本日公示された 官報 により、2009年の 「秋分の日」 が 9月23日 に確定しました。これにより、 かねてより アナウンス してきた 『9月の国民の休日(9月22日)』 も確定しました。 \(^o^)/ ※Windows Vista 環境の方へ ※Windows Vista 環

書くと宣言しながら、すっぽかしていたクローラー/スクレイピング Advent Calendar 2014の11日目です。ExcelのVBAで、IEの操作が出来ます。またその中の機能にDOM操作があります。この二つがあれば、Excelだけでスクレイピングできますよという話です。 何を隠そう、私が初めてスクレイピングに手を染めたのはこのExcelVBAスクレイピングでした。毎月定期的に所定のデータを観測するという仕事があって、面倒くさくて仕方がない私は記録用のExcelを魔改造して勝手に取得するようにしました。1時間くらい掛かってた作業も、ボタンポチになったので随分楽になったと記憶しています。(結局、ボタンを押すのも面倒くさくなって、毎日サーバサイドで動かすようにしましたが)スクレイピングの手始めにピッタリのExcelVBAスクレイピングです。環境の用意が簡単なので、ノンプログラマーでも

Excel は滅びぬ!Excel の力こそ日本企業の夢だからだ!VBA 実装してて学んだこととかのメモ。JavaJava してたかはあまり関係ないかも。 エディタの使い方 エディタを表示する Alt + F11 で VB エディタを表示できる。 環境設定 背景色・フォントを調整する デフォルトの白背景とか気が狂うので、暗い色にする。 「ツール」→「オプション」を選択し、「エディターの設定」タブを開く。 「コードの表示色」を選択して、「背景」の色を選択する。 ついでにフォントも見やすいやつに変更する。 これだけで開発効率が5割増しになる。 イミディエイトウィンドウ イミディエイトウィンドウを表示する いわゆるコンソールに当たるのが、__イミディエイトウィンドウ__と呼ばれるウィンドウ。 Ctrl + G で表示される。 イミディエイトウィンドウに出力する ↓イミディエイトウィンドウに実

Excelのマクロは業務効率化には不可欠の存在ですが、Wordとパワーポイントのマクロはほとんど使われていないようです。Word / パワポのマクロも、Excelと同じVBA (Visual Basic for Applications)というプログラミング言語で記述します。このため、ExcelでVBAをいじったことがある人なら、少し勉強すれば、Wordやパワポでも処理の自動化が楽しむことができます。 ここではExcelのマクロをご存じの方のために、Wordマクロの基本について説明してみます。 下のサンプルコードは、WebページをコピーしてWordに貼り付けたとき、不要なリンクや文字の書式を一括解除するマクロです。何ページもの文書を手作業で解除するのは大変ですが、この数行のコードでどんな大きな文書でも一発で処理することができます。 Option Explicit '必ず書くおまじない '
ぺがの覚え書き (読めば必ず為になる?^^;このページを見つけたあなた、ラッキー!) 2020/06/08 更新 【Access 一般】 サブフォームをRequeryしても、追加したはずのレコードが即座に反映されない場合。 サブフォームのレコードセットが『スナップショット』になっている場合、『ダイナセット』へ変更することで、改善する。 【Access 一般】 「名前の自動修正 」は、絶対使うな 『 ツール 』 ⇒ 『 オプション 』 ⇒ (全般) ⇒ (名前の自動修正) のチェックを全てはずして下さい。 機能が不十分なため、様々な弊害があります。例えば、リンク状態が正常でないテーブルを元にしているクエリーを編集しようとすると、クエリーの要素名がかってに修正され、手の付けられない状態になります。起動速度が極端に遅くなり、最悪、破損を起こします。 【AccessVBA】 名前には日本語や

以前紹介した MPAndroidChart の色指定について、改めて理解した点があるので補足します。SetColorに色を設定するとき、Int型で指定するしか方法がないと紹介しましたが、これは誤りでした・・・m( __ __ )mAndroid.GraphicsクラスをUsingして、Color構造体を使えばRGBで指定したり、定型句で指定することができます。excel-vba-csharp-beginner.hatenablog.com 要素を1色で統一して指定したいとき、SetColorを使います。 定義:public virtual void SetColor(int color, intalpha); 使用例①:DataSet.SetColor(Color.Rgb(80, 80, 250), 1000); 使用例②:DataSet.SetColor(Color.Yellow,

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く