2015-05-21 1 views
2

Я пытаюсь автоматизировать задачу на C#, посредством которой я просматриваю изображения в файле word (docx) и меняю изображения на основе имени изображения (переименованного под панелью выбора). Кажется, я не могу найти, где получить доступ к свойству имени изображения?Как получить доступ к имени изображения из MS Word в C# .NET?

код теста:

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

namespace wordReplace 
{ 
    class Program 
    { 
     private static Word.Application app; 
     private static object yes = true; 
     private static object no = false; 
     private static object missing = System.Reflection.Missing.Value; 

     static void Main(string[] args) 
     { 
      try 
      { 
       app = new Word.Application(); 
       app.Visible = true; 
       Word.Document d; 
       object filename = @"C:\test.docx"; 
       d = app.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<Word.Range>(); 
       foreach (Word.InlineShape s in d.InlineShapes) 
       { 
        //need to access the image name property here!! 
       } 
       app.Quit(ref no, ref missing, ref missing); 
      } 
      catch (Exception x) 
      { 
       Console.WriteLine(x.Message); 
       app.Quit(ref no, ref missing, ref missing); 
      } 
     } 
    } 
} 

ответ

0

подписи к рисунку хранятся в виде полей, как показано ниже. Вам нужно перебирать полей в поисках кода поля «SEQ Рисунок * АРАБСКОГО»

enter image description here

+0

Спасибо за ответ, но я не вижу, как это отвечает на вопрос? Я ищу имя изображения (как показано в области выбора: Главная лента -> Раздел редактирования -> Выбрать -> Панель выбора ...) – jk777

0

Я знаю, что это старый, но, может быть, кто-то будет использовать его. Свойство Title InlineShape имеет имя изображения, заданное на панели выбора.
Пример:

 Microsoft.Office.Interop.Word.Application wordApplication = null; 
     Microsoft.Office.Interop.Word.Documents wordDocuments = null; 
     Microsoft.Office.Interop.Word.Document wordDocument = null;    
     try 
     { 
      wordApplication = new Microsoft.Office.Interop.Word.Application(); 
      wordDocuments = wordApplication.Documents; 
      wordDocument = wordDocuments.Open(documentPath); 
      foreach(Microsoft.Office.Interop.Word.InlineShape inlineShape in wordDocument.InlineShapes) 
      { 
       if (inlineShape.Title.Contains(imageTitleCriteria)) inlineShape.Delete(); 
      } 

     } 
     catch(Exception) 
     { 

     } 
     finally 
     { 

      if (wordDocument != null) 
      { 
       wordDocument.Close(false); 
       Marshal.ReleaseComObject(wordDocument); 
      } 
      if (wordDocuments != null) 
      { 
       wordDocuments.Close(false); 
       Marshal.ReleaseComObject(wordDocuments); 
      } 
      if (wordApplication != null) 
      { 
       wordApplication.Quit(false); 
       Marshal.ReleaseComObject(wordApplication); 
      } 
     }