Sudarshan M S Ответов: 1

Ошибка: 80040154 класс не зарегистрирован


Я пытаюсь работать над 32-разрядной версией Microsoft Visio 2010 в Microsoft Visual Studio 2013, добавляя ссылку на взаимодействие visio.
Но я получаю следующую ошибку исключения COM:
Retriving the COM class factory for component with CLSID {000D0A00-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).


Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Visio = Microsoft.Office.Interop.Visio;

namespace CreateVisioDrawing
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //System.Diagnostics.Debugger.Launch();
            CreateDrawing objCreateDrawing = new CreateDrawing();
            objCreateDrawing.CreteNewDrawing();
        }
    }

    public class CreateDrawing
    {
        public void CreteNewDrawing()
        {
            try
            {
                Visio.Documents visioDocs = new Visio.Documents();
                string drawingPath = @"E:\Local Data\NEW DATA_20170510\VisioDrawings\NewDrawing.vsd";
                visioDocs.Add(drawingPath);

                Visio.Document visioStencil = visioDocs.OpenEx("Basic Shapes.vss",
                    (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);

                Visio.Page visioPage = new Visio.Page();

                Visio.Master visioRectMaster = visioStencil.Masters.get_ItemU(@"Rectangle");
                Visio.Shape visioRectShape = visioPage.Drop(visioRectMaster, 4.25, 5.5);
                visioRectShape.Text = @"Rectangle text.";

                Visio.Master visioStarMaster = visioStencil.Masters.get_ItemU(@"Star 7");
                Visio.Shape visioStarShape = visioPage.Drop(visioStarMaster, 2.0, 5.5);
                visioStarShape.Text = @"Star text.";

                Visio.Master visioHexagonMaster = visioStencil.Masters.get_ItemU(@"Hexagon");
                Visio.Shape visioHexagonShape = visioPage.Drop(visioHexagonMaster, 7.0, 5.5);
                visioHexagonShape.Text = @"Hexagon text.";
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.Read();
            }
            
        }
    }
}

Richard MacCutchan

Сообщение совершенно ясно: требуемая COM-библиотека не зарегистрирована в вашей системе.

1 Ответов

Рейтинг:
2

OriginalGriff

Если вы получите сообщение об ошибке, которое не понимаете, погуглите его: 80040154 класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) - поиск Google[^]- как и в этом случае, он предоставляет множество других с той же проблемой, и решения их будут применяться к вам.

Или даже ... просто прочитайте текст сообщения. Это довольно ясно и очевидно! :смеяться: