Skip to content

Instantly share code, notes, and snippets.

@furyutei
furyutei / 0.README.md
Created December 5, 2024 13:07
[VBA] NaNや無限大を扱う

[VBA] NaNや無限大を扱う

Double型で非数(NaN・Not a Number)・正の無限大(PositiveInfinity)・負の無限大(NegativeInfinity)を定義したり、値が該当するかを判定したりする。
使い所があるかどうかは不明……。

参考

@furyutei
furyutei / 0.README.md
Last active December 5, 2024 12:58
[VBA] 配列の全次元の添字の下限を一括設定するプロシージャを試作

[VBA] 配列の全次元の添字の下限を一括設定するプロシージャを試作

Arr(0 To 2, 2 To 5)
みたいな(動的)配列を
Arr(1 To 3, 1 To 4)
のように要素数は変えずに添字だけを全次元一括して変える試み。

なお、配列の添字下限は、1次元配列であれば、
ReDim Preserve Arr(Base To Base + UBound(Arr) - LBound(Arr))
のようにして変更できる。

@furyutei
furyutei / 0.README.md
Created December 3, 2024 03:52
[PowerShell] FileSystemWatcherで特定のフォルダを監視するサンプル
@furyutei
furyutei / 0.README.md
Last active November 30, 2024 04:31
[Excel][VBA] Application.OnTimeによる割り込みが可能なWaitプロシージャを試作

[Excel][VBA] Application.OnTimeによる割り込みが可能なWaitプロシージャを試作

待ち時間中でも、画面更新、キー入力やマウス操作、Application.OnTimeによるプロシージャの実行などを阻害しないようなWaitプロシージャ(WaitEx)を試作。

Public Sub WaitEx(ByVal WaitMilliSeconds As Long)

パラメーター
---
[in] WaitMilliSeconds
 待ち時間(ミリ秒)。
@furyutei
furyutei / 0.README.md
Last active September 3, 2024 12:25
[VBA] UIAutomationを使ってOfficeのバージョンを取得

[VBA] UIAutomationを使ってOfficeのバージョンを取得

Officeのバージョン(エディション)詳細版|UIAutomation|ライブラリ|踊るエクセルに対して以下のような改修を行ったもの。

  • Word対応
  • 表示言語を英語にしてある場合に対応
  • 環境によってはバージョン情報ダイアログが閉じない場合がある不具合に対応
  • [ファイル]タブを開いた状態で実行した場合にオートメーションエラーになる不具合に対応
  • 定数の重複定義をコメントアウト(UIAutomationClientで定義済みの定数(UIAutomationClient.UIA_PatternIds))
@furyutei
furyutei / 0.README.md
Last active August 28, 2024 04:37
[VBA] 配列の次元数を取得する関数
@furyutei
furyutei / 0.README.md
Last active August 28, 2024 10:52
[Excel][VBA] エクセルのバージョン取得を試みる(2016以降も対応)

[Excel][VBA] エクセルのバージョン取得を試みる(2016以降も対応)

元ネタ

ソースコード

基本的に、簡易的な判定で構わなければ1を、やや厳密な判定(LICENSE NAMEの取得)やWord[^1]にも対応したければ3を使います(2はプロトタイプです)。
[^1] 頭の方にあるTARGET_APP_NAMEを"Excel"から"Word"に変更して使います。

@furyutei
furyutei / 0.README.md
Last active May 15, 2024 01:30
[Excel][VBA] セル動画()の試み

[Excel][VBA] セル動画()の試み

まさおじさん@keitai_kaiがエクセルを使っておもしろい方法で動画再生[^1]を試みられていたので、便乗。
ただし、自分の考案した方法だと、Microsoft365のエクセル(最新の状態に更新したもの)限定
[^1] 要は元となる動画を複数の静止画にして、パタパタ漫画のようにして動画として見せるというもの…なお、元ネタだと、マジのセル画だという……(セルをドットとみなして背景色を設定、シート全体で絵にしている……それを1フレーム1シートにして切り替えて表示なので……)

再生中の模様はこちら
image

@furyutei
furyutei / 0.README.md
Last active May 4, 2024 05:14
[VBA] 文字列の正規化

[VBA] 文字列の正規化

文字列中の、2文字にわかれている濁音/半濁音(例「た゛か゛は゜」)を、1文字(例「だがぱ」)に変換するような処理の例。
※元ネタ:橋ビロ子@hassy_birowさんのツイート
自分の📝メモ用ツリー

処理の例

  • か/カ行・さ/サ行・た/タ行・は/ハ行およびウの濁音変換、は/ハ行の半濁音変換のみ可
    ※か・さ・た・は行については、Unicode上濁音が清音のとなり(+1)に、は行については同じく半濁音が清音の2つ隣(+2)に存在することを利用
@furyutei
furyutei / 0.README.md
Last active August 28, 2024 09:46
[Excel][VBA][PowerShell] FileSystemWatcherを利用して、OneDriveフォルダのURLからローカルのPathを取得する試み

[Excel][VBA][PowerShell] FileSystemWatcherを利用して、OneDriveフォルダ/ファイルのURLからローカルのPathを取得する試み

こちらではEverything/PSEverythingを利用したが、ファイルが作成されたことを検知するならFileSystemWatcherで行けるかな?と試してみたもの。

大まかには

  1. ユニークな一時ファイル名とWorkbook(xlsxファイル)ファイル名を作成し、一時ファイルには最初は適当な文字列("?NOT FOUND YET?")を書き込み
  2. WScript.Shell経由でPowerShellを非同期で起動、FileSystemWatcherにてOneDrive配下のxlsxファイルの"Created"イベント監視設定&準備ができたら一時ファイルのサイズを0に
  3. VBA側で、一時ファイルのサイズが0になったら、指定されたOneDriveのフォルダURLの場所にユニークなWorkbook(xlsxファイル)を作成
  4. PowerShell側で、FileSystemWatcherの"Created"イベントが発生するので、一時ファイルにFullPathを記録し、PowerShell終了