0

Access VBAアプリケーションでは、Excelファイルをその場で生成するVBAコードを維持しています。最近、ユーザーベースはExcel2010に移行しました。

それ以来、Excelで矢印を作成する次のスニペットは、Excel2003で以前は正常に機能していた位置を台無しにします。

Set ShapeObject = myWorksheet.Shapes.AddConnector(msoConnectorCurve, X1, Y1, DeltaX, DeltaY)

X1とY1は、矢印の始点の上下の座標です。

DeltaXとDeltaYは、矢印の始点を指す矢印の終点の水平距離と垂直距離です。

結果として得られる矢印の始まりは正しいですが、その終わりはExcel 2003を搭載したマシンでのみ正しいです。より高いバージョンのExcel(> = 2007)を搭載したマシンでは、矢印の終わりはドキュメントの上端になります。

ここでの問題は何ですか?

4

1 に答える 1

0

試行錯誤といくつかのフォーラム調査の長い道のりの後、解決策が私に浮かびました:

Excel2003のaddConnectorメソッド用にMicrosoftから提供されたドキュメントhttp://msdn.microsoft.com/en-us/library/office/aa221699(v=office.11 ​​).aspxが間違っていました。基本的に、3番目と4番目のパラメーターは正しく文書化されていません。これらはEndXおよびEndYという名前ですが、幅と高さを表します。どういうわけか、Excel2003でこの方法を最初に使用したときにこれを想定しました。

今、面白い部分が来ます。Excel 2007で、MicrosoftはaddConnectorメソッドを変更し、ドキュメントに完全に準拠するようになりました。

これは私のコードを意味します:

Set ShapeObject = myWorksheet.Shapes.AddConnector(msoConnectorCurve, X1, Y1, DeltaX, DeltaY)

Excel 2003で動作しますが、Excel2007以降では次のように調整する必要がありました。

Set ShapeObject = myWorksheet.Shapes.AddConnector(msoConnectorCurve, X1, Y1, X1 + DeltaX, Y1 + DeltaY)
于 2013-03-27T11:31:22.937 に答える