Я пытаюсь использовать офисное взаимодействие для взаимодействия с Excel на удаленном компьютере. Самым простым, на первый взгляд, способом сделать это было использование метода Microsoft.VisualBasic.Interaction.CreateObject
, который задокументирован здесь. В моем случае вызов, сделанный ему:
var excelApp = (Application)Interaction.CreateObject("Excel.Application", machineName);
Однако это не работает в полной мере, как ожидалось. Результаты, которые я получаю:
- Когда имя_машины — это локальный компьютер, на котором я запускаю код, это работает, как и ожидалось.
- Если имя_машины является удаленной машиной, экземпляр Excel фактически запускается на машине, но вызов
CreateObject
завершается ошибкой с исключением:
System.Exception: удаленный сервер не существует или недоступен.
Поиск в Google этого сообщения не показывает особой пользы, результаты, кажется, у всех людей с разными симптомами.
У меня действительно нет никаких зацепок о том, что вызывает это. Я заметил, что страница документации метода, на которую я ссылался ранее, довольно загадочно гласит:
Обратитесь к документации COM (см. Microsoft Developer Network) для получения дополнительной информации о том, как сделать приложение доступным на удаленном сетевом компьютере. Возможно, вам потребуется добавить раздел реестра для вашего приложения.
Но я еще не нашел эту документацию.
Любые предложения о том, что может быть проблемой здесь? Или, в противном случае, другой способ достижения того же? В моей ситуации удаленное взаимодействие, подобное этому, является твердым требованием — использование Excel на локальном компьютере для доступа к удаленному файлу недостаточно.
Кроме того, я бы очень хотел избежать решения, требующего запуска службы или чего-то подобного на клиентском компьютере Excel, что, как я понимаю, было бы необходимо, если бы я хотел использовать Activator.CreateInstance
с UrlAttribute
.