| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			День добрый, никто не сталкивался со подобной задачей? Суть в том что из макроса нужно запускать отчет Navision  у которого в target=Report reportNo view=SORTING(Field3) WHERE(Field3=1(ActiveCell.Value)) проблемма же заключается в следующем стандартную навовскую ссылку типа  
		
		
		
		
		
		
		
	navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName%26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1(Param))%26requestform=Да%26servertype=MSSQL VBA не понимает. а при использовании ссылки: Program = "C:\Program Files\Navision Attain\Client\fin.exe servername=ServerName, database=DatabaseName, company=CompanyName, target=Report ReportNo view=SORTING(Field3) WHERE(Field3=1(ActiveCell.Value)) requestform=Да,servertype=MSSQL" вылетает ошибка "неизвестное свойство программы 'target'."  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробуй создать ярлык для отчёта и запускать его из макроса.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В том и дело что это не выход, проблемма в том что есть документ Excel в котором сохранены номера документов которые должны указываться в WHERE(Field3=1(ActiveCell.Value)) в качестве ActiveCell.Value (для построения отчета по  ним) а соответветственно придеться создавать ярлыки из того же макроса для каждого номер документа(хотя я сомневаюсь в самой возможности этого) и запускать их
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну на край в файле ярлыка свободный доступ к пути и параметрам, можно подредактировать его через макрос, понимаю изврат, но это на крайний случай -)
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Действительно что на крайний случай... А насчет изврат, так тут сама задача изврат 
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А функцию Shell не пробовал?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Через нее родную и пытаюсь: 
		
		
		
		
		
		
		
	Sub RunNav() On Error Resume Next Program = "C:\Program Files\Navision Attain\Client\fin.exe servername=ServerName, database=DatabaseName, company=CompanyName, target= Report ReportNo, view=SORTING(Field3) WHERE(Field3=1(ActiveCell.Value)), requestform=Да,servertype=MSSQL" TaskID = Shell(Program, 1) If Err <> 0 Then MsgBox "Нельзя запустить" & Program, vbCritical, "Ошибка" End If End Sub вот так оно выглядит(я в VBA дуб-дерево =))  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может Report ReportNo в кавычки попробовать взять? "Report ReportNo" или без пробела?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как и предполагалось эффекта от кавычек или удаления пробела 0, собственно как я понимаю VBA ругаеться не на  значение target = ....., 
		
		
		
		
		
		
		
	а на сам target, так как сам не знает что за свойство программы.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну раз уж пошла такая "пьянка". Может подскажешь как сделать свободный доступ к пути в файле *lnk ?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробуйте сделать в ячейке гиперссылку и использовать следующий вариант открытия Nav из VB: 
		
		
		
		
		
		
		
	Код: Sub RunNav()
Excel.ActiveSheet.Range("A1").Hyperlinks(1).Follow
End Sub | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Сейчас VBA script выглядит так: 
		
		
		
		
		
		
		
	Sub RunLNK() Set WshShell = CreateObject("WScript.Shell") Set WshUrlShortcut = WshShell.CreateShortcut(Desktop & "nav.lnk") WshUrlShortcut.TargetPath = "navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName%26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1(ActiveCell.Value))%26requestform=Да%26servertype=MSSQL" WshUrlShortcut.Save WshShell.Run ("""*Путь к ярлыку*\nav.lnk""") End Sub запускает Nav и казалось бы все путем но значение ActiveCell.Value, не учитывает то есть в отчете в фильтре стоит номер первого документа а не указанного в документе(находящегося в активной ячейке Excel)  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			во-вторых, присоединяюсь к Quattro используйте Excel.ActiveSheet.Range("A1").Hyperlinks(1).Follow
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не уверен что это решить проблему, так как сами ссылки сделанные из Nav'а запускаются с тем же успехом =( 
		
		
		
		
		
		
		
	то есть в отчете в фильтре указывается не параметр размещенный в ссылке(даже если воспользоваться "Файл->Отправить->Создать ярлык" или "Правка->Копировать ссылку и дальше создать ярлык самому") эффект одинаков открывает отчет в фильтре которого указан не тот документ что указан view=SORTING(Field3)%20WHERE(Field3=1(DocNo)) а первый документ.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как я и предполагал никакого эффекта, все тоже самое что при использовании моего макроса=(
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Слушай, мы тут недавно столкнулись с такой проблемой, при вызове функции из отчёта, оказывается обрабатывается триггер OnInitRecord отчёта, посмотри может он тебе настройки сбивает.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			OnInitRecord - даже не нашел такой =( 
		
		
		
		
		
		
		
	возможно речь идет о OnInitReport - он пустой  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я сделал это! Правда считаю это полным извратом, но всё же выложу код макроса: 
		
		
		
		
		
		
		
	Sub Run() txt1 = "[InternetShortcut]" txt2 = "navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName% 26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1(" + ActiveCell.Value + "))%26requestform=Да% 26servertype=MSSQL" Open "c:\ПУТЬ К ТЕМПОВОЙ ПАПКЕ\mylink.url" For Output Access Write As 1 Print #1, txt1 Print #1, txt2 Close #1 mycommand = "c:\mylink.url" Set WshScript = CreateObject("WScript.Shell") D = WshScript.Run(mycommand, 4, False) End Sub Есть и второй вариант, только что додумал: единственная сложность это непостоянность путей к iexplore и темповой папке Второй вариант будет попроще: sub run() Shell "C:\Program Files\Internet Explorer\iexplore.exe navision://client/run?servername=ServerName%26database=DatabaseName%26company=CompanyName% 26target=Report%20ReportNo%26view=SORTING(Field3)%20WHERE(Field3=1(" + ActiveCell.Value + "))%26requestform=Да% 26servertype=MSSQL", 1 end sub Вот такие идеи, проверил, работает -)  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо за помощь, но увы  
		
		
		
		
		
		
		
	  , возможно дело каких нибудь специфических насройках самого Nav'a буду рыть в этом направлении 
		 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Забавно но если в самом Nav'e номер документа(поля фильтра в которое заносятся данные из ссылки) пустое то все нормально работает, и ваши макросы, и мой.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 |