Autor Beitrag
lexmy3
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Di 14.02.06 09:29 
Hallo, nach einem Tip habe ich dieses Makro, welches ich ins Delphi übersetzen muss.

Kann mir einer eventuell dabei helfen wie gehe ich beim Übersetzen vor??
(Habe Delphi 5 mit Word 2000)

Makro in Word:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Sub Makro2()
  '
  '
 Makro2 Makro
  ' Makro aufgezeichnet am 13.02.2006 von Lexmy3
  '

  Documents.Add Template:= _
  "C:\Word\ReferenzReport.dot" _
  , NewTemplate:=False, DocumentType:=0
End Sub


wäre echt Supper!!!

mfg

Lexmy3
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Di 14.02.06 14:15 
Ok. du willst also Word fernsteuern Suche in: Delphi-Forum, Delphi-Library WORD
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 11:25 
Hallo,

Also ich habe bis jetzt alles Mögliche von meiner Seite ausprobiert, jedoch hatte ich dabei kein Glück.

kann mir einer nen Anstoss geben?

hier nochmal der Code in VB:

Documents.Add Template:= _
"C:\Word\ReferenzReport.dot" _
, NewTemplate:=False, DocumentType:=0

mfg

Lexmy3
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 24.02.06 11:31 
Fast genauso: (Unter Verwendung der Office-Komponenetn von Delphi)
ausblenden Delphi-Quelltext
1:
WordApplication.Documents.Add( 'C:\Word\ReferenzReport.dot', False, 0);					

_________________
Markus Kinzler.
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Fr 24.02.06 11:32 
Vielleicht hift Dir das auch weiter: www.dsdt.info/tipps/?id=610

Lg Martin

_________________
Ein Nutzer der Ecke ;-)
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 12:03 
mkinzler[/user]"]Fast genauso: (Unter Verwendung der Office-Komponenetn von Delphi)
WordApplication.Documents.Add( 'C:\Word\ReferenzReport.dot', False, 0);[/quote]

hey, danke für eure Reaktion

Habe diesen Fehler:
[Fehler] Unit10.pas(113): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen

mit dem Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  
WordApplication1.Connect;        //verbinden zu Word
  WordApplication1.Documents.Add( 'C:\Word\ReferenzReport1.dot', False, 0);
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);


Ich verstehe die Meldung nicht :gruebel:

mfg
Lexmy3
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 12:25 
Ok, jetzt habe ich es so gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
Word:Variant;
begin
  Word.Documents.Add( 'C:\Word\ReferenzReport1.dot', False, 0);
end;
end.


jedoch tritt eine Exeption auf: ????Variante refrenziert kein Automatisierungsobjekt????

Was mache ich denn da?
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 24.02.06 12:42 
user profile iconlexmy3 hat folgendes geschrieben:
Ok, jetzt habe ich es so gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
Word:Variant;
begin
  Word.Documents.Add( 'C:\Word\ReferenzReport1.dot', False, 0);
end;
end.


jedoch tritt eine Exeption auf: ????Variante refrenziert kein Automatisierungsobjekt????

Was mache ich denn da?


Die nun von dir gewählte Variante verwendet späte Bindung, deshalb mußt du erst die Verbindung zu Word aufbauen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
Word:OleVariant;
begin
  Word := CreateOleObject( 'Word.Basic');
  Word.Documents.Add( 'C:\Word\ReferenzReport1.dot', False, 0);
end;
end.


Zur ersten Lösung ergänze mal den Letzen Parameter

ausblenden Delphi-Quelltext
1:
WordApplication.Documents.Add( 'C:\Word\ReferenzReport.dot', False, 0, EmptyParam);					

_________________
Markus Kinzler.
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 13:02 
:autsch: Hier der ganze Code, welcher jedoch eine Meldung bringt: Automatisierungsobject akzeptiert keine Documents Methode


ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Word97, OleServer,ComObj,ActiveX;

type
  TForm1 = class(TForm)
    WordApplication1: TWordApplication;
    WordDocument1: TWordDocument;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var  
Word:OleVariant;
begin  
  Word := CreateOleObject( 'Word.Basic');
  Word.Documents.AddOld( 'C:\Word\ReferenzReport1.dot', False, 0,EmptyParam);
end;



end.


Zuletzt bearbeitet von lexmy3 am Fr 24.02.06 13:13, insgesamt 1-mal bearbeitet
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 24.02.06 13:05 
Auch bei der frühen Bindung muß zuesrst eien Verbindung zu Wor aufgebaut werden:

ausblenden Delphi-Quelltext
1:
WordApplication1.Connect;					


bevor man Word automatisieren kann.

_________________
Markus Kinzler.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 24.02.06 13:05 
Hast du mkinzlers Post nicht gelesen :roll: ?

user profile iconmkinzler hat folgendes geschrieben:
Die nun von dir gewählte Variante verwendet späte Bindung, deshalb mußt du erst die Verbindung zu Word aufbauen. [..]


AXMD
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 13:26 
Hey, aber trotzallem wird diese methode nicht akzeptiert????
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var
Word:Variant;
begin

  WordApplication1.Connect;
  WordApplication1. Visible :=True;
  Word := CreateOleObject( 'Word.Basic');
  Word.Documents.Add( 'C:\Word\ReferenzReport1.dot', False, 0,EmptyParam);
end;



end.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 24.02.06 13:31 
Hey lexmy3 du solltest dich mal für eine Methode entscheiden fruhe oder späte Bindung.
also entweder so, als späte Bindung:
ausblenden Delphi-Quelltext
1:
2:
  Word := CreateOleObject( 'Word.Basic');
  Word.Documents.Add( 'C:\Word\ReferenzReport1.dot', False, 0,EmptyParam);


oder so als frühe Bindung:
ausblenden Delphi-Quelltext
1:
2:
3:
  WordApplication1.Connect;
  WordApplication1.Visible :=True;
  WordApplication1.Documents.Add( 'C:\Word\ReferenzReport1.dot', False, 0,EmptyParam);


In beiden Fällen muß zuerst eine Verbindung zu Word aufgebaut werden.

_________________
Markus Kinzler.
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 13:49 
Aha Ok habe mich dann doch für die Frühe Methode entschieden.

Jedoch wider eine Meldung:
Zitat:
[Fehler] Unit1.pas(33): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen


Bin am verzweifeln Kein guter Tag heute!!!

mfg

Lexmy3

Moderiert von user profile iconTino: Quote-Tags hinzugefügt.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 24.02.06 13:54 
Ersetze mal alle, bis auf den ersten Parameter durch EmptyParam, um zu erkennen welcher paramter gemeint ist die Paramterliste ist:
var Template: OleVariant, var NewTemplate: OleVariant,
var DocumentType: OleVariant, Visible: OleVariant

_________________
Markus Kinzler.
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 14:47 
user profile iconmkinzler hat folgendes geschrieben:
Ersetze mal alle, bis auf den ersten Parameter durch EmptyParam, um zu erkennen welcher paramter gemeint ist die Paramterliste ist:
var Template: OleVariant, var NewTemplate: OleVariant,
var DocumentType: OleVariant, Visible: OleVariant


Also ich weiß leider nicht ganz was ich mit der Param.Liste tun soll!
Aber es wird definitiv der Pfad nicht akzeptiert.

Denn So geht ein neues Dokument auf aber nicht nach Pfad.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
begin
WordApplication1.Connect;
  WordApplication1.Visible :=True;
  WordApplication1.Documents.Add( 'C:\WordEnglish\ReferenzReport1.dot', EmptyParam);

 end;
end.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 24.02.06 14:51 
Aber die Vorlage ReferenzReport1.dot existiert im Verzeichnis c:\WordEnglish?

Ich habe das ganze mal getestet (allerdings mit Word2000) hier hat es funktioniert, auch ohne die EmptyParams.

_________________
Markus Kinzler.
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Fr 24.02.06 14:52 
Kann es sein, das er deinen Pfad als Variable haben will?
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 15:03 
user profile icondigi_c hat folgendes geschrieben:
Kann es sein, das er deinen Pfad als Variable haben will?


Oh ja diese Pfad existiert ohne Zweifel.

Ich glaube du hast Recht so geht es bis jetzt!!!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
Template: OleVariant;
begin
 Template:=('C:\WordEnglish\ReferenzReport1.dot');
WordApplication1.Connect;
  WordApplication1.Visible :=True;
  WordApplication1.Documents.Add(EmptyParam, EmptyParam);
  WordApplication1.Documents.Add( Template, EmptyParam);

 end;
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Fr 24.02.06 15:25 
Super Leute und es lohnt sich doch.
War ein langer Kampf mit Einsatz und Rat

Danke an alle

mfg

Lexmy3