VBA

OnActionのマクロに引数を渡す方法と、それActionControlプロパティで出来るよ!ってお話

VBA

先日、業務でとあるツールを作ってた際にハマったので自分用メモと、有効な代替策が見つかったのでエントリにしてみます。 まずはハマった内容 マクロでオリジナルのコマンドバーやボタンを作って、そこからマクロを実行させる事は結構あります。こういった…

シートの存在確認

VBA

VBAでシートの存在確認を行なう方法。 存在を確認したいシートをシートオブジェクトに格納し、格納出来れば(Setステートメントでエラーが発生しなければ)Trueを、出来なければ(エラーが起きれば)Falseを返す。 コード ' 引数 argSheetName が、存在を確認し…

VBAでJSONファイルをパースする

COMオブジェクトのScriptControlを使うと、VBA上でJScriptが実行出来ます。って事は、VBAでもJSONファイルのパースが出来るんじゃね?と前々から思ってたのを試してみたところ、拍子抜けするくらい簡単に出来ました。 ソース Option Explicit Sub VBA_de_JSO…

Like演算子を使った判定

正規表現でやってもいいんだろうけど、そんなに複雑でないのならLike演算子だけでいける。 郵便番号チェック n = "123-456z": s = n Like "###-####": MsgBox s 'False n = "123-4567": s = n Like "###-####": MsgBox s 'True n = "123-4567": s = n Like …

セルの色番号を取得する関数

セルの前景色(フォント色)や背景色のインデックス番号*1を取得する関数。業務で必要になったんで作った。既出も既出でしょうが一応。 コード Option Explicit Function CELLCOLOR(ByVal Target As Range _ , ByVal Mode As Long) As Long Dim lngColorId As …

セルの値をGoogleで検索する

VBA

セルの値をGoogleで検索するアドイン、その名もCellgle(;^ω^) まぁ、こんな事しなくても、いまや大抵のブラウザにはGoogleやYahooの検索ボックスやツールバーがついてるでしょうから、そこへセルの値をコピペすりゃ済む訳ですが、なんとなく作ってみました…

IIf VBA版三項演算子

VBA

javascriptだと結構見かける三項演算子ですが、VBAではあまり使われてない気がします。 結構便利なのにあまり使われてなく、なんだか勿体ない気がするのでちょっと紹介してみます。 javascriptでの三項演算子の書き方 var a = (b > c) ? 0: 1; javascriptだ…

Like演算子のパターン文字

SQLServerのLikeとどっちがどっちだったっけ?ってなる*1ので忘れない様にメモ。 パターン文字 説明 sの値 True or False ? 任意の1文字。 hoge s Like "h?ge" → True * 任意の数の文字。 hofuge s Like "h*ge" → True # 任意の1文字の数字。 hoge s Like "h#…

特定ドライブ下の全フォルダパスを取得する

VBA

所謂再帰処理ですね。 コード フォルダパスを出力させたいシートのシートモジュールに以下をコピペ。 で、GetFoldersを実行してもらえば、当該シートのA列にフォルダパスが出力されます。 Option Explicit Private r As Long 'セルに出力させる際の行カウン…

ファイルオープン時に起動するマクロを起動させずにファイルを開く

Shiftキー押しっぱ*1で開けばok。 こうやって開けば、たとえ、マクロを有効にしてもWorkbook_Openプロシージャーや Auto_Openプロシージャーは動かない。 *1:いつまで押しとくの?ハイ、開かれるまで押しっぱでお願いします。

VBAからVBSを起動する

なんだかややこしいタイトルだけど…(;^ω^) VBSでやってる事をVBA側でやらせるのがホントな気がするんだけど、色々?あって そうもいかないケースもあるんで、こういう風にも出来るって事で。 Option Explicit Sub StartVBS() Shell "WScript.exe ""C:\hoge\f…

VBAでセルにコメントを付ける

VBA

微妙に面倒だったのでメモっておく。 Option Explicit Sub MakeComment() Dim cmnt As Comment '予めコメントを付けるセルのコメントを消しておく ActiveSheet.Range("C3").ClearComments 'コメントオブジェクトを変数に格納 Set cmnt = ActiveSheet.Range("…

ScrollAreaプロパティは揮発する

VBA

シートのスクロール範囲を設定するScrollAreaプロパティってのがあるんですが、 この値ってブックを閉じるとクリアされちゃう*1んですね。 なので、スクロール範囲を固定したい場合は、Openイベントとかで都度都度 セットしてやらないといけないって訳ね。 *…

Web上のファイルのダウンロード

VBA

URLDownloadToFile APIを使用してダウンロードしてみた AB型の変わり者 三流プログラマー Ken3のHP VBAによるIE操作に関しては定番のサイト。参考にさせてもらってます。 VBAでファイルをダウンロードする CodeZine CodeZineにもありました。 うーん、家か…

Dictionaryを使った重複チェック

VBA

列に入力されている値をユニーク化したい時や、重複チェックしたい時って結構あります。 ワークシート関数のCOUNTIF使ったり、Findメソッド使ったりしても出来なくないですが、 Dictionaryオブジェクトを使うと便利です。 Dictionaryオブジェクトってなーに?…

一度に複数行コメントアウトさせる

複数のコードをコメントアウトさせるボタンを追加する方法。 VBE画面のツールバー上(どこでもOK)で右クリック ↓みたいなのが表示されるので、 「コマンド」タブを選択 分類欄に「編集」を選択 「コメントブロック」*1を適当なツールバー上にドラッグ&ドロッ…

カタカナや英数だけ半角にしたり全角にしたり

VBA

ワークシート関数のASC関数を使うと全角文字を半角に、逆にJIS関数を使うと半角を全角に… って変換出来るんですが、英数だけ半角にしたい!とかカタカナだけ全角にしたい!ってのが 出来ないんですよね。な訳で、既出なんでしょうけど、例の如く作っちゃいまし…

セルの内容をJSONファイル化するアドイン

JSON記法がどうも頭に入らなかった(ホント、どんどんあほになってってるなぁ…orz)ので、 憶えるためってのと、業務で使う予定なので作ってみた。 ソース 以下はThisWorkbookモジュールに記述 Option Explicit Private Const cnsMenuName As String = "Cell T…

コピー元範囲に値が入ってるセルのみ貼り付けるアドイン

VBA

タイトル見ても何のこっちゃ?だと思われるので、絵貼って説明します。 ↓な状態でB3〜C8のセルをコピーし、E3〜F8の範囲に貼り付けると ↓となります。(;^ω^)当り前お… でも、このアドインでコピペすると、↓なります。 使い道はあんまりないかもしれませんが…

VBAでURL(UTF-8)エンコード

VBA

覚え書き。ネタ元はここ。 ソース Sub URLEncode_UTF8() Const cnsEncStr As String = "そうのて" Dim sc As Object Dim ss As String Set sc = CreateObject("ScriptControl") With sc .Language = "JScript" ss = .CodeObject.encodeURI(cnsEncStr) End Wi…

VBAでUTF-8のテキストファイルを作成する

VBA

VBAで文字コードがUTF-8のテキストファイルを作成する方法。 Excelファイルの内容をJSONフォーマットで出力させようと思って、 色々調べたところ、ADOのStreamオブジェクト使ったら簡単に出来る事が判明。 ソース Option Explicit ' VBAで文字コードUTF8のテ…

自Bookのフォルダを開くExcelアドイン

VBA

既出も既出だろうけど、ふと思いついたんで、作ってみた。 機能 自Bookが置かれているフォルダを開きます。ただそれだけ。(;^ω^) 保存していないファイル上で実行すると、Explorerが起動します。 ソース 'ThisWorkbook Module Option Explicit Private Sub …

VBAだけで条件付き書式

VBA

Excelで、セルに条件に合致する値が入力されたら設定した書式を適用させる っていう、所謂「条件付き書式」って機能があるのは、Excelをそれなりに 使ってる人は知ってると思います。 ただ、この条件付き書式を多くのセルに設定すると、ファイルがすごく重た…

Recordsetの件数を取得する

ADOのRecordCountプロパティ(Recordsetの件数を返す)って CursorTypeがadOpenForwardOnly(=0)だと、-1が返される(仕様)ので CursorTypeをadOpenStatic(=3)でRecordsetを取得する事。 strSQL = "select * from hoge;" Set cn = CreateObject("ADODB.Connectio…

セルをHTMLのtableに変換するAddin

VBA

かなり既出っぽいけど、以前作ったExcelのAddinを最近リメイクしたんでupしてみる。 SETUP 1.まずはここからAddin本体をDLします。 2.DLした圧縮ファイルを解凍し、Addin本体「Cell2HTMLTable.xla」を適当なディレクトリに置きます。 3.Excelを起動し、メニ…

ストアドの戻り値を受け取る

SQLServer2k + フロントエンドAcc2kでちょっとしたdbアプリ(adp)作った時、 ストアドの戻り値を受け取るのに手間取ったのでメモっておく。 Dim cmd As New ADODB.Command Dim fm As Form Dim lngRtnCode As Long Set fm = Form_hoge With cmd Set .ActiveCon…

VBAでIEを弄くる

VBA

ねむぃ。間違い無く睡眠足りてない。いい加減控えなきゃ駄目だ。。。で、先日、いつもの某掲示板にてVBAでIEを操作するには? ってな質問に回答したんだけど、今までなんだかんだで まともにやった事なかったので自分で色々試してみた。 ちなみにここが非常…