未だに access で悩んでいる。
いやね、コンパイルして配布する時、その環境によって access runtime を用意せにゃならんでしょ。
いや、access 持ってる方なら良いんですけどね…
access 購入してない方向け…の話…
access runtime を入れるには、office が入っていたらその office に合わせなきゃならなくてさ。
今時は c2r が主だから 365 runtime を基本勧めるとして、32bitめ64bit は判断させにゃならん。
一応、2016 は msi もあるので…
入ってる office が c2r か msi か判断して、なおかつ bit を判定する。
できたら、今使ってるのは office ほにゃらら だと教えてくれる
そんなの出来んかな…power shell で…
■bing様に office のバージョンを調べるにはを聞いてみると
以下が使えるという…
(Get-ItemProperty "HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*" | Where-Object { $_.DisplayName -match "Office" }).DisplayName
ふうむ。
これ実行すると大本以外も引っかかる…
よく見ると c2r のは、名前に Click_to_Run の表示が…
じゃ、これがあれば c2r で良いのか?
■それじゃ bit 数は…
「PowerShellでOfficeのライセンスタイプを確認する方法」だそうです…
でも、このvbsは 2桁バージョン16 (2016、2019、2021)じゃないとスクリプトが存在しないみたい…
cscript ospp.vbs /dstatus
それで、これが使えそう…
「コマンドでインストールされているOfficeのbit情報を取得したい」
https://ja.stackoverflow.com/questions/62831/コマンドでインストールされているofficeのbit情報を取得したい
のQ/Aから
@echo off
setlocal
rem 関連付け判定 Wordなら .docx Excelなら .xlsx
for /f "tokens=2 delims==" %%a in ('assoc .docx') do @set workrel=%%a
for /f "tokens=2 delims==" %%a in ('ftype %workrel%') do @set workpath=%%a
rem インストール判定 Wordなら winword.exe Excelなら excel.exe
echo %workpath% | find /i "winword.exe" >NUL
if %errorlevel% geq 1 goto notinst
rem OSが32bit版か判定
if "%ProgramW6432%" == "" goto x86
rem OSが64bit版でOfficeが64bit版か判定
echo %workpath% | find /i "%ProgramFiles(x86)%"
if %errorlevel% geq 1 goto x64
:x86
echo Officeは32bit版です。
exit /b 1
:x64
echo Officeは64bit版です。
exit /b 2
:notinst
echo Officeはインストールされていません。
exit /b 0
■途中で2桁バージョンというのが出てきましたがそりゃなんじゃということで。
こちらのページがこの office のバージョンに詳しい。
https://supvalue.net/archives/3613
■ついでに、powershell をbat で起動する方法
「powershellファイルをバッチファイルから実行するにはどうすればよいですか?」
bing様の回答
バッチファイルからPowerShellスクリプトを実行するには、以下の手順を実行してください。
1.テキストエディタを開き、新しいファイルを作成します。
2.以下のコードをファイルにコピーして保存します。
powershell -ExecutionPolicy RemoteSigned -File "C:\path\to\script.ps1"
3.上記コードの C:\path\to\script.ps1 の部分を、実際のPowerShellスクリプトファイルのパスに置き換えます。
で、結局、まだいろいろ考え中…
誰でも簡単にわかるようにしたいです。
まだ道途中…