Αυτήν τη στιγμή είστε εκτός σύνδεσης, σε αναμονή για επανασύνδεση στο Internet
Είσοδος

Τρόπος αυτοματοποίησης του Microsoft Word για την εκτέλεση μιας συγχώνευσης αλληλογραφίας χρησιμοποιώντας το Visual C++ και MFC

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.

220911
Περίληψη
Το άρθρο αυτό παρουσιάζει πώς μπορείτε να δημιουργήσετε και να χειριστείτε ένα έγγραφο χρησιμοποιώντας αυτοματοποίηση από τη Microsoft Visual C++ και Microsoft Foundation Classes (MFC).
Περισσότερες πληροφορίες
Αυτό το άρθρο parallels ένα άρθρο της Γνωσιακής Βάσης της Microsoft που περιγράφει την ίδια διαδικασία χρησιμοποιώντας το Microsoft Visual Basic.Για περισσότερες πληροφορίες σχετικά με την αυτοματοποίηση του Word από τη Visual Basic, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
220607Τρόπος αυτοματοποίησης του Microsoft Word για να εκτελέσετε συγχώνευση αλληλογραφίας από τη Visual Basic

Δημιουργεί το δείγμα αυτοματοποίησης

  1. Ακολουθήστε τα βήματα 1 έως 12 στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft:
    178749Πώς μπορείτε να δημιουργήσετε ένα έργο της αυτοματοποίησης χρησιμοποιώντας MFC και μια βιβλιοθήκη τύπων
    ΣΗΜΕΙΩΣΗΣτο βήμα 9, επιλέξτε το σωστό τύπο βιβλιοθήκης για την έκδοση του Word να αυτοματοποιείτε. Ανατρέξτε στην ενότητα αναφορών παρακάτω για πληροφορίες στην εύρεση της βιβλιοθήκης τύπων σωστά.
  2. Προσθήκη τουΣυμπερίληψηπρόταση για το αρχείο κεφαλίδας που δημιουργήθηκε παραπάνω (msword8.h, msword9.h ή msword.h) σε AutoProjectDlg.cpp μετά τη δήλωση include για stdafx.h. Ένα παράδειγμα για το Word 97 είναι:
       #include "stdafx.h"   #include "msword8.h"					
  3. Προσθήκη κώδικα αυτοματοποίησης για τηνCAutoProjectDlg::OnRunη μέθοδος, έτσι ώστε να εμφανίζεται όπως φαίνεται παρακάτω:
    void CAutoProjectDlg::OnRun(){	_Application oWord;	Documents oDocs;	_Document oDoc;	Selection oSelection;	Paragraphs oParagraphs;	Tables oTables;	Table oTable;	Range oRange;	Columns oColumns;	Column oColumn;	Rows oRows;	Row oRow;	Cells oCells;	Cell oCell; 	Shading oShading;	Hyperlinks oHyperlinks;	MailMerge oMailMerge;	MailMergeFields oMailMergeFields;	COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),		        vtTrue((short)TRUE),				vtFalse((short)FALSE);	CString StrToAdd;	// Create an instance of Word	if (!oWord.CreateDispatch("Word.Application")) {		AfxMessageBox("Word failed to start!");	} else {	// Set the visible property	oWord.SetVisible(TRUE);	// Add a new document	oDocs = oWord.GetDocuments();	oDoc = oDocs.Add(vtOptional,vtOptional);	CreateMailMergeDataFile(&oWord,&oDoc);	// Add the address header	StrToAdd = "State University\r\nElectrical Engineering " \ 		       "Department";	oSelection = oWord.GetSelection();	oParagraphs = oSelection.GetParagraphs();	oParagraphs.SetAlignment(1);  // 1 = wdAlignParagraphCenter  	oSelection.TypeText(StrToAdd);	InsertLines(&oSelection,4);	oParagraphs.SetAlignment(0);  // 0 = wdAlignParagraphLeft	oMailMerge = oDoc.GetMailMerge();	oMailMergeFields = oMailMerge.GetFields();	oMailMergeFields.Add(oSelection.GetRange(),"FirstName");	oSelection.TypeText(" ");	oMailMergeFields.Add(oSelection.GetRange(),"LastName");	oSelection.TypeParagraph();	oMailMergeFields.Add(oSelection.GetRange(),"Address");	oSelection.TypeParagraph();	oMailMergeFields.Add(oSelection.GetRange(),"CityStateZip");	InsertLines(&oSelection,4);	// Set the paragraph alignment to Right justified	oParagraphs = oSelection.GetParagraphs();	oParagraphs.SetAlignment(2);  // 2 = wdAlignParagraphRight	// Insert the current date	oSelection.InsertDateTime(COleVariant("dddd, MMMM dd, yyyy"),\ 		 vtFalse,vtOptional);	InsertLines(&oSelection,2);	// Reset the justification to Justify	oParagraphs = oSelection.GetParagraphs();	oParagraphs.SetAlignment(3);  // 3 = wdAlignParagraphJustify	oSelection.TypeText("Dear ");	oMailMergeFields.Add(oSelection.GetRange(),"FirstName");	oSelection.TypeText(",");	InsertLines(&oSelection,2);	// Add the body of the message	StrToAdd = "Thank you for your recent request for next " \ 	       "semester's class schedule for the Electrical " \ 	       "Engineering Department.  Enclosed with this letter " \ 	       "is a booklet containing all the classes offered " \ 	       "next semester at State University.  Several new " \ 	       "classes will be offered in the Electrical " \    	       "Engineering Department next semester.  These " \ 	       "classes are listed below.";	oSelection.TypeText(StrToAdd);	InsertLines(&oSelection,2);		// Add a new table with 9 rows and 4 columns	oRange = oSelection.GetRange();	oTables = oDoc.GetTables();	oTable = oTables.Add(oRange,9,4);	// Set the width of each column	oColumns = oTable.GetColumns();	oColumn = oColumns.Item(1);	oColumn.SetWidth(51.0,0);  // 0 = wdAdjustNone	oColumn = oColumns.Item(2);	oColumn.SetWidth(198.0,0);  // 0 = wdAdjustNone	oColumn = oColumns.Item(3);	oColumn.SetWidth(100.0,0);  // 0 = wdAdjustNone	oColumn = oColumns.Item(4);	oColumn.SetWidth(111.0,0);  // 0 = wdAdjustNone	// Set the shading for row 1 to wdGray25	oRows = oTable.GetRows();	oRow = oRows.Item(1);	oCells = oRow.GetCells();	oShading = oCells.GetShading();	oShading.SetBackgroundPatternColorIndex(16); // 16 = wdGray25	// Turn on BOLD for the first row	oRange = oRow.GetRange();	oRange.SetBold(TRUE);	// Set the alignment for cell (1,1) to center	oCell = oTable.Cell(1,1);	oRange = oCell.GetRange();	oParagraphs = oRange.GetParagraphs();	oParagraphs.SetAlignment(1);  // 1 = wdAlignParagraphCenter	// Fill in the class schedule data	FillRow(&oTable,1,"Class Number","Class Name",\ 		"Class Time","Instructor");		FillRow(&oTable,2, "EE220", "Introduction to Electronics II", \ 		"1:00-2:00 M,W,F", "Dr. Jensen");	FillRow(&oTable,3, "EE230", "Electromagnetic Field Theory I", \ 		"10:00-11:30 T,T", "Dr. Crump");	FillRow(&oTable,4, "EE300", "Feedback Control Systems", \ 		"9:00-10:00 M,W,F", "Dr. Murdy");	FillRow(&oTable,5, "EE325", "Advanced Digital Design", \ 		"9:00-10:30 T,T", "Dr. Alley");	FillRow(&oTable,6, "EE350", "Advanced Communication Systems", \ 		"9:00-10:30 T,T", "Dr. Taylor");	FillRow(&oTable,7, "EE400", "Advanced Microwave Theory", \ 		"1:00-2:30 T,T", "Dr. Lee");	FillRow(&oTable,8, "EE450", "Plasma Theory", \ 		"1:00-2:00 M,W,F", "Dr. Davis");	FillRow(&oTable,9, "EE500", "Principles of VLSI Design", \ 		"3:00-4:00 M,W,F", "Dr. Ellison");	// Go to the end of the document	oSelection.GoTo(COleVariant((short)3), // 3 = wdGoToLine	COleVariant((short)-1),vtOptional,vtOptional);  // -1 = wdGoToLast	InsertLines(&oSelection,2);	// Add closing text	StrToAdd = "For additional information regarding the " \              "Department of Electrical Engineering, " \              "you can visit our website at ";	oSelection.TypeText(StrToAdd);	// Add a hyperlink to the homepage	oHyperlinks = oSelection.GetHyperlinks();	oHyperlinks.Add(oSelection.GetRange(),\ 		COleVariant("http://www.ee.stateu.tld"),vtOptional);	// Finish adding closing text	StrToAdd = ".  Thank you for your interest in the classes " \              "offered in the Department of Electrical " \              "Engineering.  If you have any other questions, " \              "please feel free to give us a call at (999) " \              "555-1212.\r\n\r\n" \              "Sincerely,\r\n\r\n" \              "Kathryn M. Hinsch\r\n" \              "Department of Electrical Engineering\r\n";	oSelection.TypeText(StrToAdd);	// Perform mail merge	oMailMerge.SetDestination(0); // 0 = wdSendToNewDocument	oMailMerge.Execute(vtFalse);	// Close the original form document	oDoc.SetSaved(TRUE);	oDoc.Close(vtFalse,vtOptional,vtOptional);  	}}					
  4. Εισαγάγετε τον ακόλουθο κώδικα παραπάνω στον κώδικα που έχει δοθεί στο βήμα 3:
    void InsertLines(Selection *pSelection, int NumLines){	int iCount;	// Insert NumLines blank lines	for (iCount = 1; iCount <= NumLines; iCount++)		pSelection->TypeParagraph();}void FillRow(Table *pTable,int Row, CString Text1, 			 CString Text2, CString Text3, CString Text4){	Cell oCell;	Range oRange;	// Insert data into the specific cell	oCell = pTable->Cell(Row,1);	oRange = oCell.GetRange();	oRange.InsertAfter(Text1);	oCell = pTable->Cell(Row,2);	oRange = oCell.GetRange();	oRange.InsertAfter(Text2);	oCell = pTable->Cell(Row,3);	oRange = oCell.GetRange();	oRange.InsertAfter(Text3);	oCell = pTable->Cell(Row,4);	oRange = oCell.GetRange();	oRange.InsertAfter(Text4);}void CreateMailMergeDataFile(_Application *pApp,_Document *pDoc){  _Document oDataDoc;  MailMerge oMailMerge;  Documents oDocs;  Tables oTables;  Table oTable;  Rows oRows;  int iCount;  COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),				vtFalse((short)FALSE);    // Create a data source at C:\DataDoc.doc containing the field data  oMailMerge = pDoc->GetMailMerge();  oMailMerge.CreateDataSource(COleVariant("C:\\DataDoc.doc"), \         vtOptional,vtOptional, \         COleVariant("FirstName, LastName, Address,CityStateZip"),\         vtOptional, vtOptional,vtOptional,vtOptional,vtOptional);  // Open the file to insert data  oDocs = pApp->GetDocuments();  oDataDoc = oDocs.Open(COleVariant("C:\\DataDoc.doc"), \        vtOptional,vtOptional,vtOptional,vtOptional,\        vtOptional,vtOptional,vtOptional,vtOptional,\        vtOptional);  oTables = oDataDoc.GetTables();  oTable = oTables.Item(1);  oRows = oTable.GetRows();  for (iCount=1; iCount<=2; iCount++)      oRows.Add(vtOptional);  // Fill in the data  FillRow(&oTable, 2, "Steve", "DeBroux", \         "4567 Main Street", "Buffalo, NY  98052");  FillRow(&oTable, 3, "Jan", "Miksovsky", \         "1234 5th Street", "Charlotte, NC  98765");  FillRow(&oTable, 4, "Brian", "Valentine", \         "12348 78th Street  Apt. 214", "Lubbock, TX  25874");  // Save and close the file  oDataDoc.Save();  oDataDoc.Close(vtFalse,vtOptional,vtOptional);}					
  5. Μεταγλώττιση και εκτέλεση του προγράμματος. Κάντε κλικ στην καρτέλαΕκτέλεσηκουμπί και το Microsoft Word θα πρέπει να ξεκινήσει και εμφανίζει ένα δείγμα επιστολής. Σημειώστε ότι ορισμένες μέθοδοι έχουν αλλάξει με το Word 2000 και Word 2002. Για περισσότερες πληροφορίες σχετικά με τις αλλαγές αυτές, ανατρέξτε στην ενότητα "Αναφορές".
Αναφορές

Σημειώσεις για την αυτοματοποίηση του Microsoft Word 2000 και το Microsoft Word 2002

Έχετε αλλάξει ορισμένες μεθόδους και ιδιότητες για το Microsoft Word 2000 και το Microsoft Word 2002.Για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης του δείγματος κώδικα σε αυτό το άρθρο, μαζί με τη βιβλιοθήκη τύπων του Word, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
224925Βιβλιοθήκες τύπων για το Office μπορεί να αλλάξει με νέα έκδοση
Για περισσότερες πληροφορίες σχετικά με την αυτοματοποίηση του Office, επισκεφθείτε την τοποθεσία υποστήριξης του Microsoft Office ανάπτυξης σε:
WD2003 WD2007

Προειδοποίηση: Αυτό το άρθρο είναι μεταφρασμένο αυτόματα

Ιδιότητες

Αναγνωριστικό άρθρου: 220911 - Τελευταία αναθεώρηση: 09/27/2010 19:50:00 - Αναθεώρηση: 2.0

  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
  • kbautomation kbhowto kbmt KB220911 KbMtel
Σχόλια