2017-03-14 17 views
0

私は、自動的に更新する必要がある多くのリンクを含む.odsファイルを持っています。私が理解しているように、マクロやlibreofficeコマンドの引数でこれを行う簡単な方法はないので、ファイルを開くときにすべてのリンクを更新し、ファイルを保存して終了します。Libreoffice - 開封時にリンクを自動的に更新しますか?

すべてのリンクは、自動的に更新する必要があるDDEリンクです([編集]> [リンク]で設定されています)。また、ツール>オプション> Calc>一般> [ツール]> [オプション]> [計算]> [数式]> [常に再計算]を選択します。 しかし、私はまだ開くときにリンクを手動で更新するためのポップアップが表示されていますが、更新を選択しないとリンクは最新ではありません。これらのDDEリンクが自動的に更新される必要がありますが、なぜこれは機能しませんか?

そこに解決策がない場合は、私もPython経由でリンクを更新しようとしています。 Unoはopenpyxlのようなファイル内の既存のグラフを破壊することなくlibreofficeを使って作業しますか?

+0

セル式とは何ですか - 'DDE(" soffice "、" c:\ users \ username \ desktop \ 1.ods " 、 "Sheet1.A1") 'または' = 'file:/// C:/Users/username/Desktop/1.ods'#$ Sheet1.A2'または '{= 'file:/// C:/ Users /username/Desktop/1.ods '#$ Sheet1.A3} '? DDEはいくつかの異なることを意味することができます。 –

+1

先頭へ戻る "DDE(" soffice "、" file:///Users/crushendo/Desktop/Folder/Report-Data.xlsx "、" Weekly Report.A1 ")" – crushendo

+1

DDEリンクを更新するコードがありますAPIは、ファイルを開くときにプロンプ​​トを表示しないようにするメソッドを提供していません(私は "ドキュメントを開く"イベントでコードを実行しようとしました)。 実際の値が必要な場合は、「はい」と答えなければなりません。 – ngulam

答えて

0

APIは、ファイルを開くときにプロンプ​​トを表示しないようにする方法を提供していません。

「ドキュメントオープン」イベントでDDEリンクを更新するためにStarBasicコードを実行しようとしましたが、質問が引き続き表示されます。

実際の値が必要な場合は、「はい」と答えなければなりません。

[@Jim Kによって示唆されているように、答えとして再びここではOPの質問にコメントを投稿]

+0

それはひどいです。あなたが見つけたヘッドレスモードの回避策や、人間の入力なしでリンクを更新する他の方法はありますか?私は自動タイマープログラムのリンクを更新する必要があります。私は解決策としてpyooを探していましたが、ライブラリは私にとってUnoライブラリの依存関係に何らかの問題を抱えています。 – crushendo

0

Sub autoupdate_DDE 
' 20170314 
' load library with help function 
GlobalScope.BasicLibraries.LoadLibrary("Tools") 
' get all DDE links of document ' 
dde_links = ThisComponent.DDELinks 
' get array of names ' 
aEN = dde_links.getElementNames() 
' work on every DDE link ' 
for i = 0 to UBound(aEN()) 
    xTF = dde_links.getByName(aEN(i)) 
    xTF.refresh() 
Next 
End Sub 
(ヘッドレスモードで)CALC文書のDDEリンクを更新するには、このコードを試してみてください

注:このスニペットはCALCのみであり、WRITERはDDEリンクにtextfieldを使用します。

[コードの書式設定を使用するために別の答えとして提供されます。コメントの最後に一重引用符文字列を追加して、コードの色を保持する]

関連する問題