Ik probeer een softwaretool te maken, welke een word document opent en daaraan een tekstbestand koppelt voor mailmerge. Door gebruik te maken van interop.word heb ik dit voor elkaar gekregen. Nu ontstaat het probleem dat de tool niet werkt voor office versie 2000.
Nu heb ik het hele verhaal geherprogrammeerd d.m.v. late-binding, maar hier ontstaat het probleem. Ik kan nu geen document meer aanwijzen waarmee hij moet mergen.
Hieronder de code welke ik nu gebruik:
Hieronder zie je de eerste methode welke wel werkt, maar dus niet op de juiste versie van Word, maar wellicht geeft het verheldering:
Wellicht heeft iemand een idee van aanpak. Google/MSDN hebben me niet echt geholpen bij het laatste probleem.
Nu heb ik het hele verhaal geherprogrammeerd d.m.v. late-binding, maar hier ontstaat het probleem. Ik kan nu geen document meer aanwijzen waarmee hij moet mergen.
Hieronder de code welke ik nu gebruik:
code:
Hierbij werkt het merge gedeelte dus niet.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| Type wordAppType = Type.GetTypeFromProgID("Word.Application");
object wordApp = Activator.CreateInstance(wordAppType);
object wordDocs = wordAppType.InvokeMember("Documents", BindingFlags.GetProperty, null, wordApp,
new object[] { });
object file = Directory + SelDoc + ".doc";
object[] openArgs = new Object[] { file };
object WordDoc = wordAppType.InvokeMember("Open",BindingFlags.InvokeMethod, null, wordDocs, openArgs);
object Mergefile = CustomDirectory + SelDoc + ".txt";
object[] MergeArgs = new Object[] { Mergefile };
WordDoc.GetType().InvokeMember("OpenDataSource", BindingFlags.InvokeMethod, null, WordDoc, MergeArgs);
object Savefile = CustomDirectory + Bestandsnaam + "-" + SelectId + "-" + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Minute + DateTime.Now.Second + ".doc";
object[] saveArgs = new Object[] { Savefile };
WordDoc.GetType().InvokeMember("SaveAs", BindingFlags.InvokeMethod, null, WordDoc, saveArgs);
openArgs = new object[] { true };
wordAppType.InvokeMember("Visible",BindingFlags.SetProperty, null, wordApp, openArgs); |
Hieronder zie je de eerste methode welke wel werkt, maar dus niet op de juiste versie van Word, maar wellicht geeft het verheldering:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| object fileName = Directory + SelDoc +".doc";
object readOnly = false;
object isVisible = true;
object missing = System.Reflection.Missing.Value;
Word.ApplicationClass WordApp = new Word.ApplicationClass();
WordApp.Visible = true;
Document Doc = WordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
Doc.MailMerge.OpenDataSource(Directory + SelDoc + ".txt", ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
Doc.MailMerge.Execute(ref missing);
Doc.Close(ref readOnly, ref missing, ref missing);
//Doc.Activate(); |
Wellicht heeft iemand een idee van aanpak. Google/MSDN hebben me niet echt geholpen bij het laatste probleem.
FON - WiFi for Everyone | Flickr