none
c# using late bind to call word need help RRS feed

  • 問題

  • 諸位先進..小弟因office相容性問題需把原call word 的應用程式 由 early bind 改寫成 late bind 不過search很久 找不到下列的語法轉換的方式 還請指教

     Word.Range wrdRng = doc.Bookmarks.get_Item(ref oEndOfDoc).Range;

     wrdRng.InsertAfter(tps);// Question 1

     wrdRng.Paste();// Question 2

      wrdRng.Select(); //Question 3

     很想搞清楚到底要怎麼下那堆 invoke的東東可是google到的都是片斷...現也只有看到如何開檔加範本...關檔等  更進階的操作就都沒找到。可能是我key word 下的不對吧 
    我都是下 csharp word late bind  oEndOfDoc 就都只看到early bind的資訊 還請幫幫忙!感謝

     

    2011年6月27日 上午 10:05

所有回覆

  • ... 安裝 Office 時,請選擇性安裝開發者線上手冊。

     

    Q1

    Word 開發人員參考資料
    Range.InsertAfter 方法

    會在範圍結尾插入指定的文字。

    語法

     

    運算式.InsertAfter(Text)

     

    運算式 必要。代表 Range 物件的變數。

     

    參數

     

    名稱 必要/選用 資料類型 描述
    Text 必要 String 要插入的文字。

     

    備註

    在套用此方法之後,該範圍就會展開成包含新的文字。

     

    您可以使用 Visual Basic Chr 函數與 InsertAfter 方法,插入如引號、定位字元及不分行連字號等的字元。此外,也可以使用下列 Visual Basic 常數:vbCrvbLfvbCrLfvbTab

     

    如果將此方法用於代表整個段落的範圍,則會在結尾的段落標記之後插入文字 (文字將會出現在下一段的開頭)。若要在段落結尾插入文字,請先確定終點位置,然後將此位置的值減去 1 (因為段落標記也代表一個字元),如下列範例所示。

     

    Visual Basic for Applications
    Set doc = ActiveDocument
    Set rngRange = _
      doc.Range(doc.Paragraphs(1).Start, _
      doc.Paragraphs(1).End - 1)
    rngRange.InsertAfter _
      " This is now the last sentence in paragraph one."

     

    但是,如果該範圍結尾的段落標記剛好也是文件結尾,則 Microsoft Word 就會在最後一個段落標記之前插入文字,而不會在文件結尾建立新的段落。

     

    此外,如果該範圍是書籤,則 Word 會插入指定的文字,但是不會將該範圍或書籤展開成包含新的文字。

     

     

     

    範例

    這個範例會在使用中文件的結尾插入文字。Content 屬性會傳回 Range 物件。

     

    Visual Basic for Applications
    ActiveDocument.Content.InsertAfter "end of document"

     

    這個範例會插入輸入方塊中的文字,當做使用中文件內的第二個段落。

     

    Visual Basic for Applications
    response = InputBox("Type some text")
    With ActiveDocument.Paragraphs(1).Range
      .InsertAfter "1." & Chr(9) & response
      .InsertParagraphAfter
    End With

     

    Q2

    Word 開發人員參考資料
    Range.Paste 方法

    會在指定的範圍插入剪貼簿的內容。

    語法

     

    運算式.Paste

     

    運算式 必要。代表 Range 物件的變數。

     

    備註

    如果不要取代該範圍的內容,請先使用 Collapse 方法,然後再使用此方法。

     

    當您將此方法用於 Range 物件時,就會將該範圍展開到包含剪貼簿的內容。

     

     

     

    範例

    這個範例會複製使用中文件內的第一個表格,並將其貼到新文件中。

     

    Visual Basic for Applications
    If ActiveDocument.Tables.Count >= 1 Then
      ActiveDocument.Tables(1).Range.Copy
      Documents.Add.Content.Paste
    End If

     

    這個範例會複製選取範圍,並將其貼到文件的結尾。

     

    Visual Basic for Applications
    If Selection.Type <> wdSelectionIP Then
      Selection.Copy
      Set Range2 = ActiveDocument.Content
      Range2.Collapse Direction:=wdCollapseEnd
      Range2.Paste
    End If

     

    Q3

    Word 開發人員參考資料
    Range.Select 方法

    會選取指定的範圍。

    語法

     

    運算式.Select

     

    運算式 必要。代表 Range 物件的變數。

     

    範例

    這個範例會選取使用中文件內的第一個段落。

     

    Visual Basic for Applications
    Sub SelectParagraph()
      ActiveDocument.Paragraphs(1).Range.Select
      Selection.Font.Bold = True
    End Sub
    其他:
    Word 開發人員參考資料
    Range 物件成員

    代表文件中的連續區域。每一個 Range 物件都是由開始和結束字元位置所定義。

    方法

    名稱 描述
    AutoFormat 會自動格式化文件。可以使用 Kind 屬性來指定文件類型。
    Calculate 會計算某個指定範圍或選取範圍中的數學運算式。結果會以 Single 傳回。
    CheckGrammar 針對指定的範圍,開始進行拼字和文法檢查。
    CheckSpelling 針對指定的文件或範圍,開始進行拼字檢查。
    CheckSynonyms 針對指定範圍中的文字,顯示 [同義字] 對話方塊,其中列出替代字選項或同義字。
    Collapse 此方法將某一範圍或選取範圍摺疊到起始位置或結束位置。摺疊之後,範圍或選取範圍的起始位置和結束位置相同。
    ComputeStatistics 會傳回代表以指定範圍內容為基礎之統計資料的 Long
    ConvertHangulAndHanja 將指定的範圍從韓文轉換成漢字,反之亦然。
    ConvertToTable 將任一範圍內的文字轉換到表格。會以 Table 物件的形式傳回表格。
    Copy 會將指定的範圍複製到剪貼簿。
    CopyAsPicture CopyAsPicture 方法的運作方式與 Copy 方法一樣。
    Cut 會從文件中移除指定的物件,並將該物件置於剪貼簿。
    Delete 刪除指定數目的字元或文字。
    DetectLanguage 會分析指定的文字,以判定撰寫文字的語言。
    EndOf 將某個範圍的結束字元位置移動或延伸至最接近指定文字單位的結尾。
    Expand 會延伸指定的範圍或選取範圍。它會傳回新增至指定範圍或選取範圍的字元數 (Long)。
    ExportAsFixedFormat 會將文件的一部分儲存為 PDF 或 XPS 格式。
    ExportFragment 會將選取的範圍匯出至文件中做為文件片段使用。
    GetSpellingSuggestions 會傳回 SpellingSuggestions 集合,代表建議用來取代指定之範圍內第一個單字拼字的單字。
    GoTo 會傳回代表指定的項目 (例如頁面、書籤或功能變數) 之起始位置的 Range 物件。
    GoToEditableRange 傳回 Range 物件,表示某份文件中可由指定使用者或使用者群組修改的區域。
    GoToNext 會傳回 Range 物件,該物件參照由 What 引數所指定的下一個項目或位置的起始位置。
    GoToPrevious 會傳回 Range 物件,該物件參照由 What 引數所指定之上一個項目或位置的起始位置。
    ImportFragment 會將文件片段匯入至文件的指定範圍中。
    InRange 如果套用此方法的範圍包含在 Range 引數所指定的範圍內,則會傳回 True
    InsertAfter 會在範圍結尾插入指定的文字。
    InsertAlignmentTab 插入永遠都會在相同點上的絕對標籤 (相對於邊界或縮排的位置)。
    InsertAutoText 嘗試比對指定範圍中的文字或此範圍周圍的文字與現有的自動圖文集項目名稱。
    InsertBefore 會在指定的範圍之前插入指定的文字。
    InsertBreak 會插入分頁、分欄或分節符號。
    InsertCaption 會緊接在指定的範圍之前或之後插入標號。
    InsertCrossReference 會插入標題、書籤、註腳或章節附註或已定義標題標籤之項目 (例如,方程式、圖形或表格) 的交互參照。
    InsertDatabase 從資料來源 (例如,不同的 Microsoft Word 文件、Microsoft Office Excel 工作表或 Microsoft Office Access 資料庫) 擷取資料,然後插入資料成為表格,以便取代指定的範圍。
    InsertDateTime 會插入目前日期或時間或者兩個都要,做為文字或 TIME 功能變數。
    InsertFile 會插入全部或部分指定的檔案。
    InsertParagraph 會以新的段落取代指定的範圍。
    InsertParagraphAfter 會在範圍之後插入段落標記。
    InsertParagraphBefore 會在指定的範圍之前插入新的段落。
    InsertSymbol 會插入符號以取代指定的範圍。
    InsertXML 會將指定的 XML 插入文件中的指定範圍,並取代任何包含在範圍中的任何文字。
    InStory 如果套用此方法的範圍與 Range 引數所指定的範圍位於相同的本文 (本文:包含的文字範圍與文件中其他文字區域有所不同的文件區域。例如,如果文件包括本文、註腳及標題,則它包含主要本文、註腳本文及標題本文。)中,則為 True
    IsEqual 如果套用此方法的範圍與 Range 引數所指定的範圍相同,則為 True
    LookupNameProperties 在全域通訊錄清單中查詢名稱並顯示 [內容] 對話方塊,當中包含指定之名稱的相關資訊。
    ModifyEnclosure 加入、修改或移除一個或多個指定字元周圍的圍繞符號。
    Move 會將指定的範圍摺疊至開始或結束位置,然後依照指定的單位數目移動該摺疊的物件。
    MoveEnd 會移動範圍的結束字元位置。
    MoveEndUntil 會移動指定之範圍的結束位置,直到在文件中找到任何指定的字元為止。如果文件中的移動方向是向前移動,則範圍就會跟著展開。
    MoveEndWhile 會在文件中找到任何指定的字元時,移動範圍的結束字元位置。
    MoveStart 會移動所指定範圍的開始字元位置。
    MoveStartUntil 會移動指定之範圍的開始位置,直到在文件中找到其中一個指定的字元為止。
    MoveStartWhile 會在文件中找到任何指定的字元時,移動指定之範圍的開始位置。
    MoveUntil 會移動指定的範圍,直到在文件中找到其中一個指定的字元為止。
    MoveWhile 會在文件中找到任何指定的字元時,移動指定的範圍。
    Next 會傳回 Range 物件,代表指定的單位 (相對於指定的範圍而言)。
    NextSubdocument 會將範圍移動至下一個子文件。
    Paste 會在指定的範圍插入剪貼簿的內容。
    PasteAndFormat 會貼上選取的表格儲存格,並依指定格式化表格儲存格。
    PasteAppendTable 會將貼上的列插入所選的列之間,而將貼上的儲存格合併到現有表格中。不會覆寫儲存格。
    PasteAsNestedTable 會將儲存格或儲存格群組當做巢狀表格,貼到選取的範圍內。
    PasteExcelTable 會貼上並格式化 Microsoft Excel 表格。
    PasteSpecial 會插入 [剪貼簿] 的內容。
    PhoneticGuide 將注音標示加入至指定的範圍。
    Previous 會傳回前一個範圍 (相對於指定的範圍而言)。
    PreviousSubdocument 會將範圍移動至前一個子文件。
    Relocate 在大綱模式中,將指定範圍內的段落移至下一個可見段落之後或上一個可見段落之前。
    Select 會選取指定的範圍。
    SetListLevel 會在編號清單中設定一個或多個項目的清單階層。
    SetRange 會設定現有範圍的開始字元及結束字元位置。
    Sort 會排序指定之範圍內的段落。
    SortAscending 會依遞增英數字元順序排序段落或表格列。
    SortDescending 會依英數字元的遞減順序排序段落。
    StartOf 將指定範圍或選取項目的開始位置移動或延伸至最接近指定文字單位的開頭。這個方法會傳回 Long,表示移動或延伸此範圍或選取項目所依據的字元數。如果移動是在文件中向後進行,這個方法就會傳回負數。
    TCSCConverter 將指定的範圍從繁體中文轉換成簡體中文,反之亦然。
    WholeStory 會將範圍展開成包含整個本文 (本文:包含的文字範圍與文件中其他文字區域有所不同的文件區域。例如,如果文件包括本文、註腳及標題,則它包含主要本文、註腳本文及標題本文。)

    屬性

    名稱 描述
    Application 會傳回代表 Microsoft Word 應用程式的 Application 物件。
    Bold 如果範圍會格式化為粗體,則為 True。可讀寫的 Long
    BoldBi True 表示會將字型或範圍設為粗體格式。會傳回 TrueFalsewdUndefined (如果可以混合粗體與非粗體文字)。此屬性可以設為 TrueFalsewdToggle。可讀寫的 Long
    BookmarkID 會傳回內含指定範圍之開頭的書籤號碼。如果沒有相對應的書籤,則會傳回 0 (零)。唯讀的 Long
    Bookmarks 會傳回代表位於某文件、範圍或選取區內之所有書籤的 Bookmarks 集合。唯讀的。
    Borders 會傳回代表指定之物件所有框線的 Borders 集合。
    Case 會傳回或設定 WdCharacterCase 常數,代表所指定範圍中之文字的大小寫。可讀寫的。
    Cells 會傳回代表指定範圍內表格儲存格的 Cells 集合。唯讀的。
    Characters 會傳回代表指定範圍內字元的 Characters 集合。唯讀的。
    CharacterStyle 會傳回 Variant,代表用來設定一個或多個字元之格式的樣式。唯讀的。
    CharacterWidth 會傳回或設定所指定範圍的字元寬度。可讀寫的 WdCharacterWidth
    Columns 會傳回代表指定的範圍內所有表格欄的 Columns 集合。唯讀的。
    CombineCharacters 如果指定的範圍含有組排文字,則為 True。可讀寫的 Boolean
    Comments 會傳回代表位於指定的文件、選取區或範圍內所有註解的 Comments 集合。唯讀的。
    Conflicts 會傳回含有某範圍內所有衝突物件的 Conflicts 集合物件。唯讀的。
    ContentControls 會傳回代表某範圍所包含之內容控制項的 ContentControls 集合。唯讀的。
    Creator 會傳回 32 位元整數指出用以建立指定之物件的應用程式。唯讀的 Long
    DisableCharacterSpaceGrid 如果 Microsoft Word 會略過相對應 Range 物件中每行之字元的數目,則為 True。可讀寫的 Boolean
    Document 會傳回與指定的範圍相關聯的 Document 物件。唯讀的。
    Duplicate 會傳回代表指定範圍的所有屬性的唯讀 Range 物件。
    Editors 會傳回 Editors 物件,代表已獲授權可修改文件中選取範圍或指定範圍的所有使用者。
    EmphasisMark 會傳回或設定字元或指定字元字串的強調標記。可讀寫的 WdEmphasisMark
    End 會傳回或設定範圍的結束字元位置。可讀寫的 Long
    EndnoteOptions 會傳回代表指定範圍中章節附註的 EndnoteOptions 物件。
    Endnotes 會傳回代表某範圍內所有章節附註的 Endnotes 集合。唯讀的。
    EnhMetaFileBits 會傳回代表如何在文字範圍中顯示圖片的 Variant
    Fields 會傳回代表某範圍內所有功能變數的 Fields 集合。唯讀的。
    Find 會傳回含有尋找作業之準則的 Find 物件。唯讀的。
    FitTextWidth 會傳回或設定 Microsoft Word 要在目前選取範圍或指定範圍中放入文字的寬度 (目前的測量單位)。可讀寫的 Single
    Font 會傳回或設定代表指定的物件之字元格式設定的 Font 物件。可讀寫的 Font
    FootnoteOptions 會傳回代表選取範圍或指定範圍中註腳的 FootnoteOptions 物件。
    Footnotes 會傳回代表某範圍內所有註腳的 Footnotes 集合。唯讀的。
    FormattedText 會傳回或設定 Range 物件,其中包含指定範圍或選取範圍中已格式化的文字。可讀寫的。
    FormFields 會傳回代表某範圍內所有表單欄位的 FormFields 集合。唯讀的。
    Frames 會傳回代表某範圍內所有圖文框的 Frames 集合。唯讀的。
    GrammarChecked 如果已經在指定的範圍或文件上執行文法檢查,則為 True。可讀寫的 Boolean
    GrammaticalErrors 會傳回代表指定的文件或範圍內未通過文法檢查之句子的 ProofreadingErrors 集合。唯讀的。
    HighlightColorIndex 會傳回或設定所指定範圍的醒目提示色彩。可讀寫的 WdColorIndex
    HorizontalInVertical 會傳回或設定直書文字內所設的橫書文字格式。可讀寫的 WdHorizontalInVerticalType
    HTMLDivisions 傳回代表 Web 文件中 HTML 分割的 HTMLDivisions 物件。
    Hyperlinks 會傳回代表指定範圍內所有超連結的 Hyperlinks 集合。唯讀的。
    ID 會傳回或設定指定範圍的識別名稱。可讀寫的 String
    Information 會傳回指定範圍的詳細資訊。唯讀的 Variant
    InlineShapes 會傳回代表範圍內所有 InlineShapes 物件的 InlineShape 集合。唯讀的。
    IsEndOfRowMark 如果指定的範圍是摺疊的,並且是在表格的列尾標記處,則為 True。唯讀的 Boolean
    Italic 如果將字型或範圍設定成斜體格式,則為 True。可讀寫的 Long
    ItalicBi 如果將字型或範圍設定成斜體格式,則為 True。可讀寫的 Long
    Kana 會傳回或設定所指定範圍的日文語言文字為平假名或片假名。可讀寫的 WdKana
    LanguageDetected 會傳回或設定值,指定 Microsoft Word 是否已經偵測到所指定文字的語言。可讀寫的 Boolean
    LanguageID 會傳回或設定代表所指定範圍之語言的 WdLanguageID 常數。可讀寫的。
    LanguageIDFarEast 會傳回或設定所指定物件的東亞語言。可讀寫的 WdLanguageID
    LanguageIDOther 會傳回或設定指定範圍的語言。可讀寫的 WdLanguageID
    ListFormat 會傳回代表某範圍之所有清單格式特性的 ListFormat 物件。唯讀的。
    ListParagraphs 會傳回代表範圍中所有編號段落的 ListParagraphs 集合。唯讀的。
    ListStyle 會傳回 Variant,代表用來設定項目符號清單或編號清單之格式的樣式。唯讀的。
    Locks 會傳回代表某範圍內所有鎖定的 CoAuthLocks 集合物件。唯讀的。
    NextStoryRange 會傳回代表下一個本文 (本文:包含在單一文字方塊或連結文字方塊鏈內的文字。)Range 物件。唯讀的 Range
    NoProofing 如果拼字及文法檢查會忽略指定的文字,則為 True。可讀寫的 Long
    OMaths 會傳回代表指定之範圍內 OMath 物件的 OMaths 集合。唯讀的。
    Orientation 會傳回或設定啟用直書/橫書功能時,範圍內文字的方向。可讀寫的 WdTextOrientation
    PageSetup 會傳回與指定範圍關聯的 PageSetup 物件。
    ParagraphFormat 會傳回或設定代表所指定範圍之段落設定的 ParagraphFormat 物件。可讀寫的。
    Paragraphs 會傳回代表指定範圍中所有段落的 Paragraphs 集合。唯讀的。
    ParagraphStyle 會傳回 Variant,代表用來設定段落之格式的樣式。唯讀的。
    Parent 會傳回 Object,表示指定之 Range 物件的父物件。
    ParentContentControl 會傳回 ContentControl 物件,代表指定之範圍的上層內容控制項。唯讀的。
    PreviousBookmarkID 會傳回在指定範圍之前或相同位置開始的上一個書籤名稱。唯讀的 Long
    ReadabilityStatistics 會傳回代表指定的文件或範圍之可讀性統計的 ReadabilityStatistics 集合。唯讀的。
    Revisions 會傳回代表範圍中追蹤修訂的 Revisions 集合。唯讀的。
    Rows 會傳回代表範圍中所有表格列的 Rows 集合。唯讀的。
    Scripts 會傳回代表指定的物件中之 HTML 指令碼集合的 Scripts 集合。
    Sections 會傳回代表指定範圍中章節的 Sections 集合。唯讀的。
    Sentences 會傳回代表指定範圍中所有句子的 Sentences 集合。唯讀的。
    Shading 會傳回 Shading 物件,參照指定物件的網底格式設定。
    ShapeRange 會傳回代表指定之範圍內所有 Shape 物件的 ShapeRange 集合。唯讀的。
    ShowAll 如果會顯示所有非列印字元 (例如隱藏文字、定位標記、空白標記和段落標記),則為 True。可讀寫的 Boolean
    SpellingChecked True 表示整個指定範圍或文件的拼字都經過檢查;False 表示全部或部分範圍或文件的拼字尚未經過檢查。可讀寫的 Boolean
    SpellingErrors 會傳回 ProofreadingErrors 集合,代表識別指定範圍內錯誤的文字。唯讀的。
    Start 會傳回或設定範圍的起始字元位置。可讀寫的 Long
    StoryLength 會傳回含有指定範圍之本文 (本文:包含的文字範圍與文件中其他文字區域有所不同的文件區域。例如,如果文件包括本文、註腳及標題,則它包含主要本文、註腳本文及標題本文。)中的字元數目。唯讀的 Long
    StoryType 會傳回指定範圍、選取範圍或書籤的本文 (本文:包含在單一文字方塊或連結文字方塊鏈內的文字。)類型。唯讀的 WdStoryType
    Style 會傳回或設定指定物件的樣式。可讀寫的 Variant
    Subdocuments 會傳回代表指定範圍內所有子文件的 Subdocuments 集合。唯讀的。
    SynonymInfo 會傳回 SynonymInfo 物件,這個物件含有來自同義字字典的資訊 (範圍中之內容的同義字、反義字或相關字與運算式)。
    Tables 會傳回代表指定範圍中所有表格的 Tables 集合。唯讀的。
    TableStyle 會傳回 Variant,代表用來設定表格之格式的樣式。唯讀的。
    Text 會傳回或設定指定之範圍或選取範圍中的文字。可讀寫的 String
    TextRetrievalMode 會傳回控制如何從指定的 Range 擷取文字的 TextRetrievalMode 物件。可讀寫的。
    TopLevelTables 會傳回 Tables 集合,代表位於目前範圍內最外緣巢狀階層的表格。唯讀的。
    TwoLinesInOne 會傳回或設定 Microsoft Word 是否將兩行文字設定為一行,並指定要括住該文字 (如果有的話) 的字元。可讀寫的 WdTwoLinesInOneType
    Underline 會傳回或設定套用到範圍的底線類型。可讀寫的 WdUnderline
    Updates 會傳回代表某範圍內所有可用更新的 CoAuthUpdates 集合物件。唯讀的。
    WordOpenXML 會傳回 String,代表包含在範圍內格式為 Microsoft Word Open XML 的 XML。唯讀的。
    Words 會傳回代表範圍內所有文字的 Words 集合。唯讀的。
    XML 會傳回 String,代表指定之物件中的 XML 文字。
    XMLNodes 會傳回代表指定的範圍內之 XML 元素的 XMLNodes 集合 - 包括僅局部位於該範圍內的任何元素。唯讀的。
    XMLParentNode 會傳回代表某範圍之父系 XML 節點的 XMLNode 物件。唯讀的。

    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年6月27日 下午 01:49
  • 感謝您的回覆..不過我現找不到頭緒的是late bind 的寫法 我先參考一下另兩位前輩提供的資訊先
    2011年6月28日 上午 02:19
  • Hi,

    早期繫結跟晚期繫結的寫法應該是對應的

    像您提到的"很想搞清楚到底要怎麼下那堆 invoke的東東"

    就是阿尼所提的反射才是

    你先從反射語法搞懂應該自然能參考早期繫結的處理方式

    並將其轉換成晚期繫結的處理方法

     

    像是下面這篇

    Office 方案中的晚期繫結

    http://msdn.microsoft.com/zh-tw/library/3xxe951d.aspx

     

    裡面提到的範例也就只是透過反射去設定屬性值

    Word.Dialog dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
    System.Type dialogType = typeof(Word.Dialog);
    
    // Set the Name property of the dialog box.
    dialogType.InvokeMember("Name", 
      System.Reflection.BindingFlags.SetProperty | 
        System.Reflection.BindingFlags.Public | 
        System.Reflection.BindingFlags.Instance,
      null, dialog, new object[] { "Testing" },
      System.Globalization.CultureInfo.InvariantCulture);


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2011年6月28日 上午 07:40
  • 感謝回覆 現也是朝 reflection的方向去找 只是invokemember 後接的第一個參數 我知道他是要接方法或 物件...不過 找不到有什麼可以列出所有該物件的方法或物件的 程式...所以卡住 我想 earlybind 和 late bind 是應該有相對應的寫法 像現 try 的

     object bookMark = "\\endofdoc";
                Type applicationType = Type.GetTypeFromProgID("Word.Application");
                object applicationObject = Activator.CreateInstance(applicationType);
                object documentsObject = applicationType.InvokeMember("Documents",
    System.Reflection.BindingFlags.GetProperty,
                 null, applicationObject, null);
                applicationType.InvokeMember("Visible", System.Reflection.BindingFlags.SetProperty, null, applicationObject,
                 new object[] { true });
                Type documentsType = documentsObject.GetType();
                object documentObject = documentsType.InvokeMember("Add", BindingFlags.InvokeMethod, null, documentsObject,
                 new Object[] { @"C:\T.doc" });
                Type documentType = documentObject.GetType();
                object fieldsBookMarks = documentType.InvokeMember("BookMarks", BindingFlags.GetProperty, null, documentObject, null);
                Type typeBookMarks = fieldsBookMarks.GetType();
                 bookMark = typeBookMarks.InvokeMember("item", BindingFlags.InvokeMethod, null, fieldsBookMarks, new object[] { bookMark });
                Type type = bookMark.GetType();

                object Range = type.InvokeMember("Range", BindingFlags.GetProperty, null, bookMark, null); 
    ///////////////// run 起 來語法沒錯可是卻沒有預期 的效果->把游標移到word 的最後處  

     

    而先前try 的

     

                object wordapp;

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

                MemberInfo[] memberInfos = wordType.FindMembers(MemberTypes.All,BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static,null, null);

                foreach (MemberInfo member in memberInfos)

                {

                    Debug.Print  (member.MemberType.ToString()+ "|"+ member.Name.ToString());

                }  

    /////////////所列出的又看不到之前用過的 "open" "add" "quit" 等方法 所以才在頭痛

     


    2011年6月29日 上午 02:49
  • 參考 Word文件 

    移動游標到指定書籤巨集的寫法

    Selection.Goto what:=wdGoToBookmark, which:=wdGoToAbsolute, Count:=1, Name:="EndOfDoc"

    //wdGoToBookmark = -1 , wdGoToAbsolute = 1

    物件 , 方法名稱 , 相關的參數都有了

    改為C# 就請自行努力囉


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2011年6月29日 上午 09:43