タグ

VBAに関するtxmx5のブックマーク (42)

  • Excel VBA入門 ~その1 Excel VBAとは~ - Qiita

    長年VBAを使い続けた結果、とある感情を抱えた人が書いたVBA入門記事その1です。まずはこの記事でVBAの基礎を身に付けて、その後Pythonにステップアップしましょう。→VBAユーザーのためのPython入門 ~xlwingsExcelからPythonを呼び出す~ 記事一覧 Excel VBA入門 ~その1 Excel VBAとは~ Excel VBA入門 ~その2 最初のプログラム~ Excel VBA入門 ~その3 基礎1~ Excel VBA入門 ~その4 基礎2~ Excel VBA入門 ~その5 Tips~ Excel VBA入門 ~その6 アンチパターン~ Excel VBAとは Excelにくっついているプログラミング言語。Excelでできるほとんどのことが可能(Power QueryやPower Pivotに関するものは不可)。古臭い。 VBAPythonの比較 VB

    Excel VBA入門 ~その1 Excel VBAとは~ - Qiita
  • VBAでも辞書型変数が使えます。便利な使い方紹介。 - Qiita

    VBAでの辞書型変数の使い方と活用方法 え、VBA!? まあそう言わないでください。 なんやかんや便利じゃないですか。 社内の方がアドベントカレンダーに参加するハードルを下げたいという思惑もあります。 環境 Windows 10 Excel 2016 Microsoft Scripting Runtimeがオン (方法は後述します) 辞書型ってなに? 辞書型変数の前に配列のお話し 配列は値の出し入れに添え字を使います。 Sub array_test() Dim arr() As Variant ReDim Preserve arr(1, 0) 'arr(0, x) には名前を代入 'arr(1, x) には年齢を代入 arr(0, 0) = "Taro" arr(1, 0) = 40 ReDim Preserve arr(1, 1) arr(0, 1) = "Hanako" arr(1,

    VBAでも辞書型変数が使えます。便利な使い方紹介。 - Qiita
  • SQL入門:VBAでデータベースを使う|エクセルの神髄

    エクセルの神髄 SQL入門:VBAでデータベースを使うSQLの初心者向け入門解説、VBAからデータベースを扱うためのSQLを解説 最終更新日:2021-09-23 SQL入門:VBAでデータベースを使う 社会的にパソコンで扱うデータ量は近年急激に増えています。 これに呼応してエクセルも2003までは65536行まででしたが、2007から飛躍的に増えて1048576行となっています。 しかしエクセルで100万行扱えるといっても、データ量としては列数もありますので、 実際には100万行はおろか数十万行でもエクセルが重くなって扱いづらくなってしまいます。 このような場合、ブックを分割する等である程度は対応可能な場合もありますが、 境目のデータ取得等の問題点もあり、なかなかスムーズには扱えなくなります。 エクセルにはテーブル機能があり、まさしくデータベースとして扱えるようになっていますが、あくまで

    SQL入門:VBAでデータベースを使う|エクセルの神髄
  • 「即死攻撃魔法じゃねえか」会社で使うエクセルに『Ctrl+C』で全てを無に返す恐ろしいマクロが仕込まれている

    きゅーび @9bee_16 友人「ちょっと信じられない事があったから聞いて欲しい。会社で使うエクセル、『Ctrl+C』押すとオールクリアになるマクロが仕込まれてる」 私「即死攻撃魔法じゃねえか」

    「即死攻撃魔法じゃねえか」会社で使うエクセルに『Ctrl+C』で全てを無に返す恐ろしいマクロが仕込まれている
  • 【エクセルVBA】一瞬で結合セルを解除して値を埋めるマクロ

    データベースとして使いたい表なのに、結合セルだらけで使い物にならない。 そんなときに、VBAで作ったマクロを起動するだけで、 結合セルを解除して 元々入っていた値を、結合されていたすべてのセルに入力する マクロを紹介します。 ソースコードを貼り付けて実行するだけなので、1分もかからずに、表を整形できます。 ソースコード 下記を、標準モジュールに貼り付けて実行してください。 Sub UnmergeCellsAndFillValues() Dim rng As Range For Each rng In ActiveSheet.UsedRange If rng.MergeCells Then With rng.MergeArea .UnMerge .Value = .Resize(1, 1).Value End With End If Next End Sub 解説 For Eachループ F

    【エクセルVBA】一瞬で結合セルを解除して値を埋めるマクロ
  • 「脱VBA」の道筋がついに見えた、ExcelデータをPythonで抽出・加工する方法

    Excelデータをプログラムで扱うのなら、VBA(Visual Basic for Applications)を使うべし」。多くの人はそう思っているでしょう。もちろんVBAMicrosoft Officeのソフトを操るのにとても便利なプログラミング言語ですが、弱点もあります。 その1つが、Officeにしばられてしまうこと。業務に必要なデータ量がExcelや「Access」のカバーする範囲で収まらなくなったら、もう扱えません。 また互換性の問題から、Windows上で書かれたVBAのソースコードは基的に、macOSLinuxでは動かせません。VBAはプログラミング初心者にとって理解しやすい一方で、コードが冗長になりがちという側面もあります。 今からプログラミングを学んで業務を自動化したいなら、筆者はPythonをお薦めします。Pythonはシンプルで勉強しやすく、ライブラリーが豊富

    「脱VBA」の道筋がついに見えた、ExcelデータをPythonで抽出・加工する方法
  • Excelで全シートのカーソルをA1に移動する”お作法”を自動化するVBAマクロ

    Excel界に伝わるいにしえのお作法。 そのひとつが「全シートでA1セルにカーソルを移動してから保存する」です。 新入社員時代に教わったものなのですが、正直面倒くさくて・・・。 ショートカットキーを使えば10秒くらいでパパっとできるのですが、もはやその手間自体を消したい。 そこで、ボタン一発でできるようにマクロを組みました(昔の自分が作っていました)ので、共有したいと思います。 そもそもなぜA1セルに移動するのか? そもそも、なぜ全シートでA1セルにカーソルを戻してから保存しなければならないのでしょうか。 このお作法を教えてくれた新入社員時代の先輩は言いました。 「Excelは保存するときにカーソルの位置も記憶するんだよ」 「次にファイルを開く人は、きみが最後にどこを編集していたかなんて興味ないだろう?」 たしかに、複数人で連携して1つのExcelを作っている場合でもない限り、開いたときに

    Excelで全シートのカーソルをA1に移動する”お作法”を自動化するVBAマクロ
  • t-hom’s diary

    1週間ほど前に停電が発生し自宅のサーバーやネットワーク機器が再起動された。 殆どは自動復旧したのだが無線LAN APのうち在宅勤務用のネットワークだけが繋がらなくなった。 今の自宅の構成はこんな感じ。表題のとおりDHCPサーバーは別のVLANに所属しているため、CBS250スイッチのDHCPリレー機能を利用してDHCPリクエスト・応答を転送している。 ダメになったのはVLAN200用のSSIDとVLAN255用のSSIDだった。 症状としてはアクセスポイントに繋がるもののインターネット接続無しと表示され、どうやらDHCPIPアドレスが取れていない模様。 さすがにこんなことで在宅勤務できなくなるのも癪なのでとりいそぎVLAN1用のSSIDに繋いで凌いでいたんだけどやっぱりNWは分離しておきたいのでちょうど有給休暇のタイミングで直すことにした。 まずDHCPサーバーの障害を疑ってログインして

    t-hom’s diary
  • クラスモジュールのメリットをイベント処理共通化で体験するサンプル:エクセルマクロ・Excel VBAの使い方

    この数年で、VBAのクラスモジュールについて書かれた日語書籍や、Webページが増えてきました。 拙著『いちばんやさしいExcel VBAの教』執筆時のレビューで大変お世話になった、thomさんのブログではシンプルな例を使ってクラスモジュールについて解説されています。 こちらの記事でご紹介した連載では、当に少しずつ少しずつ、スモールステップで解説が行われています。 しかしクラスモジュールを使うためには、複数のモジュール・プロシージャが必要でそれなりの量のコードを書く必要があり、その解説はどうしても結構なボリュームになります。そのためクラスモジュールを使ってみたいと思いながらも、一歩目を踏み出せない方が、まだまだいらっしゃるのではないかと想像しています。 クラスモジュールの便利さ・メリットを簡単に実感していただくために、コード量のできるだけ少ないサンプルを考えてみました。 イベント処理を

  • クラスモジュール活用 カテゴリーの記事一覧 - t-hom’s diary

    最近遊んでいる工場建造ゲーム Satisfactoryで少し疑問に思うことがあったので、今回はVBAを使って検証してみた。 ゲームを題材にしてはいるものの、この記事で伝えたいことはクラスモジュールの有用性なので、ゲーム自体に興味ない方も是非ご一読いただけれ…

    クラスモジュール活用 カテゴリーの記事一覧 - t-hom’s diary
  • オブジェクト指向でつまづく7つのポイントと処方箋 - t-hom’s diary

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

    オブジェクト指向でつまづく7つのポイントと処方箋 - t-hom’s diary
  • 【永久保存版】VBAにおける真のイミディエイトウィンドウの使い方 - えくせるちゅんちゅん

    VBAの開発画面(VBE)には様々なウィンドウがありますが、その中でも特に奥が深いのがイミディエイトウィンドウです。 イミディエイトウィンドウをどれだけ使いこなしているかで、その人のVBAプログラミングスキルがどれ程のものかひと目で分かる(かもしれません) 今回はそんなイミディエイトウィンドウだけに焦点を絞って、徹底的に紹介していきます。 イミディエイトウィンドウとは なぜイミディエイトウィンドウを使うのか 1.コーディング中に文法や関数を確認する 2.デバッグ中に変数の書き換えや情報出力を行う 3.作業を支援するために使用する VBEのイミディエイトウィンドウの使い方 便利な操作テクニック全集 データ型による整形 セミコロンとカンマによる整形と連結 コロンとアンダースコアによるステートメントの連結と折り返し バッドノウハウ イミディエイトウィンドウの活用事例集 プロシージャ(Sub)を実

    【永久保存版】VBAにおける真のイミディエイトウィンドウの使い方 - えくせるちゅんちゅん
  • Excelブック単体でExcelVBAを疑似マルチスレッド化してみる - えくせるちゅんちゅん

    今回はExcelブック単体でVBAを疑似マルチスレッド化できるか実験を行い、見事成功したので紹介します。 きっかけ コード 結果 ちょっとだけ解説 Application.OnTime について まとめ きっかけ 最近(私の中で)話題な「Excel Piano」開発者のA氏がこんなツイートをしていました。 VBAで並列処理するのってどうやるんだろ… VBS呼び出せばいいけどWindows APIの呼び出しがExcel経由でやらんなんくてなんか面倒。 いいやり方知ってる人いたらリプください— あっさん (@Kabura_net14831) 2019年3月26日 彼の言うとおり VBScript を使うことで、並列処理をすることは可能ですが、いろいろと問題があります。 VBSで実現できる並列処理は、疑似マルチスレッド(実際にはマルチプロセス)である。 VBSはExcelのVBEの中でデバッグが

    Excelブック単体でExcelVBAを疑似マルチスレッド化してみる - えくせるちゅんちゅん
  • VBAでIIF関数が全ての項を評価してしまうのは当然である - えくせるちゅんちゅん

    今日はVBAのIIF関数で、なぜ全ての引数を評価してしまうのか説明する。 三項演算子とIIF関数 IIF関数の問題点? IIF関数とは 参考資料 まとめ 三項演算子とIIF関数 突然だが、読者の皆さんは三項演算子という言葉を知っているだろうか。 三項演算子とは下記のような式のことである。※C言語 string x = a ? b : c; これは、aが真の場合bを。偽の場合cを。xに代入するという意味の式だ。 a,b,cを具体的な表現にするとこうなる。 string x = 10 > 5 ? "はい" : "いいえ"; ところが、VBAに三項演算子という演算子は無い。 それでも三項演算子を求めて検索すると、代替手段としてIIF関数にたどり着く。(Inline IF関数) しかし、他言語を経験したプログラマは、ショートサーキット*1が働かない事を知り、大変に驚かれるようだ。 逆にプログラミン

    VBAでIIF関数が全ての項を評価してしまうのは当然である - えくせるちゅんちゅん
  • Excelシートのデータ範囲を2次元配列に格納するVBA汎用関数を作ってみた Part1 - えくせるちゅんちゅん

    Excelシートの使用済みデータ範囲をあらゆる状況下で確実に2次元配列に格納できる汎用関数を作ってみたので紹介します。 きっかけ マイルール UsedRange利用上の注意 UsedRangeプロパティの取得が遅い 開始位置がA1になるとは限らない 白紙のときはA1を返す メモリ不足の危険性がある データの入っていない領域も範囲に含めてしまう データの存在する最終行・列を求める データを2次元配列に読み込む 2次元配列読み込みの汎用関数 暫定版 ソースコード 単一セルの場合に2次元配列にならない 空白シートの場合にA1が返る ヘッダ部分を消したい フッタ部分を消したい 完成版 ソースコード 補足 おわりに 続編 きっかけ (業ではないとは言え)ExcelVBAを書き続けてこの道10年の私が、何をいまさら・・・という感じですが、実は Excelシートのデータ範囲を2次元配列に格納する汎用関

    Excelシートのデータ範囲を2次元配列に格納するVBA汎用関数を作ってみた Part1 - えくせるちゅんちゅん
  • 「社内のVBA女子を発見した」から始まるVBAerの方々のつぶやき

    松田軽太.txt (ソリュエイ亭門下生)5550 @matudakta 社内のVBA女子を発見した その部署の課長から「Excelでマクロを作りたいと申し出た人がいるんだけど、許可していいのか分からないから、ちょっと話てみて欲しい」ということだった なんと仕事の自動化をしたいと思って独学で覚えたという 「こんな逸材が我が社に!」とビズリーチみたいに思った 2019-06-18 20:13:49

    「社内のVBA女子を発見した」から始まるVBAerの方々のつぶやき
  • Excelで誰でも簡単言語処理 (感情推定, 固有表現抽出, キーワード抽出, 文類似度推定 etc...) - Qiita

    Excelで誰でも簡単言語処理 (感情推定, 固有表現抽出, キーワード抽出, 文類似度推定 etc...)ExcelAPIVBA自然言語処理COTOHA 3行まとめ Excel関数一発で高度な言語処理を使えるようにしました 感情推定、固有表現抽出など日語を分析・整理するのにいろいろ使えます Windows + Officeユーザならマクロファイルで誰でも簡単に使えます ※Macだと多分動かないと思います。VBAのHTTPリクエストを有効にできないため。。。 9/1追記: コメント頂きましたが、64bit版OfficeだとjsonParseが動かないようなのでアップデートしてみました。動作確認できていないので自己責任でお願いします https://github.com/korinzuz2/excelcotoha/blob/master/COTOHA公開用64bitExcel対応版.xls

    Excelで誰でも簡単言語処理 (感情推定, 固有表現抽出, キーワード抽出, 文類似度推定 etc...) - Qiita
  • 読者10人と考えた「Excelレガシー」再生への道

    6月25日に公開したコラム「記者のつぶやき」の中で,“Excelレガシー”に関するご意見を募ったところ,ITpro読者10人の皆様から頂くことができた。この場を借りてお礼を申し上げる。“Excelレガシー”は,企業の業務部門が表計算ソフトExcelとその関数やマクロを使って自ら開発し,利用を続けてきた業務アプリケーションである。先のコラムにおいて,日経コンピュータ誌は「Excelレガシーが継続利用できない状況にある」という問題を提起した。以下では,読者から寄せられた意見をもとに,Excelレガシーが直面する問題について一緒に考えてみたい。 その前にお知らせが二点ある。ITpro読者からご意見を頂きつつ,日経コンピュータ7月9日号に「“Excelレガシー”再生計画」と題した特集記事を掲載した。Excelと上手に付き合っているユーザー企業やExcelの利活用に詳しい識者を取材し,Excelレガ

    読者10人と考えた「Excelレガシー」再生への道
  • VBA開発環境をモダンにする - RubberduckとVBEThemeColorEditorの紹介 - Qiita

    VBAのIDEは古のVBE... なんだかんだでVBAを触る機会が結構あるが、IDEはVBE。 少なくともバージョン管理はほしい できる限りモダンな開発環境に近づけたい 見た目なんとかしたい ということで色々調べていたら、2つのアドイン・ツールを使うことでかなりそれっぽい感じにできることが分かった。ちなみに環境は windows10(64bit) + office2016(32bit) で確認。 紹介するアドイン・ツール RubberDuck VBEを現代のIDEっぽくしてくれるヤバいアドイン。1年前くらいに一度試してみるも、動作がかなり不安定でその時は使うのをあきらめた。 最近バージョン2.2がリリースされていたのでもう一度入れてみたところ、すんなりインストールできて動作もかなり安定している!ということで導入決定。 2018/06/10時点の安定版 VBAのエディタの色設定はデフォルトで

    VBA開発環境をモダンにする - RubberduckとVBEThemeColorEditorの紹介 - Qiita
  • 【VBA】多次元配列の落とし穴 - Qiita

    VBAの多次元配列は2種類ある? ExcelVBAを書いてたら避けては通れない配列。 セルへの出力を高速化するにも、配列を使うのはメジャーな手段です。 複数行×1列、または1行×複数列であれば1次元配列でもセルへの出力が可能ですが、複数行×複数列となると1元配列ではデータが保持できません。 そんな時に出てくるのが多次元配列。 元々Java屋なので、多次元配列=配列の入れ子として理解していたのですが、VBAではそうではないパターンがあったので、まとめておきます。 配列操作全般に関しては、この辺にもまとめてあります。ArrayUtils的に使える関数群です。 →【VBA】使い回せる配列操作用関数 サンプルコード CSVファイルを読み込んで、ワークシートに出力します。 CSVの各行のデータに対して出力対象かどうか判定し、対象である行だけを出力することにします。 今回は、ヘッダ行とCSVの1項目目

    【VBA】多次元配列の落とし穴 - Qiita