Я создал приложение ac # для создания писем-тиклеров.Мое намерение состоит в том, чтобы программа создала и напечатала буквы, а затем закрыла слово без необходимости какого-либо пользовательского ввода.Если я использую letter1.Close ();исключение выдается при создании второй буквы.Если я не использую оператор close, то пользователь должен ответить на диалог сохранения для каждой буквы.Я не хочу сохранять письма и хочу избежать этого, поскольку процесс может произвести десятки писем.Какие-либо предложения?Я использую Visual Studio 2015 и Word 2010. The Letter1.Close ();выдает исключение: вызванный объект отключился от своих клиентов.(Исключение из HRESULT: 0x80010108 (RPC_E_DISCONNECTED))
TIA - Линда
var application = new Microsoft.Office.Interop.Word.Application();
var template1 = new Microsoft.Office.Interop.Word.Document();
var letter1 = new Microsoft.Office.Interop.Word.Document();
application.Visible = true;
//CreateMailMergeDataFile();
string ConnectionName = "TRUEIBM";
iDB2Connection conn = new iDB2Connection(connectionString);
conn.Open();
iDB2Command cmd = conn.CreateCommand();
string sqlStmt = Scripts.sqlGetVendorsAbouttoExpire;
cmd.CommandText = sqlStmt;
DataSet ds = new DataSet();
iDB2DataAdapter adapter = new iDB2DataAdapter();
adapter.SelectCommand = new iDB2Command(sqlStmt, conn);
adapter.Fill(ds);
cmd.Dispose();
conn.Close();
string l_vendorName;
string l_space = new string(' ', 10);
string l_vendor_no_n6;
string l_date = DateTime.Now.ToString("MMMM dd, yyyy");
object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
object oMissing = System.Reflection.Missing.Value;
List<VendortoExpireModel> vendorstoExpireList =
new List<VendortoExpireModel>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
VendortoExpireModel VendorstoExpire = new VendortoExpireModel();
VendorstoExpire.Vendor_No_N6 = (dr "Vendor_No_N6"]);
l_vendor_no_n6 = Convert.ToString(dr["Vendor_No_n6"]);
VendorstoExpire.Vendor_Name = dr["Vendor_Name"].ToString();
l_vendorName = dr["Vendor_Name"].ToString().Trim();
VendorstoExpire.Address1 = dr["Address1"].ToString().Trim();
VendorstoExpire.Address2 = dr["Address2"].ToString().Trim();
VendorstoExpire.City = dr["City"].ToString().Trim();
VendorstoExpire.State_Abbr = dr["State_Abbr"].ToString().Trim();
VendorstoExpire.Zip = dr["Zip"].ToString().Trim();
vendorstoExpireList.Add(VendorstoExpire);
// Perform mail merge.
template1 = application.Documents.Add = blah
foreach (Microsoft.Office.Interop.Word.Field field in template1.Fields)
{
if(field.Code.Text.Contains("Vendor_Name"))
{
field.Select();
application.Selection.TypeText(VendorstoExpire.Vendor_Name);
}
else if(field.Code.Text.Contains("Address1") && VendorstoExpire.Address1 != "")
{
field.Select();
application.Selection.TypeText(VendorstoExpire.Address1);
}
//send to printer
letter1.PrintOut();
letter1.Close();
}