Automating Word application in C#
-
Hi all, I am trying to write some small app that automates Word Application (mainly MailMerge, and sending word documents to the printer), and I have come to a problem. Using the Missing.Value as a missing parameter (which is a good thing to do in every other method of the word app) will not work as most of the methods need a ref object as a parameter. does anyone have a clue? thanks Noam I attach a small piece of code for example. this code does not compile, for the above reason.
Word._Application word = new Word.ApplicationClass(); Word.Document doc = (Word.Document)word.Documents.Open(ref m_confirmationFile, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.MailMerge mailMerge = (Word.MailMerge)doc.MailMerge; mailMerge.CreateDataSource("Data.doc", Missing.Value, Missing.Value, "CandidateID, FirstName, LastName, Address", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.Document dataDoc = (Word.Document)word.Documents.Open("Data.doc", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.Table tbl = (Word.Table)((Word.Tables)dataDoc.Tables).Item(1); tbl.Cell(2, 1).Range.InsertAfter(candidateId); tbl.Cell(2, 2).Range.InsertAfter(firstName); tbl.Cell(2, 3).Range.InsertAfter(lastName); tbl.Cell(2, 4).Range.InsertAfter(address); dataDoc.Save(); dataDoc.Close(Missing.Value, Missing.Value, Missing.Value); mailMerge.Destination = Word.WdMailMergeDestination.wdSendToPrinter; mailMerge.Execute(Missing.Value); doc.Close(Missing.Value, Missing.Value, Missing.Value);
Noam Ben Haim Web Developer Intel noam.ben.chaim@intel.com -
Hi all, I am trying to write some small app that automates Word Application (mainly MailMerge, and sending word documents to the printer), and I have come to a problem. Using the Missing.Value as a missing parameter (which is a good thing to do in every other method of the word app) will not work as most of the methods need a ref object as a parameter. does anyone have a clue? thanks Noam I attach a small piece of code for example. this code does not compile, for the above reason.
Word._Application word = new Word.ApplicationClass(); Word.Document doc = (Word.Document)word.Documents.Open(ref m_confirmationFile, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.MailMerge mailMerge = (Word.MailMerge)doc.MailMerge; mailMerge.CreateDataSource("Data.doc", Missing.Value, Missing.Value, "CandidateID, FirstName, LastName, Address", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.Document dataDoc = (Word.Document)word.Documents.Open("Data.doc", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.Table tbl = (Word.Table)((Word.Tables)dataDoc.Tables).Item(1); tbl.Cell(2, 1).Range.InsertAfter(candidateId); tbl.Cell(2, 2).Range.InsertAfter(firstName); tbl.Cell(2, 3).Range.InsertAfter(lastName); tbl.Cell(2, 4).Range.InsertAfter(address); dataDoc.Save(); dataDoc.Close(Missing.Value, Missing.Value, Missing.Value); mailMerge.Destination = Word.WdMailMergeDestination.wdSendToPrinter; mailMerge.Execute(Missing.Value); doc.Close(Missing.Value, Missing.Value, Missing.Value);
Noam Ben Haim Web Developer Intel noam.ben.chaim@intel.comTry
null
? Might not work but it's a clue. Paul -
Hi all, I am trying to write some small app that automates Word Application (mainly MailMerge, and sending word documents to the printer), and I have come to a problem. Using the Missing.Value as a missing parameter (which is a good thing to do in every other method of the word app) will not work as most of the methods need a ref object as a parameter. does anyone have a clue? thanks Noam I attach a small piece of code for example. this code does not compile, for the above reason.
Word._Application word = new Word.ApplicationClass(); Word.Document doc = (Word.Document)word.Documents.Open(ref m_confirmationFile, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.MailMerge mailMerge = (Word.MailMerge)doc.MailMerge; mailMerge.CreateDataSource("Data.doc", Missing.Value, Missing.Value, "CandidateID, FirstName, LastName, Address", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.Document dataDoc = (Word.Document)word.Documents.Open("Data.doc", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.Table tbl = (Word.Table)((Word.Tables)dataDoc.Tables).Item(1); tbl.Cell(2, 1).Range.InsertAfter(candidateId); tbl.Cell(2, 2).Range.InsertAfter(firstName); tbl.Cell(2, 3).Range.InsertAfter(lastName); tbl.Cell(2, 4).Range.InsertAfter(address); dataDoc.Save(); dataDoc.Close(Missing.Value, Missing.Value, Missing.Value); mailMerge.Destination = Word.WdMailMergeDestination.wdSendToPrinter; mailMerge.Execute(Missing.Value); doc.Close(Missing.Value, Missing.Value, Missing.Value);
Noam Ben Haim Web Developer Intel noam.ben.chaim@intel.comstring s = @"c:\mydoc.doc";
object so = (object) s;
object o = null;
Word.Document doc = word.Documents.Open(ref so,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o);(the ref stuff is because the tlbimporter is stupid, and prefers to assume nothing, even when the type-library brings everything top-to-bottom and left-to-right). Have fun!! :cool:
MS quote (http://www.microsoft.com/ddk) : As of September 30, 2002, the Microsoft® Windows® 2000 DDK, the Microsoft Windows 98 DDK, and the Microsoft Windows NT® 4.0 DDK will no longer be available for purchase or download on this site.
-
Hi all, I am trying to write some small app that automates Word Application (mainly MailMerge, and sending word documents to the printer), and I have come to a problem. Using the Missing.Value as a missing parameter (which is a good thing to do in every other method of the word app) will not work as most of the methods need a ref object as a parameter. does anyone have a clue? thanks Noam I attach a small piece of code for example. this code does not compile, for the above reason.
Word._Application word = new Word.ApplicationClass(); Word.Document doc = (Word.Document)word.Documents.Open(ref m_confirmationFile, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.MailMerge mailMerge = (Word.MailMerge)doc.MailMerge; mailMerge.CreateDataSource("Data.doc", Missing.Value, Missing.Value, "CandidateID, FirstName, LastName, Address", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.Document dataDoc = (Word.Document)word.Documents.Open("Data.doc", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); Word.Table tbl = (Word.Table)((Word.Tables)dataDoc.Tables).Item(1); tbl.Cell(2, 1).Range.InsertAfter(candidateId); tbl.Cell(2, 2).Range.InsertAfter(firstName); tbl.Cell(2, 3).Range.InsertAfter(lastName); tbl.Cell(2, 4).Range.InsertAfter(address); dataDoc.Save(); dataDoc.Close(Missing.Value, Missing.Value, Missing.Value); mailMerge.Destination = Word.WdMailMergeDestination.wdSendToPrinter; mailMerge.Execute(Missing.Value); doc.Close(Missing.Value, Missing.Value, Missing.Value);
Noam Ben Haim Web Developer Intel noam.ben.chaim@intel.comobject isVisible = false; object missing = System.Reflection.Missing.Value; Word.ApplicationClass WordApp = new Word.ApplicationClass(); WordApp.Visible = false; WordApp.ScreenUpdating = false; WordApp.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone; Word.Document aDoc = WordApp.Documents.Add(ref fileName, ref missing, ref missing, ref isVisible); aDoc.Activate(); WordApp.ActivePrinter = _DeviceName; // Office 2000 format WordApp.ActiveDocument.PrintOut(ref bool_true, ref bool_false, ref missing, ref newFileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref bool_true, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);