На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> VB.net Не определен тип Microsoft.Office.Interop.Word.Application , Хотя подключены все необходимые компоненты.
    Задача: создание документа Word

    Код:
    ExpandedWrap disabled
      Dim w As New Microsoft.Office.Interop.Word.Application
              w.Documents.Open("C:\test.doc")
              w.ActiveWindow.Selection.TypeText("Жили у бабуси два весёлых гуся ...")
              w.Documents.Close()
              w.Quit()


    Ошибка:
    Type 'Microsoft.Office.Interop.Word.Application' is not defined.

    Word установлен 2002, в пакете Office XP.
    Есть библиотека
    Interop.Microsoft.Office.Core.dll и Interop.word.dll

    Причем, объектная библиотека msword.olb находится в папке office.
      А в Reference библиотека нужная прицеплена?
        Цитата Viper @
        А в Reference библиотека нужная прицеплена?

        Да, но я теперь решил использовать метод CreateObject вместо подключения interop. Код следующий:

        ExpandedWrap disabled
          Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                  'Dim w As New Microsoft.Office.Interop.Word.Application
                  Dim xls As Object
                  xls = CreateObject("Word.Application")
                  xls.Documents.Open("C:\test.doc")
                  xls.ActiveWindow.Selection.TypeText("Жили у бабуси два весёлых гуся ...")
                  'xls.Documents.visible()
                  'xls.Documents.Close()
                  'xls.Quit()
              End Sub


        Однако при выполнении строки xls.Documents.Open("C:\test.doc") пишет, что файл отсутствует. А как он может отсутствовать, если он только что создан xls = CreateObject("Word.Application") ?
          alt5000, кто тебе сказал, что командой xls = CreateObject("Word.Application") непременно должен создаться файл "C:\test.doc"? Ты всего лишь создаешь соотвествующий объект
            Цитата Viper @
            alt5000, кто тебе сказал, что командой xls = CreateObject("Word.Application") непременно должен создаться файл "C:\test.doc"? Ты всего лишь создаешь соотвествующий объект

            Хорошо, а как создать документ, непосредственно перед его открытием? Не подскажешь...
              Цитата alt5000 @
              Хорошо, а как создать документ

              правда на C#, думаю без проблем переведешь на VB...
              ExpandedWrap disabled
                Microsoft.Office.Interop.Word.ApplicationClass cWordApp = null;
                cWordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
                // предоставляет доступ к текущему документу
                Microsoft.Office.Interop.Word.Document cWordDocument = null;
                cWordDocument = new Microsoft.Office.Interop.Word.DocumentClass();
                            
                object msi = System.Reflection.Missing.Value;
                object cObject = (object) "c:\\1.doc"; // ссылка на готовый документ word
                            
                // открыть готовый документ ( предполагаем что он пустой )
                //cWordDocument = cWordApp.Documents.Open2000(ref cObject, ref msi, ref msi, ref msi, ref msi, ref msi, ref msi, ref msi, ref msi, ref msi, ref msi, ref msi);
                cWordDocument.Activate(); // активизируем его
                 
                cWordApp.Visible = true;
                ExpandedWrap disabled
                  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                          Dim xls As Object
                          xls = CreateObject("Word.Application")
                          xls.Visible = True
                          xls.Documents.Add()
                          xls.ActiveWindow.Selection.TypeText("Жили у бабуси два весёлых гуся ...")
                          xls.Documents.Save("c:\")
                          xls.Documents.Close()
                          xls.Quit()
                      End Sub


                вот твой вариант :whistle:
                  alt5000 Привет!
                  ExpandedWrap disabled
                    Хорошо, а как создать документ, непосредственно перед его открытием? Не подскажешь...

                  Можно так еще
                  ExpandedWrap disabled
                    using System.Runtime.InteropServices;
                    using System.Reflection;            
                     
                    string appProgID;
                    Type wordType;
                    object obWord;
                    object obDocWord;
                    object obDoc;
                     
                    object[] argsShablon = new object[1]; //используется для открытия готового документа Word
                    argsShablon[0] = @"C:\1.doc";         //используется для открытия готового документа Word
                     
                    appProgID = "Word.Application";
                    wordType = Type.GetTypeFromProgID(appProgID);
                     
                    obWord = Activator.CreateInstance(wordType);
                    obWord.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, obWord, new object[] { true });
                    obDoc = obWord.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, obWord, null);
                     
                    obDocWord = obDoc.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, obDoc, argsShablon); //Если используется готовый документ
                     
                    obDocWord = obDoc.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, obDoc, null);  //Новый документ
                     
                    Marshal.ReleaseComObject(obWord);
                    Marshal.ReleaseComObject(obDocWord);
                    Marshal.ReleaseComObject(obDoc);
                    GC.GetTotalMemory(true);
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0290 ]   [ 16 queries used ]   [ Generated: 12.11.25, 18:06 GMT ]