How to achieve late binding in c# for Microsoft.office.interop.word?

c#

Solution

Made the following changes, Its working fine now.

    Type wordType = Type.GetTypeFromProgID("Word.Application");

    dynamic Word = Activator.CreateInstance(wordType);


    object oMissing = System.Reflection.Missing.Value;


    DirectoryInfo dirInfo = new DirectoryInfo(@"\\server\folder");
    FileInfo wordFile = new FileInfo(fileName);

    Word.Visible = false;
    Word.ScreenUpdating = false;

    Object filename = (Object)wordFile.FullName;

    var doc = Word.Documents.Open(ref filename);
    doc.Activate();

    object outputFileName = wordFile.FullName.Replace(".doc", ".pdf");

/*in the WdSaveFormat enum, 17 is the value for pdf format*/ 
    object fileFormat = 17;


    doc.SaveAs(ref outputFileName, ref fileFormat);

 /in the   WdSaveOptions enum, 0 is for Do not save pending changes.*/
    object saveChanges = 0;

    doc.Close(ref saveChanges);
    doc = null;

    Word.Quit();

    MessageBox.Show("Successfully converted");

Problem

I want to achieve late binding for the following lines of code which are using early binding. How can I achieve it in C#? When I removed Microsoft.office.interop.word reference, I am getting some errors, which are mentioned in the comments in following code. Folloowing is the code I am using to convert a word document to pdf. ``` Type wordType = Type.GetTypeFromProgID("Word.Application"); dynamic Word = Activator.CreateInstance(wordType); object oMissing = System.Reflection.Missing.Value; DirectoryInfo dirInfo = new DirectoryInfo(@"\\server\folder"); FileInfo wordFile = new FileInfo(fileName); Word.Visible = false; Word.ScreenUpdating = false; Object filename = (Object)wordFile.FullName; var doc = Word.Documents.Open(ref filename); doc.Activate(); object outputFileName = wordFile.FullName.Replace(".doc", ".pdf"); /*Getting an error in WdSaveFormat */ object fileFormat = WdSaveFormat.wdFormatPDF; doc.SaveAs(ref outputFileName, ref fileFormat); /*Getting an error in WdSaveOptions */ object saveChanges = WdSaveOptions.wdDoNotSaveChanges; /*Getting an error in _Document*/ ((_Document)doc).Close(ref saveChanges); doc = null; Word.Quit(); MessageBox.Show("Successfully converted"); ```

Original source