タグ

vbaに関するtk78のブックマーク (88)

  • エクセルマクロのお作法(計算用シートという諸悪の根源について)

    前置きこの日記の内容は、会社の後輩から「最近エクセルマクロを勉強し始めて(キラキラ)」という話を聞いて、先輩ムーブをかますために話した内容になります。 とにかくこれから説明する「計算用シート」が憎くて憎くてたまらず、ちょっと引かれるほど熱弁してしまいました。 ただ、他の方がどうされているのかや、逆に「計算用シート」を愛用する方の意見も聞きたくなり、増田に書いてみました。 増田の経歴中小企業の非エンジニア(事務職員)エクセルマクロ歴8年くらい 初めて触った言語がVBAで、前任が作ったエクセルマクロを改修をいきなり頼まれたのがきっかけ会社の都合でJava Script、PHPからなる社内システムの改修、保守を担当したことあり 今は趣味PythonNLP、LLMを勉強中この記事の趣旨エクセルマクロのお作法とか書きましたが、要するにエクセルマクロで「計算用シート」って色々な意味でよくないよね、

    エクセルマクロのお作法(計算用シートという諸悪の根源について)
  • 【VBA】ExcelVBAで実現するエビデンスツール - Qiita

    はじめに インフラ系のエンジニアWindowsServerやWebコンソール周りの操作をする際などにエビデンスとして画面のスクリーンショットを撮るといったことは結構定番かなと思います。 自分も新人の頃は「自分の身を守るためにもエビデンスを残すように!」と何度も忠告をうけたなーなんてことを思い出します。 エビデンスの残し方としてはWinshotのようなツールを利用して効率よくとっていくこともありますが、私の周りではExcelシートにべた張りしていく方法がよく用いられてましたね。 Excelエビデンスのメリット Excelシートに貼り付けていくことは以下のようなメリットがあるかと思います。 単一のファイルで管理可能 シートを分けることで、作業単位でエビデンスを記録できる 適宜コメントなどを書き込める(Excelだから) とはいっても、以下のフローを毎回実施するのは面倒です。 記録対象のウィン

    【VBA】ExcelVBAで実現するエビデンスツール - Qiita
    tk78
    tk78 2024/01/06
  • ExcelマクロのVBAソースコードをAzure DevOpsでバージョン管理する方法

    はじめに会社でAzure DevOps Servicesを導入しました。PythonUiPathなどの開発に使おうとしているのですが、職場でも多数存在しているExcelマクロをバージョン管理する方法は無いか?と何気なく試してみたところ、割とうまく動いたので、そのやり方を紹介します。 Excelマクロのバージョン管理の運用イメージExcelマクロをAzure DevOpsでバージョン管理するする場合は、下記のようにマクロ付きExcelファイル(*.xls, *.xlsm, *.xlam)をGit管理するだけの非常に簡単な手順になります。 マクロ付きExcelファイルをGitのリポジトリに追加し、更新をAzure DevOps上のリモートリポジトリにPushするAzure DevOps上でマクロ付きExcelファイルからVBAソースコードが自動で抽出され、リポジトリにCommitされるVBA

    ExcelマクロのVBAソースコードをAzure DevOpsでバージョン管理する方法
    tk78
    tk78 2022/12/09
  • Excel VBAでSeleniumBasicを使わずにスクレイピングする - Qiita

    こんにちは。ExcelVBAからIEを制御するの著者であり、妹にExcelVBAからIEを制御する方法を教えてもらうゲームの作者であるうえぞうと申します。 Internet Explorerは使われる機会が減ってきたものの、ExcelからスクレイピングをするにはCOM経由で直接操作できるのでとても便利でありました。今はExcelからだとSeleniumBasicを使ってChromiumを操作するのが主流だと思いますが、会社のパソコンだと自由にインストールできなかったりするので困っている人もそれなりに多くいらっしゃるかと思います。 そこで今回はVBAからSeleniumBasicをインストールすることなく、VBAから直接ChromeやEdge(のWebDriver)を操作する方法をシェアしたいと思います。 Seleniumの仕組み 誤解を恐れずに超ざっくり説明すると、ブラウザーを動かすのは

    Excel VBAでSeleniumBasicを使わずにスクレイピングする - Qiita
    tk78
    tk78 2022/08/23
  • エクセルではてブを見るやーつ | なかけんツール集

    ツールは、Assets 内の「hatebu.xlsm」です。 使ってみましょう。そうしましょう。 紹介されました! 窓の杜 さんで紹介されました! 業務中にこっそりハテぶできるExcelマクーロ「エクセルではてブを見るやーつ」【レビュー】 - 窓の杜 ありがとうございます! 画像付きで解説があってすごくわかりやすいです! このツールのポイントは3つありますのコーナー 業務時間中でも 安全に はてブ閲覧 エクセルで資料を眺めてる、と見せかけて はてブを閲覧することができます。 閲覧ページは カスタマイズ可能 閲覧できるのは、カテゴリー別のホッテントリだけではありません。 自分のサイトへのブクマ一覧などを表示することもできます。 NG機能の搭載 キーワードやドメイン、IDなどを NG指定できます。 また、完全に隠すか、ほんのり隠すかを選べます。 基の使い方を紹介するコーナー 初回に一度だけや

    tk78
    tk78 2022/05/22
  • Microsoft、OfficeのVBAマクロをデフォルトブロックへ 悪用対策で

    Microsoftは2月7日(現地時間)、ネットからダウンロードしたOfficeファイルでVBA(Visual Basic for Applications)マクロをデフォルトでブロックすると発表した。対象はExcel、Word、Access、PowerPoint、Visioのファイルで、4月上旬からCurrent Channel(プレビュー)のバージョン2203で展開を開始する。 攻撃者がメールに添付したりWebサイトからダウンロードさせたりしたOffice文書にVBAマクロを埋め込み、これを実行させることは、Emotetなどのマルウェアで使われる手段だ。マクロを実行すると、悪意のあるコードがユーザーのID、ドキュメント、ネットワークなどにアクセスできるようになってしまう。 VBAマクロをデフォルトでブロックするようになると、ドキュメントの上部に「セキュリティリスク このファイルの出自

    tk78
    tk78 2022/02/08
  • 「Excel」の「VBA」でこれができるの? ワークシート上で動く虫眼鏡のデモがすごい/ソースコードは「GitHub」で公開中【やじうまの杜】

    「Excel」の「VBA」でこれができるの? ワークシート上で動く虫眼鏡のデモがすごい/ソースコードは「GitHub」で公開中【やじうまの杜】
    tk78
    tk78 2021/06/18
  • 【Excel】セル結合されたダメ表を一気に結合解除・整形するVBAマクロ

    Excelで既存の表を再利用しようとした時、下図のような表しかなく、愕然としたことはないでしょうか。 余計なおせっかいが発揮されまくった表・・・ 見ばえを良くしようとした結果(?)、セルが上下左右に結合されまくっていて、オートフィルターもまともに機能しない、集計もできない、VLOOKUPもちゃんとひっかからない、あげく、コピー&ペーストすらうまくいかなかったり・・・ 私も事務仕事に従事している都合上、このようなダメダメデータに困らされることがありましたので、一発で使えるデータに整形するマクロをVBAで作成しました。 使い方 こちらからダウンロードしてご利用ください。 以下、一番簡単な方法のみ説明します。 ダウンロードした「結合された表をどうにかする.xlsm」を開く整形したい表が含まれているExcelファイルを開く整形したい表の範囲を選択した状態で ALT キーを押しながら f8 キーを押

    【Excel】セル結合されたダメ表を一気に結合解除・整形するVBAマクロ
    tk78
    tk78 2020/05/19
  • エクセルVBA入門 - Qiita

    はじめに 普段VBAはさわらないのですが、たまにエクセルの資料から値を抽出してJSONファイルつくりたいなぁと思うことがあります。 毎回やり方を忘れるので備忘録として。 目指すのは納品とかは考えずにあくまで自分の作業を楽にするためのやつです! プロシージャ プロシージャはたぶん関数みたいなやつです。(実行できる処理の単位?) 下記2つがあります。 Subプロシージャ Functionプロシージャ 違いは戻り値が設定できるかどうかかと思います。(あんまわかってない) とりあえず私は下記のように Function に細かい処理を書いて Sub で Function を呼び出すように実装してます。 Sub Test() Call ProcessA() Call ProcessB() End Sub Private Function ProcessA() 'なんか処理 End Function P

    エクセルVBA入門 - Qiita
    tk78
    tk78 2020/03/07
  • オブジェクト指向でつまづく7つのポイントと処方箋 - t-hom’s diary

    こちらの記事で伊藤先生も書かれているように、この数年でVBAのクラスモジュールに関する情報が充実してきている。 これからクラスモジュールについて学習しようと考えている方も沢山(期待を込めて)いらっしゃることと思う。 そこで今回は、オブジェクト指向を学習するにあたってつまづきやすいポイントを紹介し、その処方箋としてアドバイスを書いてみようと思う。 私がオブジェクト指向でつまづきやすいポイントは以下の7つだと考える。 オブジェクト指向の目的が理解できない オブジェクト指向の悪評に惑わされる オブジェクト指向の用語がややこしすぎる オブジェクト指向の前に覚えるべきことを覚えていない オブジェクト指向の一部の特長を過大に受け止めてしまう オブジェクト指向での具体的な実装方法が分からない オブジェクト指向の活用方法が分からない これらは私自身がつまづいたポイントでもある。こうしてみると結構ある。 で

    オブジェクト指向でつまづく7つのポイントと処方箋 - t-hom’s diary
    tk78
    tk78 2019/02/11
  • GitHub - VBA-tools/VBA-Web: VBA-Web: Connect VBA, Excel, Access, and Office for Windows and Mac to web services and the web

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - VBA-tools/VBA-Web: VBA-Web: Connect VBA, Excel, Access, and Office for Windows and Mac to web services and the web
    tk78
    tk78 2018/02/05
  • Office TANAKA - VBAでVBEを操作する[CodeModuleのメソッド]

    CodeModuleオブジェクトでよく使われるメソッドを解説します。 AddFromFileメソッド・AddFromStringメソッド AddFromFileメソッドは、指定したファイルの内容を、コードモジュールに挿入します。挿入される位置は、最初のプロシージャの直前です。挿入される位置を指定することはできません。 ここでは、C:\Work\Macro.txtに次のようなデータが保存されているとします。 Sub Sample15() With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule .AddFromFile "C:\Work\Macro.txt" End With End Sub の状態で実行すると、 となります。 AddFromStringメソッドは、指定した文字列を、コードモジュールに挿入します。挿入される位

    tk78
    tk78 2017/05/03
  • 5. VBAコードの追加 - Excel VBAによるアプリケーション開発

    VBAプログラムによって生成するワークブックにVBAコードを追加したい場合があります。例えば,生成するワークブックの標準モジュールに定義した独自のワークシート関数を使用している場合や,ワークブック独自のメニューコマンドなどをVBAコードにより記述している場合などです。特に,プログラムとデータの分離で議論しているようにコード更新の反映が問題になるようなケースでは,同一VBAアプリケーションを多くのユーザーに配布していたり,ソースデータが更新される毎に頻繁にワークシートを作り直さなければならなかったりするので,初めからVBAコードが付加されたワークブックを自動生成したいという需要があることが多いのです。 VBEオブジェクトの使用準備 VBAプログラムによってワークブックのVBAコードを変更するためには,Application.VBEオブジェクトを使用します。VBEオブジェクトを使用するには,次

    tk78
    tk78 2017/05/03
  • VBAで動的にコード生成&実行 - ClockAhead 開発Blog

    【概要】 CodeModuleのプロパティやメソッドを利用すると、VBAで、VBAのコードを動的に書き換える(生成する)ことができるのですが、その場合の注意点として VBA でコード ジェネレーター作っても、コード生成してそれをそのまま実行することはできず、再コンパイルが必要だから注意な。つまり、コード生成後に一度 VBA の実行を止めないとだめ。一度止めてから生成したコードを実行する。これ豆な。 — いげ太郎 (@igeta) 2014, 6月 13 という話がありまして、実際、コードを動的に生成するプロシージャを含むモジュール(コードジェネレータ)内に、コードを生成した場合には、そのまま実行できません。 なのですが、下記blogに記載のように、コードジェネレータとは、別のモジュールにコードを生成した場合は、そのまま実行できました。 VBAでメタプログラミング 動的にテスト関数を検索して

    tk78
    tk78 2017/05/03
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    tk78
    tk78 2015/11/29
  • [VBA]ユニットテストの自動化

    ユニットテストを自動化するメリット・デメリット メリット ・回帰テストが非常に楽になる。 ・ExcelやAccsessのバージョンアップをしても使えるかどうかの判断が楽になる。 ・他人(未来の自分も含む)が見たとき仕様がわかりやすくなる。 ・手動テストでは、工数がかかるようなデータパターンの多いテストを楽に行える。 ・安全にリファクタリングを行える。 デメリット ・使い捨てレベルの簡単なマクロでは、逆に工数がかかるだけ。 ん~メリットはいっぱいあるが、デメリットは少ないので、ユニットテストを自動化することを勧めていきたい。 習慣化することが大事。全部やる必要はない。できるところや、重要な部分から少しずつでよい。 と偉そうなことを言ったが、俺はできていません!申し訳ありません!! VBAユニットテストの情報 ↓がまとまっていて非常に参考になった。 Coding/VBA/ユニ

    tk78
    tk78 2015/11/29
  • ADODB.RecordsetでRecordCountを取得する - 大人になったら肺呼吸

    はじめに レガシーASP(クラシックASP)で、SQLを発行してデータベースからデータを取得する際に、結果として取得したレコードの件数を取得したい場合があります。このエントリでは、ADODB.RecordsetのRecordCountで正しいレコード数を取得する方法を紹介します。 RecordCountプロパティが-1を返す レコードの件数を取得するSQL(SELECT COUNT(*) FROM 〜)を使うことも可能ですが、データの取得と同時に件数も取得したいときは、RecordCountプロパティを参照することで、SELECTしたレコードの件数を取得することができます。 しかしながら、通常ではRecordCountプロパティは、-1を返します。これは、CursorLocationがデフォルト(サーバサイドカーソル)になっていることが原因です。 サーバーサイド カーソルを使用して作成した

    ADODB.RecordsetでRecordCountを取得する - 大人になったら肺呼吸
  • AddinBox(Main)

    エクセルで祝日/営業日処理・カレンダー・期間計算・ 勤務時間計算・旧暦/干支/六曜などについて調べている方 ちょっとお寄りになりませんか‥‥。 『kt関数アドイン』を使うと祝日や第2/4土曜休みなどの定義が すごく楽になります。他にも祝日情報・期間計算の考え方など、 お役立ち情報や言語別の祝日判定コードも公開中です。 【 2015/9/23 Ver 4.00 リリース, 「祝日:山の日」「64bit Excel」をサポート 】 kt関数アドイン(Ver 3.00) リリース後、実に10年振りのアップデート! 【 2016/3/13 kt関数アドインに リボンUI を追加するサポートアドインをリリース 】 [ Excel/VBA ⇒ OpenOffice.org/Basic 移行プロジェクト ] ※※ お知らせ ※※ ( 2016/4/19 ) Excel2013/2016 の不具合により、

    AddinBox(Main)
    tk78
    tk78 2015/11/06
  • パスワード付きのExcelの保護を,バッチで自動的に解除しよう (VBAマクロが見れないブックに対して,パスワードを自動入力) - 主に言語とシステム開発に関して

    バッチ・マクロのTOPExcel VBAは,パスワードで閲覧制限をかけることができる。 ※その方法: Excelブック内のマクロをパスワードで保護する方法 http://www.happy2-island.com/excelsmi... VBE上で,ツール>VBAプロジェクトのプロパティ>保護 を開く。 「プロジェクトを表示用にロックする」にチェック。 「プロジェクトのプロパティ表示のためのパスワード」を2箇所入力。 OKをクリックし,ブックを保存。 しかし,マクロを修正するたびに,いちいち手動でパスワードを入力するのは面倒。 さらに,「外部からバッチでExcel内部を自動操作したい」という時,パスワードのせいで,操作が妨害される。 以下では,Excelのパスワードを自動的に入力するスクリプトを記述する。(言語はWSH/JScript) 下記のコードを保存し,ダブルクリックすればよい。

    パスワード付きのExcelの保護を,バッチで自動的に解除しよう (VBAマクロが見れないブックに対して,パスワードを自動入力) - 主に言語とシステム開発に関して
    tk78
    tk78 2015/10/16
  • Office TANAKA - Excel VBA Tips[すべて検索する]

    下図のような表があったとき、検索機能で"田中"を探してみます。 このとき、[すべて検索]ボタンをクリックすると、次のように、条件に一致したすべてのセルがリストアップされます。 このように、検索したいセルが複数存在したとき、それらをすべて検索するにはどうしたらいいでしょう。 まず、1つだけ検索する、一般的なやり方を試してみましょう。 Sub Sample1() Dim FoundCell As Range Set FoundCell = Cells.Find(What:="田中") If FoundCell Is Nothing Then MsgBox "見つかりません" Else FoundCell.Activate End If End Sub 検索の基とも言えるコードです。特に難しくはありませんね。 さて、Findメソッドには引数Afterがあります。この引数Afterに、見つかった

    tk78
    tk78 2015/04/30