none
word application RRS feed

  • 問題

  • 請問各位先進

    using Word;
    using Microsoft.Office;

    ...........................

    .......................

    Word.Document wordDoc =
                    thisApplication.Documents.Open(ref filename, ref ConfirmConversions,
                    ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,
                    ref Revert, ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,
                    ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,
                    ref NoEncodingDialog, ref XMLTransform);

     

    這個word檔裡面有多個文字方塊

    wordDoc.Shapes.AddTextBox可加文字方塊

    但不知如何取出已有的文字方塊

    請各位先進指導一下

    謝謝

    2006年8月15日 上午 08:51

解答

  • 你如果安裝 Word 2003 有裝 VBA 說明,請把下列位置貼到 IE 網址列:

    mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\1028\vbawd10.chm::/html/woobjTextFrame1.htm

    在每個 Shapes 下面有 TextFrame 屬性,摘錄上述位置其中一段程式碼:

    使用 ContainingRange 屬性可傳回 Range 物件,該物件代表在連結的文字框架之間排列的整個本文。以下範例對 TextBox 3 中的文字,以及所有連結至 TextBox 3 的文字方塊文字進行拼字檢查。

    Set myStory = ActiveDocument.Shapes("TextBox 3") _
        .TextFrame.ContainingRange
    myStory.CheckSpelling
    2006年8月15日 上午 09:20
    版主
  • 那個名稱是自動命名,或是你曾經有用程式命名的。

    你反正是要全部,用迴圈直接處理就好了。

    With wdDoc.Shapes
       For i = 1 To .Count
          Debug.WriteLine(.Item(i).Name) ' 這樣可以得知每個 Shapes 的名字,這個名字可以直接用在 .Shapes(strName)
          ' .TextFrame ...
       Next
    End With

    2006年8月16日 上午 03:24
    版主
  •  

    感謝

    試了一下 終於成功了

    不過c#跟vb有些不同

    foreach (Word.Shape s in doc.Shapes)
                {
                      System.Diagnostics.Debug.WriteLine(s.TextFrame.TextRange.Text);
                }

    謝謝

    2006年8月16日 上午 04:44

所有回覆

  • 你如果安裝 Word 2003 有裝 VBA 說明,請把下列位置貼到 IE 網址列:

    mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\1028\vbawd10.chm::/html/woobjTextFrame1.htm

    在每個 Shapes 下面有 TextFrame 屬性,摘錄上述位置其中一段程式碼:

    使用 ContainingRange 屬性可傳回 Range 物件,該物件代表在連結的文字框架之間排列的整個本文。以下範例對 TextBox 3 中的文字,以及所有連結至 TextBox 3 的文字方塊文字進行拼字檢查。

    Set myStory = ActiveDocument.Shapes("TextBox 3") _
        .TextFrame.ContainingRange
    myStory.CheckSpelling
    2006年8月15日 上午 09:20
    版主
  • 感謝您的回答

    昨天try了一整個晚上

    還是沒辦法

    object index = "TextBox 1";

    Word.ShapeRange rng = ActiveDocument.Shapes.Range(ref index);

    顯示找不到指定項目的錯誤訊息

    將index改成數字、"Textbox".....等

    都沒辦法解決

    請問是哪裡有誤嗎?

    謝謝

    2006年8月16日 上午 01:01
  • 那個名稱是自動命名,或是你曾經有用程式命名的。

    你反正是要全部,用迴圈直接處理就好了。

    With wdDoc.Shapes
       For i = 1 To .Count
          Debug.WriteLine(.Item(i).Name) ' 這樣可以得知每個 Shapes 的名字,這個名字可以直接用在 .Shapes(strName)
          ' .TextFrame ...
       Next
    End With

    2006年8月16日 上午 03:24
    版主
  •  

    感謝

    試了一下 終於成功了

    不過c#跟vb有些不同

    foreach (Word.Shape s in doc.Shapes)
                {
                      System.Diagnostics.Debug.WriteLine(s.TextFrame.TextRange.Text);
                }

    謝謝

    2006年8月16日 上午 04:44
  • ... 沒注意到你原先用啥...

    不過若是限定 c# 的文章我通常不會回,因為 c# 我不熟。

    2006年8月16日 上午 05:36
    版主