3

Excel でこれを実行できるかどうかさえ確信が持てませんが、VBA の世界を十分に調べれば、それを実現できると確信しています。しかし、私は近い将来に OpenOffice に切り替えたので、私の質問は次のとおりです。

OpenOffice 4.0 では、チャートのタイトルをスプレッドシートのセルにリンクできますか? 基本的に、スプレッドシートの特定のセルが更新されたときに変更される、グラフの太字のタイトルが必要です。このセルは、グラフにプロットされるデータをすでに制御しています。

4

1 に答える 1

1

はい、可能です。OpenOffice マクロを使用すると、非常に簡単です。ステップバイステップ:

マクロを有効にする

[ツール] > [オプション] メニューに移動し、 OpenOffice.orgの下の [セキュリティ]セクションをクリックします。そこに移動したら、[マクロ セキュリティ] ボタンをクリックします。[セキュリティ レベル] タブで、設定でマクロの実行が許可されていることを確認します。

私が実行するすべてのマクロの作成者であるため、私の設定は低く設定されています。これがあなたのケースになるかどうかわからない場合は、より高い設定を使用することをお勧めします。

注:運が悪い場合や 90 年代に住んでいる場合は、邪悪なマクロが深刻な被害をもたらす可能性があるので注意してください。


新しいマクロの作成

それらを実行できるようになったので、新しいマクロを作成する必要があります。OpenOfficeはPythonを含む幅広い言語を受け入れますが、質問でVBAについて言及したので、ここではOOのバージョンを使用します.

[ツール] > [マクロ] > [マクロの整理] > [OpenOffice.org Basic] に移動し、ファイルのツリーの下に新しいモジュールを追加します。意味のある名前を付けます。

新しいモジュール


実際のマクロ

新しいモジュールを作成すると、エディター画面がポップアップします。以下のコードを記述します。

' Set the title of the first Chart to the contents of C1
Sub SetTitle
    ' Get active sheet
    oSheet = ThisComponent.CurrentController.ActiveSheet

    ' Get the cell containing the chart title, in this case C1
    oCell = oSheet.getCellRangeByName("C1")
    oCharts = oSheet.getCharts() 

    ' Get the chart with index 0, which is the first chart created
    ' to get the second you would use 1, the third 2 and so on...
    oChart = oCharts.getByIndex(0)


    oChartDoc = oChart.getEmbeddedObject()

    'Change title
    oChartDoc.getTitle().String = oCell.getString() 
End Sub

それをテストするには、グラフを作成し、セル C1 にタイトルとして何かを入力し、マクロを実行します。マクロはさまざまな方法で実行できます。テスト目的の場合は、モジュールの作成に使用したのと同じウィンドウで [実行] ボタンを使用するだけです。これは期待される結果です:

予想された結果


マクロのさらなる改良

現在のマクロには、次のようないくつかの問題があります。

  • タイトルを更新するたびにマクロを再実行する必要があります。

これは簡単に修正できます。マクロの実行を自動化する方法はたくさんありますが、私が最もよく知っている方法は、たとえば 5 秒の遅延と組み合わせてループで実行し、ファイルがロードされるとすぐに開始することです。

Sub Main
    Do While True
        SetTitle()
        Wait(5000)
    Loop
End Sub

これからは、SetTitle の代わりに Main サブを呼び出す必要があります。

起動時にマクロを実行するには、 [イベント] タブの [ツール] > [カスタマイズ] に移動し、リストから [ドキュメントを開く] を選択して、[マクロ] ボタンをクリックします。マクロを選択するダイアログで、Mainを選択します。ドキュメントを閉じて、もう一度開いてください。

  • インデックスでチャートに対処する必要があります。

次のように、代わりにチャート名を使用できます (チャートを右クリック > 名前)。

oChart = oCharts.getByName("Chart Name")

参考文献

于 2013-12-05T22:27:05.223 に答える