我有一個word文檔,我通過自動生成。我需要在此文檔中放置一個圖表(由Excel生成),並調整圖表的大小,使其不超過文檔的邊距。我怎樣才能做到這一點? Visual Basic在錄製宏時不記錄此活動,所以我不知道如何繼續。德爾福自動化調整圖表
有什麼想法?
我的做法是:
var
MsWord,E:OleVariant;
name:Variant;
...
try
MsWord := GetActiveOleObject('Word.Application');
except
try
MsWord := CreateOleObject('Word.Application');
MsWord.Visible := False;
except
Exception.Create('Error');
end;
end;
MSWord.Documents.Add;
MSWord.Selection.TypeText('some text');
...
E:=CreateOleObject('Excel.Application');
E.Workbooks.Add;
E.ActiveWorkbook.Sheets.Item[1].Select;
name:=E.Charts.Add.Name;
E.Charts.Item[name].ChartType:=1;
E.ActiveWorkbook.Charts.Item[name].SetSourceData(Source:=E.ActiveWorkbook.Sheets.Item[1].Range['A1:B6'],PlotBy:=2);
E.ActiveWorkbook.Charts.Item['Chart1'].Select;
E.Selection.Copy;
MSWord.Selection.PasteSpecial(,,,,wdPasteOleObject);
所以我這是怎麼添加到Word Excel中生成的圖表。 唯一的問題是,圖表太大,我需要使它更小,所以它會適合更好的文字文檔,而無需用戶交互
我試圖記錄在word中完成的大小調整,宏說:
ActiveDocument.Shapes("Object 2").Select
Selection.ShapeRange.ScaleWidth 0.81, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.81, msoFalse, msoScaleFromTopLeft
所以我嘗試:
MSWord.ActiveDocument.Shapes('Object 2').Select;
MSWord.Selection.ShapeRange.ScaleWidth(0.51, 0, 0);
MSWord.Selection.ShapeRange.ScaleHeight(0.51, 0, 0);
但是,顯然,德爾福:"Shapes" is not a method
所以也沒有任何以這種方式工作。
如果我改變
MSWord.ActiveDocument.Shapes('Object 2').Select;
到
MSWord.ActiveDocument.Shapes['Object2'].Select;
然後我得到:"Item" is not a property
請幫助。
謝謝
你可能會發現早期綁定COM用武之地了。您至少有一個接口聲明,其中列出了所有可用的道具和方法。 –
你的意思是使用Excel_TLB和Word_TLB? – user1137313
是的。它至少可以清楚地說明用什麼語法來深入挖掘對象模型。 –