IT系/misc/ExcelVBAメモ

Last-modified: 2020-06-24 (水) 03:55:14

目次


ツール候補

作ると便利かもしれないと思ったツールのメモ。

マトリクス作成

項目と取りうる要素のリストから、各項目・各要素を掛け合わせたマトリクスを作成。
テストパターンの整理に使えるかも。

DDL作成

テーブル定義表からDDLを作成する。
(定番でありそうなので、だれか作っているはず。)

テストデータ作成

テーブル定義表から最大桁・最小桁データを作成する。
(定番でありそうなので、だれか作っているはず。)

SQL文作成

テストデータ表からINSERT文を作成。
だれか作ってた。

A1、100%保存

全シートをA1選択、印刷設定100%にして保存。
→リラックスツールにある。

表書式整形

同列で同じ値が連続している場合、最上部の項目のみ黒字にして他を白字にし、周りを罫線で囲む。
オートフィルタを使いたいが、見た目もグルーピングされるようにしたい場合に。
(結合したセルのある表をこの形式に変換するものもあればよい)

テキスト表作成

Excel表から、MarkDown表のようなテキスト形式の表を作成する。
(だれか作ってた気がする。)

方眼紙表を通常表に変換

方眼紙型のフォーマット上に列結合して作成された表を列結合していない通常表に変換し、新規Sheetに出力。
(逆もできると)

共有ブックについて

ブックに共有がかかっていると、VBAで操作できるオブジェクトに制限がかかる。
例えば、リンクの追加を行うと、1004エラーが発生する。

共有ブックの制限

  1. セルを結合すること。セルブロックの挿入・削除(行全体または列全体の挿入・削除は可能)。
  2. ワークシートの削除。ダイアログボックスまたはメニューの削除。
  3. 条件付き書式の定義または適用。データの入力規則の制限およびメッセージの設定・変更。
  4. グラフ、図、オブジェクト、ハイパーリンクの挿入・削除。描画ツールの使用。
  5. 個別のワークシートまたはブック全体を保護するパスワードの設定。パスワードの変更・削除。
  6. シナリオの保存、表示、または変更。
  7. データのグループ化、またはアウトラインの設定。自動集計の挿入。
  8. データテーブルの作成。ピボットテーブルの作成。既存のピボットテーブルのレイアウト変更。
  9. マクロの記述、変更、表示、記録、または割り当て。
    1. 共有されていない他のブックに、共有ブックでの操作をマクロ記録することは可能
    2. ブックを共有する前に作成したマクロを実行できるが、共有ブックで実行できない操作を含んでいる場合実行時エラーが発生する

ブックに共有がかかっているかどうかを確認するには

ブックに共有がかかっているかどうかをVBAで確認するには、Workbook.MultiUserEditing プロパティをチェックする。
Trueの場合は、共有がかかっている。

ブックを共有モードから排他モードに切り替えるには

ブックを共有モードから排他モードに切り替えるには、Workbook.ExclusiveAccess メソッドを使用する。

If ActiveWorkbook.MultiUserEditing Then
    ActiveWorkbook.ExclusiveAccess
End If

Workbook.UnprotectSharing メソッドを使用しても解除できるが、この場合はブックが保存される。

ブックを排他モードから共有モードに切り替えるには

ブックを排他モードから共有モードに切り替えるには、Workbook.ProtectSharingメソッドを使用する。
なお、共有モード変更時に、ブックは保存される。

If Not ActiveWorkbook.MultiUserEditing Then
    ActiveWorkbook.ProtectSharing
End If

ブックを共有ファイルとして保存するには

Workbook.SaveAsメソッドで、accessModeに「xlShared」を指定することで、 ブックを共有ファイルとして保存することができる。

If Not ActiveWorkbook.MultiUserEditing Then
    ActiveWorkbook.SaveAs fileName:=ActiveWorkbook.FullName, _
                          accessMode:=xlShared
End If

共有ブックを現在誰が開いているかを調べるには

WorkbookオブジェクトのUserStatusプロパティを使う。
UserStatusプロパティは、そのブックを開いているユーザーに関する情報を、次のような二次元配列で返す。

  • UserStatus(n, 1) … ユーザー名
  • UserStatus(n, 2) … 開いた日時
  • UserStatus(n, 3) … 共有ブックかどうか

参考リンク

その他メモ

なにかあれば。