plakken in word

Status
Niet open voor verdere reacties.

Scoox

Gebruiker
Lid geworden
22 jan 2013
Berichten
100
hallo, kan iemand mij ver tellen hoe ik met een C# programma een gekopieerde word content in een ander word bestant plakken en dan daar onder weer een andere inhoud?
 
Heb je wat meer informatie over de omgeving?

Bewerken van Word kun je door middel van de office automation tools. De truc is vaak om in het document de juiste plaats te vinden om te plakken. Dat is een stuk minder triviaal in Word dan in bijvoorbeeld excel of powerpoint.

Waar loop je vast? interactie met Word? selecteren van de juiste text? plakken op de juiste locatie?
 
Word.Application oWord = new Word.Application();
Word.Document oWordDoc = new Word.Document();
Object oMissing = System.Reflection.Missing.Value;
object oTemplatePath = @"C:\\Documents and Settings\\Student\\Desktop\\ExportFiles\\" + "The_One.docx";
oWordDoc = oWord.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);
oWordDoc.ActiveWindow.Selection.WholeStory();
oWordDoc.ActiveWindow.Selection.Copy();
oWord.ActiveDocument.Select();
oWord.Visible = true;
oWordDoc.ActiveWindow.Selection.PasteAndFormat(Word.WdRecoveryType.wdPasteDefault);
 
Heb je wat meer informatie over de omgeving?

Bewerken van Word kun je door middel van de office automation tools. De truc is vaak om in het document de juiste plaats te vinden om te plakken. Dat is een stuk minder triviaal in Word dan in bijvoorbeeld excel of powerpoint.

Waar loop je vast? interactie met Word? selecteren van de juiste text? plakken op de juiste locatie?
Ik loop nu voor al vast met het plakken in een ander document. Het is namelijk de bedoeling dat ik van meerder e docx de tekst onder elkaar kan plakken. daar bedoel ik dan mee als ik de 1e knop in druk komt die text in dat lege document en bij de 2e knop dat dan de tekst er onder komt te staan
 
Word.Application oWord = new Word.Application();
Word.Document oWordDoc = new Word.Document();
Object oMissing = System.Reflection.Missing.Value;
object oTemplatePath = @"C:\\Documents and Settings\\Student\\Desktop\\ExportFiles\\" + "The_One.docx";
oWordDoc = oWord.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);
oWordDoc.ActiveWindow.Selection.WholeStory();
oWordDoc.ActiveWindow.Selection.Copy();
oWord.ActiveDocument.Select();
oWord.Visible = true;
oWordDoc.ActiveWindow.Selection.PasteAndFormat(Word.WdRecoveryType.wdPasteDefault);

Bedank ben nu al een stuk verder met plak gedeelte wilt alleen helaas niet naar mijn wensen werken ;) thnx any way
 
Let je wel op dat je sommige variabelen nog wel moet veranderen? :thumb:
 
Ik heb een beetje zitten klooien maar wilt niet echt lukken. Moet namelijk ook meerdere teksten van andere documenten er onder kunnen plakken zit er nu al bijna een week mee vast
 
Waar loop je nog vast dan? (zie ook mijn eerste post). "Lukt niet" geeft niet veel mogelijkheden om te helpen

Bovenstaande voorbeeld geeft een (minimaal) voorbeeld hoe om te gaan met word interactie. Gebaseerd hierop zou het moeten lukken om meerdere documenten te openen en te sluiten. Persoonlijk zou ik ".visible" weglaten omdat het de boel alleen maar vertraagt, maar voor de rest is die code voldoende voor laden en inlezen toch?

Geef eens concrete voorbeelden van wat er niet lukt en hoe je hebt proberen op te lossen.
 
het laden en in lezen werk. wat ik bedoelde was dat ik een 2e doc ook kan inlezen en dat die tekst er onder komt
 
Maar je kunt met dezelfde code toch een referentie aanmaken naar je 2de document?

Code:
// pseudocode om overzichtelijk te houden
Doc1 = oWord.Documents.Open(...);
Doc2 = oWord.Documents.Add(...);
Doc1.Copy();
Doc2.Paste();
Doc1.Close();
Doc1 = oWord.Documents.Open(...);
Doc1.Copy();
Doc2.Paste();
Doc1.Close();
// etc etc.
 
ik snap wat je bedoelt, maar ik weet dus nooit welk document er ingevoegd gaat worden. Het is namelijk de bedoeling dat er een stuk of 7/8 knoppen zijn en overal een tekst in waar mee je een offerte kan maken.
per knop moet de tekst er van onder elkaar komen.
 
Zolang je dat per knop regelt is dat toch niet zo'n probleem? Zolang je ergens een lijst filenames kunt koppelen kun je die de aan de procedure voeren.

Bovendien, indien het om een template gaat dat je wil vullen op standaard plaatsen heb je nog een aantal krachtige extra opties die je kunt gebruiken in Word.

Indien er geen speciale (word specifieke) opmaak van de tekst is, kun je ook gebruik maken van standaard tekst opties en hoef je niet te knippen en plakken uit andere documenten. Kijk dus nog eens goed naar je project en bepaal wat je echt nodig hebt.

Heb je echt Word-specifieke opmaak nodig? Zo nee, waarom dan geen (soort van) database met standaard (rich) tekst? Is de opmaak verder standaard? gebruik een word template met "bookmarks".

Heb je wel word-specifieke dingen nodig, waarom dan niet alle mogelijke opties in een enkel document (eventueel weer met bookmarks)?

Je hebt dus veel opties om uit te kiezen en de al deze aanpakken kunnen in principe werken, maar ik zou eerst beginnen op papier met een opzetje van hoe alles gaat werken en hoe de interfaces gaan zijn en dan pas verder gaan met programmeren.
 
thnx voor je reactie, Ik heb wel inderdaad opmaak er in. Hartelijkdank ik kan hier echt goed mee verder.
 
Maar je kunt met dezelfde code toch een referentie aanmaken naar je 2de document?

Code:
// pseudocode om overzichtelijk te houden
Doc1 = oWord.Documents.Open(...);
Doc2 = oWord.Documents.Add(...);
Doc1.Copy();
Doc2.Paste();
Doc1.Close();
Doc1 = oWord.Documents.Open(...);
Doc1.Copy();
Doc2.Paste();
Doc1.Close();
// etc etc.

dat doc1.paste plakt die hem dan in een nieuw doc of in doc1?
 
Als je de juiste (selection, range, target, bookmark) paste gebruikt in Doc1 (doc2 in voorbeeld)
 
Ik volg je even niet met range en zo ben nog niet zo erg ver in c#
 
Sorry, dat is ook "word" terminologie.

word.selection.paste
word.bookmarks(mybookmark).paste

Paste commando's gestuurd op "document" niveau in word creëren wel een nieuwe document, maar commando's gestuurd naar text elementen, pagina referenties, tabellen etc. plakken de geselecteerde tekst in dat element. Als je dus een paste uitvoert op een tabel in Word, wordt de betreffende tekst in die tabel geplakt.
Code:
Doc2.Bookmarks("bookmark1").Paste

Plakt de tekst dus in document2, in / achter de bookmark genaamd 'bookmark1'
 
Ik heb nu dit. alleen krijg allerlij errors zeg maar van Doc.1/2 waar en hoe moet ik die dan gaan benoemen.

ik weet van de error met de 3 punten trouwens maar heb ik even zo gehouden voor het makkelijk lees baar te houde

Code:
Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document oWordDoc = new Microsoft.Office.Interop.Word.Document();
            Object oMissing = System.Reflection.Missing.Value;
            oWordDoc.ActiveWindow.Selection.WholeStory();
            oWordDoc.ActiveWindow.Selection.Copy();
            oWord.ActiveDocument.Select();
            oWord.Visible = true;
            oWordDoc.ActiveWindow.Selection.PasteAndFormat(Microsoft.Office.Interop.Word.WdRecoveryType.wdPasteDefault);
            Doc1 = oWord.Documents.Open(...);
            Doc2 = oWord.Documents.Add(...);
            Doc1.Copy();
            Doc2.Bookmarks("bookmark1").Paste
            Doc1.Close();
            Doc1 = oWord.Documents.Open(...);
            Doc1.Copy();
            Doc2.Bookmarks("bookmark1").Paste
            Doc1.Close();
 
Code:
            Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document Doc1 = new Microsoft.Office.Interop.Word.Document();
            Microsoft.Office.Interop.Word.Document Doc2 = new Microsoft.Office.Interop.Word.Document();
            Object oMissing = System.Reflection.Missing.Value;
            Doc1.ActiveWindow.Selection.WholeStory();
            Doc1.ActiveWindow.Selection.Copy();
            oWord.ActiveDocument.Select();
            oWord.Visible = true;
            Doc2.ActiveWindow.Selection.PasteAndFormat(Microsoft.Office.Interop.Word.WdRecoveryType.wdPasteDefault);

of

Code:
            Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document Doc1 = new Microsoft.Office.Interop.Word.Document();
            Microsoft.Office.Interop.Word.Document Doc2 = new Microsoft.Office.Interop.Word.Document();
  
            Doc1 = oWord.Documents.Open("test.doc");
            Doc2 = oWord.Documents.Add();
            Doc1.Visible = true;
            Doc2.Visible = true;
            Doc1.Content.Copy();
            Doc2.Content.Paste();
 
Thnx heb alleen 1 vraagje hoe kan ik de .Visible = true; gebruiken ?

Error 1 'Microsoft.Office.Interop.Word.Document' does not contain a definition for 'Visible' and no extension method 'Visible' accepting a first argument of type 'Microsoft.Office.Interop.Word.Document' could be found (are you missing a using directive or an assembly reference?) \\exit-dc\users\sebastiaan\my documents\visual studio 2012\Projects\copy form fiel to file\copy form fiel to file\Form1.cs 34 18 copy form fiel to file
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan