private void MoveText(CardControl TOPCARD, CardControl BOTTOMCARD) { //Globals.ThisAddIn.userControlWPF.ListCardControls.IndexOf(card) if (int.Parse(BOTTOMCARD.IDfield) != 1)// if it is not the first card { string nobookmark = "None"; if ((TOPCARD.Bookmarkfield.ToUpper() != nobookmark.ToUpper()) && (BOTTOMCARD.Bookmarkfield.ToUpper() != nobookmark.ToUpper())) // only if both are linked to a bookmark - to upper to maintain compatibility with old format { Word.Bookmark TOPbmk = Globals.ThisAddIn.Application.ActiveDocument.Bookmarks[TOPCARD.Bookmarkfield]; Word.Range TOPRange = TOPbmk.Range; // move the text Word.Bookmark BOTTOMbmk = Globals.ThisAddIn.Application.ActiveDocument.Bookmarks[BOTTOMCARD.Bookmarkfield]; Word.Range BOTTOMRange = BOTTOMbmk.Range; BOTTOMRange.Cut(); Word.Range temprange = Globals.ThisAddIn.Application.ActiveDocument.Range(TOPRange.Start, TOPRange.End); // store range of prevbookmark int topbookmarkLenght = TOPRange.End - TOPRange.Start; // calculate lenght of prevbookmark subtracting end and start string topbkmName = TOPbmk.Name; // save name of prevbookmark TOPbmk.Delete(); // delete prevbookmark // add a temporary space character at the start of the previous bookmark // paste the text Word.Range newrange = Globals.ThisAddIn.Application.ActiveDocument.Range(temprange.Start, temprange.Start); newrange.Paste(); Word.Range newbkmrkrange = Globals.ThisAddIn.Application.ActiveDocument.Range(newrange.End, newrange.End + topbookmarkLenght); Word.Bookmark newbookmark = Globals.ThisAddIn.Application.ActiveDocument.Bookmarks.Add(topbkmName, newbkmrkrange); // create new bookmark with start at the end of the bookmark and end at start+lenght //BOTTOMbmk.Range.Select(); } } }
private bool cutBetweenWords( Word.Document objDocument, string fromStr, string toStr ) { long fromStart = 0; // searchWord で使う long fromEnd = 0; // searchWord で使う long toStart = 0; // searchWord で使う long toEnd = 0; // searchWord で使う long wStart = 0; long wEnd = 0; object oStartPos; object oEndPos; Word.Range objRange = objDocument.Range(); wStart = objRange.Start; wEnd = objRange.End; searchWord(objRange, fromStr, ref fromStart, ref fromEnd); if ((fromStart == 0) && (fromEnd == 0)) { return(false); } oStartPos = fromEnd; oEndPos = wEnd; objRange = objDocument.Range( ref oStartPos, // Start ref oEndPos // End ); searchWord(objRange, toStr, ref toStart, ref toEnd); if ((toStart == 0) && (toEnd == 0)) { return(false); } //Console.WriteLine("{0}:{1} {2}:{3}",fromStart, fromEnd, toStart,toEnd); oStartPos = fromStart; oEndPos = toEnd; objRange = objDocument.Range( ref oStartPos, // Start ref oEndPos // End ); // fromStrのstart と toStrのend の間を選択 objRange.Cut(); return(true); }