私はあなたの自動化の問題を解決するための2つの例を送られます。最初のものはMailMergeを使用し、もう1つはブックマークを使用しています。
ワードファイルは、次のようになります
差し込み印刷の使用(挿入 - >クイックパーツ - >フィールド - >差し込み印刷を - >フィールドをマージ) まず名前:«のfirstName» 姓:«lastNameの»
=======
ブックマークの使用(挿入 - >ブックマーク) まず名前: - 姓(<ブックマークはそれが見えないのです、ここにある):
、コードは以下の通りです:
使用ブックマーク
差し込み印刷
Open("D:/Doc1.doc");
foreach (Field myMergeField in oDoc.Fields)
{
//iTotalFields++;
Range rngFieldCode = myMergeField.Code;
String fieldText = rngFieldCode.Text;
// GET only MAILMERGE fields
if (fieldText.StartsWith(" MERGEFIELD"))
{
Int32 endMerge = fieldText.IndexOf("\\");
Int32 fieldNameLength = fieldText.Length - endMerge;
String fieldName = fieldText.Substring(11, endMerge - 11);
fieldName = fieldName.Trim();
if (fieldName == "firstName")
{
myMergeField.Select();
oWordApplic.Selection.TypeText("This Text Replaces the Field in the Template");
}
}
}
SaveAs("D:/Test/Doc2.doc"); Quit();
MessageBox.Show("The file is successfully saved!");
使用
Open("D:/Doc1.doc");
if (oDoc.Bookmarks.Exists("bkmFirstName"))
{
object oBookMark = "bkmFirstName";
oDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = textBox1.Text;
}
if (oDoc.Bookmarks.Exists("bkmLastName"))
{
object oBookMark = "bkmLastName";
oDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = textBox2.Text;
}
SaveAs("D:/Test/Doc2.doc"); Quit();
MessageBox.Show("The file is successfully saved!");
私はまた、いくつかのヘルパーメソッドを使用しました。
ApplicationClass oWordApplic = new Microsoft.Office.Interop.Word.ApplicationClass();
private Microsoft.Office.Interop.Word.Document oDoc = new Document();
public void Open(string strFileName)
{
object fileName = strFileName;
object readOnly = false;
object isVisible = true;
object missing = System.Reflection.Missing.Value;
oDoc = oWordApplic.Documents.Open(ref fileName, ref missing, ref readOnly,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing);
oDoc.Activate();
}
public void SaveAs(string strFileName)
{
object missing = System.Reflection.Missing.Value;
object fileName = strFileName;
oDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
}
public void Quit()
{
object missing = System.Reflection.Missing.Value;
oWordApplic.Application.Quit(ref missing, ref missing, ref missing);
}
この実装では、問題を解決するためのアイデアが得られることを願っています。
これは素晴らしいです!あなたは私を大きく救ったし、今私はこれで良いスタートをしている。私はこれを抽象化してフォーマットしようとするので、他のオーバーフローでもそれを使うことができます。 乾杯と感謝; Dave – Daver