/*
* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
* Version: 1
*/
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Word;
namespace Client.Chapter_19___Office_Integration
{
public class RunActiveObject
{
[STAThread]
static void Main(string[] args)
{
Word._Application MyWord = (Word._Application)Marshal.GetActiveObject("Word.Application");
MyWord.PrintPreview = true;
System.Windows.Forms.Application.Run();
}
}
}
Office
Create Word CommandBars
/*
* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
* Version: 1
*/
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
using Word;
using Office = Microsoft.Office.Core;
namespace Client.Chapter_19___Office_Integration
{
public class CreateCommandBars
{
[STAThread]
static void Main(string[] args)
{
Office.CommandBarButton Button;
Office.CommandBar CommandBar;
object Missing = System.Reflection.Missing.Value;
Office._CommandBarButtonEvents_ClickEventHandler ButtonHandler;
Word.ApplicationClass MyWord = new Word.ApplicationClass();
MyWord.Visible = true;
CommandBar = MyWord.CommandBars.Add("MyCommandBar", Missing, Missing, Missing);
Button = (Office.CommandBarButton)CommandBar.Controls.Add(Office.MsoControlType.msoControlButton, Missing, Missing, Missing, Missing);
Button.Caption = "MyButton";
Button.FaceId = 1845;
ButtonHandler = new Office._CommandBarButtonEvents_ClickEventHandler(OnClick_Button);
Button.Click += ButtonHandler;
System.Windows.Forms.Application.Run();
}
private void OnClick_Button(Office.CommandBarButton ctrl, ref bool cancel)
{
MessageBox.Show("This Worked!!!");
}
}
}
Modify Word Document Properties
/*
* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
* Version: 1
*/
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
using Word;
namespace Client.Chapter_19___Office_Integration
{
public class ModifyDocumentProperties
{
[STAThread]
static void Main(string[] args)
{
object Missing = Missing.Value;
object BuiltInProps;
object CustomProps;
Word._Document Doc;
Word.ApplicationClass MyWord = new Word.ApplicationClass();
MyWord.Visible = true;
Doc = MyWord.Documents.Add(ref Missing, ref Missing, ref Missing, ref Missing);
BuiltInProps = Doc.BuiltInDocumentProperties;
Type TypeBuiltingProp = BuiltInProps.GetType();
//Setting abuilt-in property
string Prop = "Author";
string PropValue;
object AuthorProp = TypeBuiltingProp.InvokeMember("item", BindingFlags.Default | BindingFlags.GetProperty, null, BuiltInProps, new Object[] { Prop });
Type TypeAuthorProp = AuthorProp.GetType();
PropValue = TypeAuthorProp.InvokeMember("Value", BindingFlags.Default | BindingFlags.GetProperty, null, AuthorProp, new Object[]{}).ToString();
System.Windows.Forms.Application.Run();
}
}
}
Using Office Events
/*
* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
* Version: 1
*/
using System;
using Excel;
using System.Reflection;
namespace Client.Chapter_19___Office_Integration
{
public class UsingOfficeEvents
{
public static AppEvents_WorkbookBeforeCloseEventHandler Event_BeforeBookClose;
public static DocEvents_ChangeEventHandler Event_ChangeEvent;
static void Main(string[] args)
{
Application MyExcel = new ApplicationClass();
Workbook MyWorkbook = MyExcel.Workbooks.Add(Missing.Value);
MyWorkbook.Windows.get_Item(1).Caption = "Using Delegates";
Worksheet MyWorksheet1 = (Worksheet)MyWorkbook.Worksheets.get_Item(1);
Worksheet MyWorksheet2 = (Worksheet)MyWorkbook.Worksheets.get_Item(2);
Worksheet MyWorksheet3 = (Worksheet)MyWorkbook.Worksheets.get_Item(3);
MyWorksheet1.Activate();
//Add Event Handler for the BeforeClose Event
Event_BeforeBookClose = new AppEvents_WorkbookBeforeCloseEventHandler(BeforeBookClose);
MyExcel.WorkbookBeforeClose += Event_BeforeBookClose;
//Add Event Handler for the change Event
Event_ChangeEvent = new DocEvents_ChangeEventHandler(CellChange);
MyWorksheet1.Change += Event_ChangeEvent;
MyWorksheet2.Change += Event_ChangeEvent;
MyWorksheet3.Change += Event_ChangeEvent;
MyExcel.Visible = true;
MyExcel.UserControl = true;
}
private static void CellChange(Range Target)
{
//Gets called when you change a cell
}
private static void BeforeBookClose(Workbook MyWorkbook, ref bool Cancel)
{
//Gets called before closing a workbook
}
}
}
Creating Office Applications
/*
* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
* Version: 1
*/
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Word;
namespace Client.Chapter_19___Office_Integration
{
public class CreatingOfficeApplications
{
[STAThread]
static void Main(string[] args)
{
Word.ApplicationClass MyWord = new Word.ApplicationClass();
MyWord.Visible = true;
System.Windows.Forms.Application.Run();
}
}
}