Пример #1
0
        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();
                }
            }
        }
Пример #2
0
        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);
        }