Вопрос

У меня есть документ слова, который я генерирую через автоматизацию.Мне нужно поставить диаграмму (сгенерировано в 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, а макрос говорит:

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: GeneracodicTagcode Так что это не работает таким образом.

Если я изменим

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

к

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

Тогда я получаю: "Shapes" is not a method

Пожалуйста, помогите.

Спасибо

Это было полезно?

Решение

Вы можете получить доступ к форме:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top