Skip to content

Instantly share code, notes, and snippets.

@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終了
@furyutei
furyutei / 0.README.md
Last active August 28, 2024 09:30
[Excel][VBA][PowerShell] Everythingを利用して、OneDriveのURLからローカルのPathを取得する試み

[VBA][PowerShell] Everythingを利用して、OneDriveのURLからローカルのPathを取得する試み

※考え方は同じだけれど、Everything不要のやり方はこちら→[VBA][PowerShell] FileSystemWatcherを利用して、OneDriveフォルダのURLからローカルのPathを取得する試み


OneDriveに割り当てられたフォルダ下では、ExcelのVBAでWorkbook.Path等を参照すると、通常のフォルダのPathではなく、URLになってしまう。

これをローカルフォルダのPathに変換する手段として(知る限りでは) VBA Function to get the local path of a OneDrive/SharePoint synchronized Microsoft Office fileが最も確度が高いが、それでも変換に失敗するケースがある模様

SharePointで「OneDriveへのショートカットの追加」したときのトップレベルフォルダーが取得できなくなっている気配

@furyutei
furyutei / 0.README.md
Last active April 21, 2024 04:43
[VBE] VBEThemeColorEditor/VBEThemeColorTool用テーマ集(仮)
@furyutei
furyutei / 0.README.md
Last active August 17, 2024 23:43
[Excel][Outlook] VBAでメールに画像を貼り付ける例

[Excel][Outlook] VBAでメールに画像を貼り付ける例

Excel VBAにて、本文中に画像を埋め込んだOutlook用メールを作成する例。
元ネタはこちら

予め、ActiveSheet上に
image
のようなデータを作ってあることを想定。
※"<画像挿入位置>"という文字列を、画像に置換

@furyutei
furyutei / 0.README.md
Last active April 10, 2024 02:10
[Python][Windows] Outlookのフォルダの更新を行なう実装例

[Python][Windows] Outlookのフォルダの更新を行なう実装例

PythonからOutlookに「すべてのフォルダーの送受信」(っぽいもの)を指示し、完了するまで待つような実装例です。
※元ネタ:かづき@kadukijobさんのツイート(ポスト)より

使い方

その1

を呼び出し側のソースコードと同じフォルダにおいて、