問題タブ [dsofile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - DSOFile 使用時の Powershell ShareViolation エラー
システムに Office をインストールせずに、64 ビット システムで DSOFile を使用して、Office ファイルから Office メタデータ プロパティを取得しようとしています。オンラインで入手した 64 ビット バージョンを登録しましたが、初めて実行したときに動作します。2 回目は PS コンソールがクラッシュします。閉じていることを考えると、なぜそれができるのかわかりません。
(リンク: http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-79KRU6 )
コード:
エラー:
編集:
次のように関数内にオブジェクトを作成することで回避しました。
c# - 引数が 0 の .ctor の呼び出しで例外が発生しました: CLSID {ID} を持つコンポーネントの COM クラス ファクトリの取得に失敗しました。HRESULT: 0x80070005 (E_ACCESSDENIED)
別のユーザーとして実行されている PowerShell 5.1 (x86) で Interop.DSOFile.dll 関数とクラスを使用すると、このエラーが発生します。私が使用しているアカウントは、dll を含むフォルダーに対して完全な権限を持つ AD 機能アカウントです。必要な作業のために、自分の AD アカウントよりも多くのアクセス権があるため、このアカウントを使用する必要があります。
自分のユーザー アカウントで次のコードを問題なく実行できますが、機能するアカウントを使用しようとすると、タイトルにエラーが表示されます。
エラーが発生します:
New-Object : Exception calling ".ctor" with "0" argument(s): "Retrieving the
COM class factory for component with CLSID
{58968145-CF05-4341-995F-2EE093F6ABA3} failed due to the following error:
80070005 Access is denied. (Exception from HRESULT: 0x80070005
(E_ACCESSDENIED))."
At line:1 char:1
+ New-Object DSOFile.OleDocumentPropertiesClass
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvoca
tionException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.Power
Shell.Commands.NewObjectCommand
CLSID が存在し、機能アカウントを使用して表示できることを確認しました。
Dcomcnfg.exe\DCOM Config を使用してアカウントにアクセス権を付与することを参照する同様の Stackoverflow の質問からのソリューションを使用しようとしました。Com+ 構成
- [コントロール パネル] - > [管理者] -> [コンポーネント サービス] -> [DCOM 構成] に移動します。
- Microsoft Word 97 - 2003 のプロパティを開く
- 一般 -> 認証レベル: なし
- セキュリティ -> 3 つの権限をすべてカスタマイズして、全員を許可する
また、AD 機能アカウントをローカルの管理者グループに追加しましたが、成功しませんでした。
excel - DSOFile 関数は非バイナリ Excel ドキュメント タイプにのみ適用されますか?
Windows 10 (関連する場合はビルド 1903?) と 64 ビット Office 365 (おそらく関連する?) を使用して、Excel VBA コードのバージョン管理を可能にするシステムを実装しました。
メソッドを使用してWorkbook_BeforeSave
、現在のファイルが保存されているかどうか、保存されている場合はどこに保存されているかを確認しています。
これは正常に機能し、含まれているコードを更新するかどうかをユーザーに尋ねます。次に、ユーザーにプロンプトを表示する前に、コードを更新する必要があるかどうかを実際に確認する必要があるのではないかと考えました。
最初に、次の質問/解決策を見つけました: VBA を使用して、SharePoint ドキュメント ライブラリ内のファイルのメタデータまたはファイル プロパティを読み取る
ここからインストールできた DSOFile.dll なしでは使用できませんでした。
https://www.microsoft.com/en-us/download/details.aspx?id=8422
ここに私が持っているコードが続きますが、動作しません:
そして、ここ (強調表示) は、上記のメソッドを .xlsb ファイルで実行しようとして受け取ったエラーです。
(FWIW: .xlsb 形式を使用する理由は、実行中のプロセスで 50 万行以上のデータを扱っているためです。はい、Excel がこのためのツールではないことはわかっていますが、私たちは苦労していますそれは今)
ファイル形式を .xlsm に変更することもできたはずですが、このファイルはバージョン管理されているため、この方法でも失敗する可能性がある場合は面倒です。
前もって感謝します、
アレックス。
ms-office - DSOFile 2.1 を使用して、97/2003 MSOffice ファイル (xls/doc/ppt) にカスタム プロパティを追加します。
ppt ファイルにカスタム プロパティを追加しようとしています。しかし、受信値 ("güsiöçÇÖISÜG") は送信値 ("ğüşiöçÇÖİŞÜĞ") と等しくありません。
私はそのような奇妙な状況に直面しました:
- LibreOffice で sample.ppt を開きます。
- 保存 (CTRL+S) して閉じます。変更は必ずしも必要ではありません。
- コードを再度実行します。
- そして、2 つの値が等しい
サンプルの ppt ファイルはこちら: https://drive.google.com/drive/folders/1qTlREuLAAM-I0JIn-htPwLEUwRjQ9IiJ?usp=sharing
私を助けてくれる人はいますか、ありがとう。