.NET Framework Developer Center >
Fóra .NET Development
>
.NET Development obecně
>
Programové sloučení vnořených dokumentů Wordu
Programové sloučení vnořených dokumentů Wordu
Dobrý den,
ve Wordu mám vytvořený dokument, který zahrnuje sadu vnořených dokumentů.
Nyní se snažím v rámci .NET aplikaci docílit programového sloučení tohoto dokumentu a jeho následného uložení, k čemuž využívám funkčnosti z Microsoft.Office.Interop.Word. Prostým uložením však docílím pouze vzniku dokumentu, který obsahuje pouze „odkazy“ na vnořené dokumenty – není prostě sloučený.
Můžete mně prosím poradit, jak docílím programového vzniku dokumentu, který bude obsahovat text ze všech vnořených dokumentů?
Děkuji,
Tomáš
Odpovědi
- Nemám po ruce PIA Microsoft.Office.Interop.Word, použiju však kód ve VBA, takže převod do .NETu by neměl být složitý.
Private Sub SlouceniVnorenychDokumentu()
Dim sDoc As Word.Subdocument
Dim sDocs As Word.Subdocuments
Dim dcDoc As Word.Document
Dim aDokumenty() As String
Dim i As Integer
Dim j As Integer
'Odkaz na vnořené dokumenty v aktuálním dokumentu
Set sDocs = ActiveDocument.Subdocuments
'Nastavení pole pro uchování cest ke vnořeným dokumentům
ReDim aDokumenty(sDocs.Count - 1)
'Procházení vnořených dokumentů a uložení informace o cestě do pole
For Each sDoc In sDocs
aDokumenty(i) = sDoc.name
i = i + 1
Next sDoc
'Vytvoření a (pro jistotu) aktivace nové dokumentu
Set dcDoc = Documents.Add
dcDoc.Activate
'V této fázi je vhodné zavřít původní hlavní dokument
'Také zde můžete procházet jednotlivé vnořené dokumenty, otevírat je ve Wordu
'a upravovat (např. odstranění zalomení oddílu, které je na konci dokumentu)
'Procházení pole s cestami ke vnořeným dokumentům a vkládání obsahu dokumentů do aktivního dokumentu
For j = 0 To i - 1
Selection.InsertFile aDokumenty(j), , False, False, False
Next j
End Sub
Boris Lehečka (Word, VBA, XML, C#, SQL)- Označen jako odpověďTom82 14. listopadu 2009 8:19
Všechny reakce
- Osobně bych asi zkusil celý dokument označit a překopírovat. Měla by na to stačit manipulace s vlastností Selection.
- Nemám po ruce PIA Microsoft.Office.Interop.Word, použiju však kód ve VBA, takže převod do .NETu by neměl být složitý.
Private Sub SlouceniVnorenychDokumentu()
Dim sDoc As Word.Subdocument
Dim sDocs As Word.Subdocuments
Dim dcDoc As Word.Document
Dim aDokumenty() As String
Dim i As Integer
Dim j As Integer
'Odkaz na vnořené dokumenty v aktuálním dokumentu
Set sDocs = ActiveDocument.Subdocuments
'Nastavení pole pro uchování cest ke vnořeným dokumentům
ReDim aDokumenty(sDocs.Count - 1)
'Procházení vnořených dokumentů a uložení informace o cestě do pole
For Each sDoc In sDocs
aDokumenty(i) = sDoc.name
i = i + 1
Next sDoc
'Vytvoření a (pro jistotu) aktivace nové dokumentu
Set dcDoc = Documents.Add
dcDoc.Activate
'V této fázi je vhodné zavřít původní hlavní dokument
'Také zde můžete procházet jednotlivé vnořené dokumenty, otevírat je ve Wordu
'a upravovat (např. odstranění zalomení oddílu, které je na konci dokumentu)
'Procházení pole s cestami ke vnořeným dokumentům a vkládání obsahu dokumentů do aktivního dokumentu
For j = 0 To i - 1
Selection.InsertFile aDokumenty(j), , False, False, False
Next j
End Sub
Boris Lehečka (Word, VBA, XML, C#, SQL)- Označen jako odpověďTom82 14. listopadu 2009 8:19


