C# vsto 外接程序
外接程序直接操作word
using Word = Microsoft.Office.Interop.Word;
Word.Application wordApp = Globals.ThisAddIn.Application;
if (wordApp.Documents.Count > 0)
{
foreach (Word.Document doc in wordApp.Documents)
{
if (doc.Windows.Count > 0 && doc.Windows[1].Visible == true)
{
// 找到第一个可见的文档窗口
Console.WriteLine($"找到文档: {doc.Name}");
break;
}
}
}
else
{
Console.WriteLine("没有打开的文档。");
}
Word.Application wordApp = Globals.ThisAddIn.Application;
// 确保有打开的文档
if (wordApp.Documents.Count > 0)
{
Word.Document doc = wordApp.Documents[1]; // 获取第一个打开的文档
// 在文档上执行操作
}
else
{
MessageBox.Show("没有打开的文档!");
}
using Word = Microsoft.Office.Interop.Word;
using System.Runtime.InteropServices;
public void EnsureActiveDocument()
{
try
{
Word.Application wordApp = Globals.ThisAddIn.Application;
// 确保应用程序是可见的
wordApp.Visible = true;
// 检查是否有打开的文档
if (wordApp.Documents.Count > 0)
{
// 尝试获取 ActiveDocument
Word.Document doc = wordApp.ActiveDocument;
if (doc != null)
{
Console.WriteLine($"当前活动文档: {doc.Name}");
}
else
{
Console.WriteLine("ActiveDocument 返回 null,尝试查找其他打开的文档...");
// 遍历所有打开的文档
bool foundActiveDoc = false;
foreach (Word.Document document in wordApp.Documents)
{
if (document.Windows.Count > 0 && document.Windows[1].Visible == true)
{
Console.WriteLine($"找到文档: {document.Name}");
foundActiveDoc = true;
break;
}
}
if (!foundActiveDoc)
{
Console.WriteLine("没有找到可见的活动文档。");
}
}
}
else
{
Console.WriteLine("没有打开的文档。");
}
}
catch (COMException ex)
{
Console.WriteLine($"COM 错误: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"发生了一个未预期的错误: {ex.Message}");
}
}
winform直接操作word
using Word = Microsoft.Office.Interop.Word;
// 延迟访问活动文档
System.Threading.Tasks.Task.Delay(1000).ContinueWith(t =>
{
Word.Application wordApp;
try
{
// 尝试获取正在运行的 Word 应用实例
wordApp = (Word.Application)Marshal.GetActiveObject("Word.Application");
}
catch (COMException)
{
// 如果没有正在运行的 Word 应用,则启动一个新的实例
wordApp = new Word.Application();
}
// 确保 Word 应用程序可见
wordApp.Visible = true;
string str = wordApp.Name;
// 执行你需要的操作
if (wordApp.Documents.Count > 0)
{
Word.Document doc = wordApp.ActiveDocument;
doc.Content.Text = "Hello from the Form!";
// 在文档上执行操作
}
else
{
MessageBox.Show("没有打开的文档!");
}
if (wordApp.Documents.Count > 0)
{
Word.Document doc = wordApp.ActiveDocument;
doc.Content.Text = "Hello from the Form!";
// 在文档上执行操作
}
else
{
MessageBox.Show("没有打开的文档!");
if (wordApp.Documents.Count == 0)
{
wordApp.Documents.Add(); // 打开一个新的文档
}
Word.Document doc = wordApp.ActiveDocument;
doc.Content.Text = "Hello from the Form!";
}
});