دلفي أتمتة تغيير حجم الرسم البياني
-
21-12-2019 - |
سؤال
لدي مستند كلمة أقوم بإنشائه من خلال الأتمتة.أحتاج إلى وضع مخطط (تم إنشاؤه في إكسيل) داخل هذا المستند ، وتغيير حجم المخطط بحيث لا يتجاوز هوامش المستند.كيف يمكنني أن أفعل ذلك?البصرية الأساسية لا يسجل هذا النشاط عند تسجيل ماكرو ، لذلك ليس لدي أي فكرة عن كيفية المضي قدما.
أي أفكار?
نهجي هو:
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);
لذلك هذه هي الطريقة التي أضيف إلى ورد مخطط ولدت في إكسيل.المشكلة الوحيدة هي أن الرسم البياني كبير جدا ، ولست بحاجة لجعله أصغر بحيث تناسب بشكل أفضل في وثيقة ورد دون تفاعل المستخدم
حاولت تسجيل تغيير حجم القيام به في كلمة ، ويقول الماكرو:
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
الرجاء المساعدة.
يعطيكم الصّحة
المحلول
يمكنك الوصول إلى الشكل مثل هذا:
MsWord.ActiveDocument.Shapes.Item('Object 2').Select;