문제

나는 자동화를 통해 생성하는 단어 문서가 있습니다.이 문서 내부에서 차트 (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에 추가하는 방법입니다. 유일한 문제는 차트가 너무 크다는 것입니다. 사용자 상호 작용이없는 단어 문서에서 더 잘 맞는 것이 필요합니다.

ReDizing을 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;
.

그런 다음 GENTACODODICETAGCODE

도와주세요.

고맙습니다

도움이 되었습니까?

해결책

다음과 같은 모양에 액세스 할 수 있습니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top