グラフを自動的に作成するVBAコードをいくつか作成しました。このグラフの軸の1つは、通常のラベルではなくグラフィックを使用しています。グラフィックを画像として保存し、.Copyメソッドと.Pasteメソッドを使用して、この画像のコピーをグラフに取得します。
ここで混乱します。画像を回転させて軸に合わせる必要があります(.rotationプロパティを使用)。しかし、.topプロパティと.leftプロパティを設定すると、期待どおりの形状になりません。実際、プロパティを0と0に設定しても、私が期待することはできません。画像オブジェクトにプロパティを設定する方法の順序を変更しようとしましたが、別の(間違った)場所にしか表示されません。
上部と左側のプロパティを設定しているものに対して、VBA/Excelがオブジェクトをどのように配置するかについての重要な側面が欠けていると確信しています。基本的に私の目標は、チャートの左側の画像をプロット領域の高さと同じ幅にすることです(画像が回転しているので、これで同じサイズになると理論付けています)。
このコードは機能しません:
Sheets(ImageSheet).Shapes("agreement").Copy
c.Chart.Paste
c.Chart.Shapes(1).Rotation=270
c.Chart.Shapes(1).width = c.Chart.PlotArea.height
c.Chart.shapes(1).left = 5
c.Chart.Shapes(1).top = c.Chart.PlotArea.top
私もこのコードを試しました
c.chart.Shapes(1).top = c.chart.PlotArea.top + c.Chart.PlotArea.height
回転していないときの画像オブジェクトの左上隅として「上」を計算しているのではないかと思ったからです(270度回転すると、この点がプロット領域の下部に揃うはずです)。しかし、それは私が期待したこともしません。
画像は、軸のラベルとして機能する細い長方形です。チャートは次のようにレイアウトされます:http://imgur.com/NrSXRそして軸ラベルの画像は次のようになりますhttp://imgur.com/08EWU
ここで何が欠けていますか?