2013-03-14 79 views
0

在Access VBA應用程序中,我維護一些VBA代碼,它可以即時生成Excel文件。最近用戶羣遷移到Excel 2010中在Excel 2010中搞砸了Excel VBA AddConnector方法位置

自此下面的代碼片段,它會在Excel中箭,砸了它工作正常之前,Excel 2003中的位置:

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

X1和Y1是我的箭頭開頭的頂部和左側座標。

DeltaX和DeltaY是我的箭頭末端的水平和垂直距離,指的是它的開始。

我的箭頭所產生的開始是正確的,但其結束僅在具有Excel 2003的計算機上正確。在具有更高版本的Excel(> = 2007)的計算機上,箭頭的末端位於文檔的上端。

這裏有什麼問題?

回答

0

經過摸索與一些論壇的研究漫長道路的解決方案彈出對我說:

Microsoft在Excel 2003中addConnector方法提供的文檔http://msdn.microsoft.com/en-us/library/office/aa221699(v=office.11).aspx錯了!基本上第三和第四個參數沒有正確記錄。雖然這些被稱爲EndX和EndY,但它們表示寬度和高度。不知何故,當我最初在Excel 2003中使用這種方法時,我假設了這一點。

現在來了一個有趣的部分。在Excel 2007中,Microsoft改變了addConnector方法,現在它完全符合文檔。

這意味着我的代碼:

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

作品在Excel 2003,但在Excel 2007及以上它必須被調整爲:

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