Makale numarası: 301659 - Son Gözden Geçirme: 31 Ocak 2007 Çarşamba - Gözden geçirme: 7.5

Visual C# gelen adres mektup birleştirme gerçekleştirmek için Microsoft Word otomatikleştirme

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Bu makalenin Microsoft Visual Basic .NET sürümü için bkz: 301656  (http://support.microsoft.com/kb/301656/ ) .
Bu makalenin Microsoft Visual Basic 6.0 ve Microsoft Visual Basic 5.0 sürümü için bkz: 220607  (http://support.microsoft.com/kb/220607/ ) .

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, Microsoft Visual C# 2005 veya Microsoft Visual C#. NET'i kullanarak, posta birleştirilmiş bir belge oluşturmak için Microsoft Word otomatik hale getirmek gösterilmiştir.

Daha fazla bilgi

Otomasyon gibi diğer uygulamalar programsal olarak denetlemek için Visual C# 2005 veya Visual C# .NET dillerinde yazılmış uygulamaları izin veren bir işlemdir. Word'ün Otomasyon yeni belgeler oluşturma, belgelere metin ekleme ve belgeleri biçimlendirme gibi eylemleri gerçekleştirmek sağlar. Word ve diğer Microsoft Office uygulamaları ile hemen hemen tüm kullanıcı arabirimi aracılığıyla el ile gerçekleştirebileceği eylemleri de programsal olarak Otomasyon kullanarak gerçekleştirilebilir.

Word, nesne modeli aracılığıyla, programlı bu işlevselliği sunar. Nesne modeli, sınıflar ve Word'ün mantıksal bileşenlerine karşılık gelen hizmet yöntemleri topluluğudur. Örneğin, bir Uygulama nesnesi, bir belge nesnesi ve her biri Word bu bileşenleri işlevselliğinin içeren, bir paragraf nesnesi yok. Visual C# 2005 veya Visual C# .NET nesne modeline erişmek için <a0></a0>, bir proje başvurusu için tür kitaplığı ayarlayabilirsiniz.

Bu makalede, Visual C# .NET için uygun proje başvurusu <a0>Word</a0> türündeki kitaplığa nasıl gösterir ve Word otomatik hale getirmek için örnek kodu sağlar.

Otomasyon örneği oluşturma

  1. Microsoft Visual Studio 2005 veya Microsoft Visual Studio. NET'i başlatın.
  2. Dosya menüsünden Yeni ' yi tıklatın ve sonra Project ' i tıklatın. Windows uygulama Visual C# proje tiplerini seçin. Varsayılan olarak, Form1 oluşturulur.
  3. Başvuru, Visual Studio 2005'te Microsoft Word 11.0 Nesne Kitaplığı ' na veya Microsoft Word nesne kitaplığı, Visual Studio. NET'te ekleyin. Bunu yapmak için şu adımları izleyin:
    1. Proje) menüsünde Add Reference ' ı tıklatın.
    2. COM sekmesinde, Microsoft Word nesne kitaplığı ' nı bulun ve sonra da <a2>Seç</a2>'i tıklatın.

      Visual Studio 2005'te, Microsoft Word 11.0 Nesne KitaplığıCOM sekmesinde bulun.

      Not Microsoft Office 2003 Primary ınterop Assemblies (Pıa) içerir. Microsoft Office XP Pıa içermez, ancak bunlar yüklenebilir. Office XP Pıa hakkında'daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
      328912  (http://support.microsoft.com/kb/328912/ ) BILGI: Microsoft Office XP Pıa yükleme için kullanılabilir
    3. Seçimlerinizi kabul etmek için Tamam <a0>Başvuru Ekle</a0> iletişim kutusunda tıklatın.
  4. Görünüm menüsünde, araç kutusunu görüntülemek için araç seçin ve sonra da Form1'e bir düğme ekleyin.
  5. Button1</a1> çift tıklatın. Formun kod penceresi görüntülenir.
  6. Kod penceresinde aşağıdaki kodu
      private void button1_Click(object sender, System.EventArgs e)
      {
      }
    					
    ile Değiştir:
    Word.Application wrdApp;
    Word._Document wrdDoc;
    Object oMissing = System.Reflection.Missing.Value;
    Object oFalse = false;
    
    private void InsertLines(int LineNum)
    {
    	int iCount;
    
    	// Insert "LineNum" blank lines.	
    	for(iCount = 1; iCount<=LineNum; iCount++) 
    	{
    		wrdApp.Selection.TypeParagraph();
    	}
    }
    
    private void FillRow(Word._Document oDoc, int Row, string Text1,
    	string Text2, string Text3, string Text4)
    {
    	// Insert the data into the specific cell.
    	oDoc.Tables[1].Cell(Row,1).Range.InsertAfter(Text1);
    	oDoc.Tables[1].Cell(Row,2).Range.InsertAfter(Text2);
    	oDoc.Tables[1].Cell(Row,3).Range.InsertAfter(Text3);
    	oDoc.Tables[1].Cell(Row,4).Range.InsertAfter(Text4);
    }
    
    private void CreateMailMergeDataFile()
    {
    	Word._Document oDataDoc;
    	int iCount;
    
    	Object oName = "C:\\DataDoc.doc";
    	Object oHeader = "FirstName, LastName, Address, CityStateZip";
    	wrdDoc.MailMerge.CreateDataSource(ref oName,ref oMissing, 
    		ref oMissing,ref oHeader, ref oMissing, ref oMissing, 
    		ref oMissing, ref oMissing, ref oMissing);
    
    	// Open the file to insert data.
    	oDataDoc = wrdApp.Documents.Open(ref oName,ref oMissing,
    			ref oMissing, ref oMissing,ref oMissing,ref oMissing,
    			ref oMissing,ref oMissing,ref oMissing,ref oMissing,
    			ref oMissing,ref oMissing,ref oMissing,ref oMissing,
    			ref oMissing/*, ref oMissing */);
    
    	for (iCount=1; iCount<=2; iCount++)
    	{
    		oDataDoc.Tables[1].Rows.Add(ref oMissing);
    	}
    	// Fill in the data.
    	FillRow(oDataDoc, 2, "Steve", "DeBroux", 
    		"4567 Main Street", "Buffalo, NY  98052");
    	FillRow(oDataDoc, 3, "Jan", "Miksovsky", 
    		"1234 5th Street", "Charlotte, NC  98765");
    	FillRow(oDataDoc, 4, "Brian", "Valentine", 
    		"12348 78th Street  Apt. 214", 
    		"Lubbock, TX  25874");
    	// Save and close the file.
    	oDataDoc.Save();
    	oDataDoc.Close(ref oFalse, ref oMissing, ref oMissing);
    }
    
    private void button1_Click(object sender, System.EventArgs e)
    {
    	Word.Selection wrdSelection;
    	Word.MailMerge wrdMailMerge;
    	Word.MailMergeFields wrdMergeFields;
    	Word.Table wrdTable;
    	string StrToAdd;
    
    	// Create an instance of Word  and make it visible.
    	wrdApp = new Word.Application();
    	wrdApp.Visible = true;
    
    	// Add a new document.
    	wrdDoc = wrdApp.Documents.Add(ref oMissing,ref oMissing,
    		ref oMissing,ref oMissing);
    	wrdDoc.Select();
    
    	wrdSelection = wrdApp.Selection;
    	wrdMailMerge = wrdDoc.MailMerge;
    
    	// Create a MailMerge Data file.
    	CreateMailMergeDataFile();
    
    	// Create a string and insert it into the document.
    	StrToAdd = "State University\r\nElectrical Engineering Department";
    	wrdSelection.ParagraphFormat.Alignment  = 
    		Word.WdParagraphAlignment.wdAlignParagraphCenter;
    	wrdSelection.TypeText(StrToAdd);
    
    	InsertLines(4);
    
    	// Insert merge data.
    	wrdSelection.ParagraphFormat.Alignment = 
    		Word.WdParagraphAlignment.wdAlignParagraphLeft;
    	wrdMergeFields = wrdMailMerge.Fields;
    	wrdMergeFields.Add(wrdSelection.Range, "FirstName");
    	wrdSelection.TypeText(" ");
    	wrdMergeFields.Add(wrdSelection.Range, "LastName");
    	wrdSelection.TypeParagraph();
    
    	wrdMergeFields.Add(wrdSelection.Range, "Address");
    	wrdSelection.TypeParagraph();
    	wrdMergeFields.Add(wrdSelection.Range, "CityStateZip");
    
    	InsertLines(2);
    
    	// Right justify the line and insert a date field
    	// with the current date.
    	wrdSelection.ParagraphFormat.Alignment = 
    		Word.WdParagraphAlignment.wdAlignParagraphRight;
    
    	Object objDate = "dddd, MMMM dd, yyyy";
    	wrdSelection.InsertDateTime(ref objDate,ref oFalse,ref oMissing, 
    		ref oMissing, ref oMissing);
        
    	InsertLines(2);
    
    	// Justify the rest of the document.
    	wrdSelection.ParagraphFormat.Alignment = 
    		Word.WdParagraphAlignment.wdAlignParagraphJustify;    
    
    	wrdSelection.TypeText("Dear ");
    	wrdMergeFields.Add(wrdSelection.Range, "FirstName");
    	wrdSelection.TypeText(",");
    	InsertLines(2);
    
    	// Create a string and insert it into the document.
    	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.";
    	wrdSelection.TypeText(StrToAdd);
    
    	InsertLines(2);
    
    	// Insert a new table with 9 rows and 4 columns.
    	wrdTable = wrdDoc.Tables.Add(wrdSelection.Range,9,4, 
    		ref oMissing, ref oMissing);
    	// Set the column widths.
    	wrdTable.Columns[1].SetWidth(51, Word.WdRulerStyle.wdAdjustNone);
    	wrdTable.Columns[2].SetWidth(170, Word.WdRulerStyle.wdAdjustNone);
    	wrdTable.Columns[3].SetWidth(100, Word.WdRulerStyle.wdAdjustNone);
    	wrdTable.Columns[4].SetWidth(111, Word.WdRulerStyle.wdAdjustNone);
    	// Set the shading on the first row to light gray.
    	wrdTable.Rows[1].Cells.Shading.BackgroundPatternColorIndex = 
    		Word.WdColorIndex.wdGray25;
    	// Bold the first row.
    	wrdTable.Rows[1].Range.Bold = 1;
    	// Center the text in Cell (1,1).
    	wrdTable.Cell(1, 1).Range.Paragraphs.Alignment = 
    		Word.WdParagraphAlignment.wdAlignParagraphCenter;
    
    	// Fill each row of the table with data.
    	FillRow(wrdDoc, 1, "Class Number", "Class Name", 
    		"Class Time", "Instructor");
    	FillRow(wrdDoc, 2, "EE220", "Introduction to Electronics II", 
    		"1:00-2:00 M,W,F", "Dr. Jensen");
    	FillRow(wrdDoc, 3, "EE230", "Electromagnetic Field Theory I", 
    		"10:00-11:30 T,T", "Dr. Crump");
    	FillRow( wrdDoc, 4, "EE300", "Feedback Control Systems", 
    		"9:00-10:00 M,W,F", "Dr. Murdy");
    	FillRow(wrdDoc, 5, "EE325", "Advanced Digital Design", 
    		"9:00-10:30 T,T", "Dr. Alley");
    	FillRow(wrdDoc, 6, "EE350", "Advanced Communication Systems", 
    		"9:00-10:30 T,T", "Dr. Taylor");
    	FillRow(wrdDoc, 7, "EE400", "Advanced Microwave Theory", 
    		"1:00-2:30 T,T", "Dr. Lee");
    	FillRow(wrdDoc, 8, "EE450", "Plasma Theory",
    		"1:00-2:00 M,W,F", "Dr. Davis");
    	FillRow(wrdDoc, 9, "EE500", "Principles of VLSI Design", 
    		"3:00-4:00 M,W,F", "Dr. Ellison");
    
    	// Go to the end of the document.
    	Object oConst1 = Word.WdGoToItem.wdGoToLine;
    	Object oConst2 = Word.WdGoToDirection.wdGoToLast;
    	wrdApp.Selection.GoTo(ref oConst1,ref oConst2,ref oMissing,ref oMissing);
    	InsertLines(2);
    
    	// Create a string and insert it into the document.
    	StrToAdd = "For additional information regarding the " +
    		"Department of Electrical Engineering, " +
    		"you can visit our Web site at ";
    	wrdSelection.TypeText(StrToAdd);
    	// Insert a hyperlink to the Web page.
    	Object oAddress = "http://www.ee.stateu.tld";
    	Object oRange = wrdSelection.Range;
    	wrdSelection.Hyperlinks.Add(oRange, ref oAddress,ref oMissing,
    		ref oMissing, ref oMissing, ref oMissing);
    	// Create a string and insert it into the document
    	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 " +
    		"555-1212.\r\n\r\n"  +
    		"Sincerely,\r\n\r\n" +
    		"Kathryn M. Hinsch\r\n" +
    		"Department of Electrical Engineering \r\n";
    	wrdSelection.TypeText(StrToAdd);
    
    	// Perform mail merge.
    	wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument;
    	wrdMailMerge.Execute(ref oFalse);
    
    	// Close the original form document.
    	wrdDoc.Saved = true;
    	wrdDoc.Close(ref oFalse,ref oMissing,ref oMissing);
    
    
    	// Release References.
    	wrdSelection = null;
    	wrdMailMerge = null;
    	wrdMergeFields = null;
    	wrdDoc = null;
    	wrdApp = null;
    
    	// Clean up temp file.
    	System.IO.File.Delete("C:\\DataDoc.doc");
    } 
    					
    <a1>Not</a1> Visual Studio 2005'te kodunu değiştirmeniz gerekir. Windows Forms bir proje oluşturduğunuzda, varsayılan olarak, Visual C# bir form projeye ekler. Form1 form olarak adlandırılır. Form temsil eden iki dosya Form1.cs ve Form1.designer.cs olarak adlandırılır. Kodu, Form1.cs içinde yazın. Form1.designer.cs denetimleri araç Kutusu'ndan bırakarak gerçekleştirilen tüm eylemleri uygulayan kodu burada Windows Form Designer yazar dosyadır.

    Visual C# 2005'te Windows Forms Tasarımcısı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/ms173077.aspx (http://msdn2.microsoft.com/en-us/library/ms173077.aspx)
    Not Microsoft Office Word 2003 için Open yöntemi belgenin ek bir bağımsız değişken var. Word 2003 PIA kullanıyorsanız, ek parametresi Open yöntemi için açıklama gösterimde kaldırın.
  7. Aşağıdaki Form1.cs en üstüne ekleyin:
    using Word = Microsoft.Office.Interop.Word;
    					
  8. Oluşturmaya ve programı çalıştırmak için F5 tuşuna basın.
  9. Button1 Word Automation'ı başlatın ve adres-mektup birleştirme gerçekleştirmek için Ek Yardım düğmesini tıklatın.

Referanslar

Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
Visual Studio ile Microsoft Office geliştirme
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx (http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx)
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
285332  (http://support.microsoft.com/kb/285332/ ) Nasıl yapılır: Word 2002 adres mektup birleştirme oluşturmak için Visual Basic ile otomatikleştirme

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbpia kbautomation kbhowto KB301659 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:301659  (http://support.microsoft.com/kb/301659/en-us/ )