
VBA で画像のサイズ変更(解像度を下げる)
画像をリサイズするフリーソフトは山ほどあるし、Excelシートに挿入した画像のファイルサイズを小さくするのなら基本機能の「図の圧縮」を使うのも良いのですが、VBAでもリサイズのコードを書くことができます。WMIというライブラリがあると聞き、早速使ってみました。 使い方 参照設定で Microsoft Scripting Runtime と Microsoft Windows Image Acquisition Library にチェックを入れて下記のコードを標準モジュールに貼り付けて使って下さい。元の画像のフルパスとリサイズ後の画像のフルパス、拡大/縮小率を渡せば実行されます。 リサイズ後の画像の名前と同じ名前の画像が同じフォルダ内にある場合は、古いファイルは上書きされるので注意して下さい。 サンプルコード '参照設定
'Microsoft Scripting Runtime
'Microsoft Windows Image Acquisition Library Sub resizeImage(srcImgPath As Strin


Excel VBA テキストボックスの文字列選択、Backspace、Forward Delete
BackspaceキーやDeleteキーの代わりにコマンドボタンを使ってテキストボックスの文字の削除を行うマクロです。 機能 ‐ 文字が選択されている場合は、その文字を削除します。 ‐ Backspace: カーソルの位置の左側の文字を一文字削除します。 - Delete: カーソルの位置の右側の文字を一文字削除します。 - 文字列を全て選択します。 使い方 ‐ 下記のサンプルコードを標準モジュールに貼り付ける。 ‐ ユーザーフォームにテキストボックス、ボタンを配置する。 - ボタンのClickイベントプロシージャーに Call txtBackSpace(Me.TextBox1) などと書いて必要なプロシージャーを標準モジュールから呼び出す。 サンプルコード '標準モジュールに貼り付ける 'テキストボックス内のカーソル位置の左側一文字を削除する Sub txtBackSpace(txt As msforms.TextBox)
Dim curString As String, selStart As Long, selLen As Lon


Excel VBA ドラッグアンドドロップで画像をListViewの一覧に登録、切り抜き・サイズ調整後にセルへ嵌めこむマクロ
この手のツールはしょっちゅう作るので、コードを効率よく再利用できるようクラスを作りました。通常はコントロールのイベントプロシージャーに書く複雑なコードをWithEvents 付きのクラスに詰め込みました。 応用例として画像ファイルの閲覧とセルへの貼り付けを行うマクロを紹介します。 機能 - ListView1上に 画像をドロップするとOLE DragDropイベントが発生して、パスとファイル名をセットする - リスト上で選択した行の画像ファイルをImage1コントロール上に表示する - リスト上で選択した行を上下に移動してリストを並べ替える (selectionMoveUp, selectionMoveDown) 実用性を上げるために、標準モジュールには次の機能を追加しています。 - 選択したセルに合わせて画像を切り抜き・嵌めこむ (trimImage_main, trimImage_sub) - ユーザーフォームを右クリックから呼び出すために、コンテクストメニューを追加(setContextMenu) 使い方 1. 右クリックから「Photo」