Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Работа с Excel

Ответить
Настройки темы
PowerShell - [решено] Работа с Excel

Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


была машина с винХР и PS2 - код работал
обновили систему до вин7 и PS5 - код не работает

заполняет конкретную ячейку в Excel

Код: Выделить весь код
$ws.Cells.Item($Row,6)= "`=ГИПЕРССЫЛКА(`"$OutPath`";`"$OutPath`")"
выдает ошибку

Код: Выделить весь код
Исключение из HRESULT: 0x800A03EC
At D:\script\PowerShell\XML_sort\XML-statistics.ps1:182 char:3
+         $ws.Cells.Item($Row,6)= "`=ГИПЕРССЫЛКА(`"$OutPath`"`;`"$OutPa ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

Отправлено: 13:11, 29-09-2017

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$ws.Cells.Item($Row,6).Value2= "`=ГИПЕРССЫЛКА(`"$OutPath`";`"$OutPath`")"

Отправлено: 13:22, 29-09-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


Kazun, благодарю что откликнулись!
к сожалению не помогло, ошибка та же.

если добавить кавычек

Код: Выделить весь код
$ws.Cells.Item($Row,6) = """`=ГИПЕРССЫЛКА(`"$OutPath`";`"$OutPath`")"""
то данные в Excel вносятся, но в кавычках (подчеркнуто)

Код: Выделить весь код
"=ГИПЕРССЫЛКА("$OutPath";"$OutPath")"
"=ГИПЕРССЫЛКА("D:\test\ГКН2\59 Пермский край\59-34 Соликамский\59-34-2780101\0055";"D:\test\ГКН2\59 Пермский край\59-34 Соликамский\59-34-2780101\0055")"
а они не нужны. без них было бы хорошо.

в переменной $OutPath примерно такое:
Код: Выделить весь код
D:\test\ГКН2\59 Пермский край\59-34 Соликамский\59-34-2780101\0055

Отправлено: 13:34, 29-09-2017 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Заменить ; на , ?

Последний раз редактировалось Kazun, 29-09-2017 в 14:12.


Отправлено: 14:06, 29-09-2017 | #4


Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Kazun:
Заменить ; на , ? »
нет. тогда Excel ругается "Ошибка в формуле".
у гиперссылки разделение между текстом который выводится и путем должно быть именно ;

Цитата Kazun:
Заменить ; на , ? »
натолкнуло на другую мысль:
Код: Выделить весь код
$ws.Cells.Item($Row,6)	="=ГИПЕРССЫЛКА(`"$OutPath`")"
тогда гиперссылка вставляется в файл корректно, но при открытии Excel вместо синей ссылки #ИМЯ? жму энтр и гиперссылка становиться активной. что теперь не так ?

Отправлено: 14:26, 29-09-2017 | #5


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


А если вместо ГИПЕРССЫЛКА поставить HYPERLINK?

Отправлено: 14:37, 29-09-2017 | #6


Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Kazun:
А если вместо ГИПЕРССЫЛКА поставить HYPERLINK? »
никаких изменений

Код: Выделить весь код
Исключение из HRESULT: 0x800A03EC
At D:\script\PowerShell\XML_sort\XML-statistics.ps1:182 char:3
+         $ws.Cells.Item($Row,6)    = "`=HYPERLINK(`"$OutPath`";`"$OutP ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
видимо ; очень мешает взаимодействию PS и Excel, но экранировать так `; или \; не вышло

Отправлено: 14:43, 29-09-2017 | #7


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Через HyperLinks?

Код: Выделить весь код
$ws.Hyperlinks.Add($ws.Cells.Item($Row,6),"$OutPath","","","$OutPath") | Out-Null
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:54, 29-09-2017 | #8


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Есть два момента:
  1. Следует использовать свойство «.Formula», а не умолчальное свойство «.Value» или «.Value2».
  2. Содержимое свойства следует задавать в англоязычном формате.
Внутренние двойные кавычки банально экранируем. Например:
Код: Выделить весь код
$OutPath = 'D:\test\ГКН2\59 Пермский край\59-34 Соликамский\59-34-2780101\0055'
$Row = 1

$oExcel = New-Object -ComObject 'Excel.Application'
$oExcel.Visible = $true
$oWorkbook = $oExcel.Workbooks.Add()
$oWorkbook.Worksheets.Item(1).Cells.Item($Row, 6).Formula = "=HYPERLINK(`"$OutPath`",`"$OutPath`")"


Дополнением к предыдущему.

Сначала я, как и положено посконно-истинно-православному , пробовал .FormulaLocal, но, видимо, где-то что-то сделал не так, посему решил списать сие на издержки реализации Automation в PowerShell, и переключился на «.Formula». Вторая попытка оказалась удачнее :
Код: Выделить весь код
$oWorkbook.Worksheets.Item(1).Cells.Item($Row, 6).FormulaLocal = "=ГИПЕРССЫЛКА(`"$OutPath`";`"$OutPath`")"

Последний раз редактировалось Iska, 29-09-2017 в 15:37. Причина: Свойство «.Value» не является умолчальным.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:58, 29-09-2017 | #9


Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Iska:
Следует использовать свойство «.Formula», а не умолчальное свойство »
Благодарю!
именно этого свойства и не хватало.

Отправлено: 15:18, 29-09-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Работа с Excel

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Работа с excel в Powershell Valik87 Windows Server 2008/2008 R2 0 22-03-2012 12:33
.NET - Работа с Excel. OleDb Provider. Кодировки LilLoco Программирование и базы данных 0 23-06-2011 09:55
Работа с контролами на страницах Excel EugeneAbl AutoIt 8 28-02-2009 09:22
Delphi - MsOffice | Delphi | Работа с Excel в Делфи AL CAPONE Программирование и базы данных 2 03-10-2006 16:27
Работа в Excel Evita Хочу все знать 3 06-05-2004 00:24




 
Переход