2009-07-15 52 views
6

Tôi đang cố thay đổi văn bản và hình ảnh trong tài liệu từ bằng cách sử dụng tự động hóa từ và C#. Tôi đã có nó làm việc tốt cho văn bản mà tôi làm một cái gì đó giống như đoạn dưới đây, nhưng tôi thậm chí không biết làm thế nào để bắt đầu để thay thế hình ảnh.Tự động hóa từ: Thay thế hình ảnh bằng C#

Bất kỳ trợ giúp nào được đánh giá cao!

Oliver

using Microsoft.Office.Interop.Word; 
... 

private static Application WordApp; 
private static object missing = System.Reflection.Missing.Value; 
private static object yes = true; 
private static object no = false; 

... 
object search; 
object replace; 

object replaceAll = 
    Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll; 

object filename = SourceFile; 
object destination = DestinationFile; 

Document d = WordApp.Documents.Open(
    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); 

d.Activate(); 
search = "OLDSTRING"; 
replace = "NEWSTRING"; 
WordApp.Selection.Find.Execute(
    ref search, ref yes, ref yes, ref no, ref no, ref no, ref yes, 
    ref missing, ref missing, ref replace, ref replaceAll, 
    ref missing, ref yes, ref missing, ref missing); 
+0

Tò mò những gì sắp xếp của giải pháp bạn đang cố gắng để thực hiện. Đây có phải là một chức năng mà bạn đang hiển thị bên trong Word add-in hoặc đó là một số loại tự động hóa hàng loạt từ một ứng dụng bên ngoài? Nếu bên ngoài, tôi muốn đi với việc ghi đè WordML thông qua OpenXML SDK cho năm 2007 hoặc thay vào đó là lộn xộn xung quanh w/xml nếu năm 2003. Nhanh hơn và dễ dàng hơn nhiều. –

+3

Chỉ là một gợi ý. Sử dụng VB. Nó sẽ làm cho cuộc sống của bạn trong đất COM Automation dễ dàng hơn. Để thay thế hình ảnh, bạn có thể nhìn vào 'Phạm vi' và có thể lặp qua văn bản và đối tượng trong khi tìm kiếm các loại đối tượng hình ảnh. –

+0

@roygbiv: +1. VB dễ dàng hơn nhiều cho việc tự động hóa COM – shahkalpesh

Trả lời

8

Bạn có thể lặp qua InlineShapes và thay thế những hình ảnh

using System.Collections.Generic; 
using Word = Microsoft.Office.Interop.Word; 

namespace WordExample 
{ 
    class WordExample 
    { 
     #region Constructor 
     public WordExample() 
     { 
      WordApp = new Microsoft.Office.Interop.Word.Application(); 
     } 
     #endregion 

     #region Fields 
     private Word.Application WordApp; 
     private object missing = System.Reflection.Missing.Value; 
     private object yes = true; 
     private object no = false; 
     private Word.Document d; 
     private object filename = @"C:\FullPathToFile\example.doc"; 
     #endregion 

     #region Methods 
     public void UpdateDoc() 
     { 
      d = WordApp.Documents.Open(ref filename, ref missing, ref no, ref missing, 
       ref missing, ref missing, ref missing, ref missing, ref missing, 
       ref missing, ref missing, ref yes, ref missing, ref missing, ref missing, ref missing); 
      List<Word.Range> ranges = new List<Microsoft.Office.Interop.Word.Range>(); 
      foreach (Word.InlineShape s in d.InlineShapes) 
      { 
       if (s.Type == Microsoft.Office.Interop.Word.WdInlineShapeType.wdInlineShapePicture) 
       { 
        ranges.Add(s.Range); 
        s.Delete(); 
       } 
      } 
      foreach (Word.Range r in ranges) 
      { 
       r.InlineShapes.AddPicture(@"c:\PathToNewImage\Image.jpg", ref missing, ref missing, ref missing); 
      } 
      WordApp.Quit(ref yes, ref missing, ref missing); 
     } 
     #endregion 
} 
} 
+1

Mã Excel! Nhưng nếu có thể xác định một hình ảnh vào vòng lặp? điều này là bởi vì tôi chỉ cần thay thế một hình ảnh trong dự án tự động hóa của tôi trước –

+0

Tôi biết điều này thực sự cũ, nhưng cách duy nhất bạn có thể thực sự nói với hình dạng là bằng cách thêm thông tin tùy chỉnh vào nó. Bạn có thể thêm một siêu liên kết và sử dụng địa chỉ, hoặc sử dụng các thuộc tính 'Title' hoặc' AlternativeText' (chúng được hiển thị trong hộp thoại 'Định dạng Ảnh', trong 'Văn bản thay thế'). – Chris

Các vấn đề liên quan