2

I have a pre-made Word Template that has a table. I would like to open it up and then add (paste) another table at the end of the document. The problem is that it will not goto the end of the document, instead it paste the new table into the first cell of the original table. Any help would be greatly appreciated.

//previous code copied a table from another document

Object oTempPath = "C:\\Temp\\Logtemp.doc";
Object defaultTemplate = "C:\\Temp\\LogContemp.doc";


oDoc = oWord.Documents.Open(ref defaultTemplate,
                            ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                            ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                            ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                            ref oMissing, ref oMissing, ref oMissing);



                        object start = oDoc.Content.Start;
                        object end = oDoc.Content.End; 
                        oDoc.Range(ref start, ref end).Copy();


                        oDoc.Close(ref oMissed, ref oMissed, ref oMissed);


                        oDoc = oWord.Documents.Open(ref oTempPath,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing);

                        oDoc.Activate();

//**** This is where the issue starts ****

                        start = oWord.Selection.End;
                        end = oWord.Selection.End;



                       Word.Range rng = oDoc.Range(ref start, ref end);


                        rng.Select();
                        rng.Paste();


                        object fileN1 = "C:\\temp\\" + TextBox1.Text + " Log.doc";

                        oDoc.Fields.Update();
                        oDoc.SaveAs(ref fileN1,
                            ref oMissed, ref oMissed, ref oMissed, ref oMissed, ref oMissed,
                            ref oMissed, ref oMissed, ref oMissed, ref oMissed, ref oMissed,
                            ref oMissed, ref oMissed, ref oMissed, ref oMissed, ref oMissed);
                        oDoc.Close(ref oMissed, ref oMissed, ref oMissed);
                        oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
Dulini Atapattu
  • 2,735
  • 8
  • 33
  • 47
user770344
  • 473
  • 2
  • 8
  • 16

3 Answers3

3

Change the following line of your code

start = oWord.Selection.End;
end = oWord.Selection.End;

to

start = oDoc.Content.End - 1;
end = oDoc.Content.End;

Hope this helps...

Dulini Atapattu
  • 2,735
  • 8
  • 33
  • 47
1

I have found the answer!!

Instead of using Word.Range.Paste I used the following:

          Object objUnit = Word.WdUnits.wdStory;

          oWord.Selection.EndKey(ref objUnit, ref oMissing);

          oWord.ActiveWindow.Selection.PasteAndFormat(Word.WdRecoveryType.wdPasteDefault);
user770344
  • 473
  • 2
  • 8
  • 16
0
Globals.ThisAddIn.Application.ActiveDocument.Range(
Globals.ThisAddIn.Application.ActiveDocument.Content.End-1,
Globals.ThisAddIn.Application.ActiveDocument.Content.End-1).Select();
object missing = System.Type.Missing;
Word.Range currentRange = Globals.ThisAddIn.Application.Selection.Range;
Word.Table newTable = Globals.ThisAddIn.Application.ActiveDocument.Tables.Add(
currentRange, 3, 4, ref missing, ref missing);

// Get all of the borders except for the diagonal borders.
Word.Border[] borders = new Word.Border[6];
borders[0] = newTable.Borders[Word.WdBorderType.wdBorderLeft];
borders[1] = newTable.Borders[Word.WdBorderType.wdBorderRight];
borders[2] = newTable.Borders[Word.WdBorderType.wdBorderTop];
borders[3] = newTable.Borders[Word.WdBorderType.wdBorderBottom];
borders[4] = newTable.Borders[Word.WdBorderType.wdBorderHorizontal];
borders[5] = newTable.Borders[Word.WdBorderType.wdBorderVertical];

// Format each of the borders. 
foreach (Word.Border border in borders)
{
    border.LineStyle = Word.WdLineStyle.wdLineStyleSingle;
    border.Color = Word.WdColor.wdColorBlue;
}
hayj
  • 1,159
  • 13
  • 21