gpt4 book ai didi

excel - Delphi自动化调整图表大小

转载 作者:行者123 更新时间:2023-12-02 01:33:19 25 4
gpt4 key购买 nike

我有一个通过自动化生成的 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);

这就是我将 Excel 中生成的图表添加到 Word 中的方法。唯一的问题是图表太大,我需要将其缩小,以便在没有用户交互的情况下更适合 Word 文档

我尝试记录在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);

但是,显然,对于 Delphi:“Shapes”不是一种方法所以这种方式也行不通。

如果我改变

 MSWord.ActiveDocument.Shapes('Object 2').Select;

 MSWord.ActiveDocument.Shapes['Object2'].Select;

然后我得到:“Item”不是属性

请帮忙。

谢谢

最佳答案

您可以像这样访问形状:

MsWord.ActiveDocument.Shapes.Item('Object 2').Select;

关于excel - Delphi自动化调整图表大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24053689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com