Officeの修復、ライセンス再認証にて解決しました。
Office Home And Business 2019 (クイック実行版、法人向け)にて、プロダクトキーを再認証していたのが原因だったのかもしれません。
単純に、Officeが壊れていた可能性もありそうですが。
- Windowsの設定から、アプリ一覧、Officeを選択し、変更。
- オンラインから修復 のような選択肢を選び、修復。
- 修復終了後に、ライセンスキーを再入力。
- 動きました!
以下、症状殴り書き。
using pp = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
private static void GetShapeRange(Action<pp.ShapeRange> callback)
{
pp.Application? app = null;
pp.DocumentWindow? win = null;
try
{
// COMオブジェクトの取得。
// オブジェクト自体の取得は出来ているが、キャストエラー。
// Common.GetActiveObject()内部でprogID, clsIDがPowerPointと一致しているがキャストエラー
// PowerPointで確認。
// 別ののCOM(Excel)取得アプリケーションでもエラー出ていたので、
// おそらくExcelやWordなども駄目かと思われる。
app = (pp.Application)Common.GetActiveObject("PowerPoint.Application");
win = app.ActiveWindow;
}
catch (Exception exp)
{ }
finally
{
if (win != null)
Marshal.ReleaseComObject(win);
if (app != null)
Marshal.ReleaseComObject(app);
win = null;
app = null;
GC.Collect();
}
}
internal static class Common
{
internal static object GetActiveObject(string progID)
{
Guid clsid;
try
{
NM.CLSIDFromProgIDEx(progID, out clsid);
}
catch (Exception)
{
NM.CLSIDFromProgID(progID, out clsid);
}
NM.GetActiveObject(ref clsid, IntPtr.Zero, out object obj);
return obj;
}
}