VBA

VBA

【VBA】非モーダルUserFormで進捗表示を作る方法

数千行を処理するマクロを、画面更新を止めて走らせると、Excelが固まったように見えます。終わるまで何も出ないので、動いているのか止まっているのか判断できません。実務では、ラベルの文字だけを書き換える簡易な進捗表示を、非モーダルのUserF...
VBA

【VBA】BOM付きUTF-8のCSV書き出しと、URLパスの検知

OneDriveの同期フォルダに置いたブックで、ブックと同じ場所にCSVを書き出すマクロを確かめたところ、書き出しの行でエラーになりました。この環境では、ThisWorkbook.Pathがhttps://で始まるURLを返していたためです...
VBA

【VBA】GASへの書き込み方の違い|全消しと追記のみを実測

アルバイト情報を整形してスプレッドシートで共有するため、ExcelのVBAからGASへデータを送っていました。受け側のシートは、毎回すべて消して書き直す運用でした。その後、送信を店舗ごとに1回ずつへ分け、最初に「消す」リクエストを1回だけ送...
VBA

【VBA】GAS宛POSTのStatus 0をサイズ別に実測

VBAからGASのWeb Appへ、約10万字のJSONをまとめてPOSTしたところ、Statusが0で返ってきたことがあります。エラーの内容は分からず、レスポンスも空でした。当時のコードはOn Error Resume Nextでエラーを...
VBA

【VBA】マスタ参照の存在チェックをDictionaryに置き換える

店舗コードや銀行コード、支店コードを、マスタの表を見て別の値に変換する。見つからないコードは、エラーとして記録する。VBAでは、よく出てくる処理です。私は、この処理をマスタの先頭から順に見ていく線形探索で書いていました。Foundフラグを立...
VBA

【VBA】シートを別ブックにコピーして配布用ブックを作る

社内向けのデータ作成マクロで、結果をいったん一時シートに出し、目視で確認してから、シートコピーで別ブックにして、メールで社内に配る運用をしていました。配る側としては、数式やクエリを含まない、結果だけのブックにしたい場面でした。この記事では、...
VBA

【VBA】GASへのPOSTが405になる原因と通信オブジェクト比較

VBAからGoogle Apps Script(GAS)のWebアプリを呼ぶと、GETは通るのにPOSTだけ405になることがあります。私も、業務で使っているGASへのPOSTで、通信オブジェクトを替えるたびに結果が変わり、原因を追うのに苦...
VBA

【VBA】全角氏名のバイト数チェックはLenBとStrConvで行う

取込先の氏名欄に「10バイトまで」のような上限があると、入力チェックをVBAで書く必要が出てきます。ここで Len を使うと、判定が合いません。Len が返すのは文字数であり、バイト数ではないからです。この記事では、全角を含む氏名のバイト数...
VBA

【VBA】エラー時も設定を元に戻す|ScreenUpdating等の後片付け

VBAを速くするために、Application.ScreenUpdating、Application.Calculation、Application.EnableEventsを切り替えるコードがあります。速度への効果は、以前の記事(【VBA...
VBA

【VBA】ZIP解凍の完了確認|CopyHereの戻りを実測

VBAでZIPを解凍し、その直後にファイルを開く。この流れで気になるのが、解凍が終わる前に次の行へ進まないか、という点です。Shell.ApplicationのCopyHereには、完了を知らせる仕組みがありません。そこで、実際にどう動くか...