2016-08-12 8 views
1

Я пытаюсь автоматизировать автоматизацию excel, которая устанавливает нашу компанию addin в excel, а затем загружает библиотечный файл (библиотека .xlsm, который содержит подпрограммы и функции макроса библиотеки). После этого для каждого теста я загружаю соответствующий файл test.xlsm и выполняю макросы. Все это я использую powershell (V3). Мой скрипт вызывается на одной машине и выполняется на другом удаленном компьютереВызов «Открыть» с аргументом «1»: ... »в Excel после установки моего addin

Это, как я установить мою надстройку:.

kill -processname excel 
$Release1RootDir = $workspace + "\Release1" 
      $release1Path = Get-ChildItem -Force $release1RootDir 
      if($release1Path -eq $Null) { 
       echo "Error: No sub-folder found having MyAddin Installer inside "$release1RootDir 
      } 
      else { 
       $release1 = $release1Path.name.replace('_', '.') 
       $ExcelAddinInstaller = ($release1Path.FullName + "\MyAddin.msi") 
       $ExcelAddinTargetDir = ($Release1Path.FullName) 
     $msiexecPath = "msiexec.exe" 
     if(Test-Path -Path $ExcelAddinInstaller){ 
        echo "Version for MyAddin inside Release1: "$Release1 
        $proc = Start-Process $msiexecPath -ArgumentList /x, `"$ExcelAddinInstaller`", TARGETDIR=$ExcelAddinTargetDir, /quiet, /lvx, "D:\Temp\uninstall.log" -Wait 
      $proc = Start-Process $msiexecPath -ArgumentList /i, `"$ExcelAddinInstaller`", TARGETDIR=$ExcelAddinTargetDir, /quiet, /lvx, "D:\Temp\install.log" -Wait -ErrorAction Stop 
        echo "Installing addin" 
        Start-Process "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" -ArgumentList /tlb, "C:\Users\Serviceadmin\Addin\MyAddin\Release\MyAddin.dll" 
     } 
       else{ 
        echo $ExcelAddinInstaller 
       } 
      } 

PS: Я добавляю в DLL-файл, так как, помощник функц ion в моих макросах вызывает мой код C#.

Однако, при открытии любого из этих XLSM файлов, я получаю следующее сообщение об ошибке:

Exception calling "Open" with "1" argument(s): "Microsoft Excel cannot access the file 'D:\ABC\XYZ\workspace\library.xlsm'. There are several possible reasons: The file name or path does not exist. The file is being used by another program. The workbook you are trying to save has the same name as a currently open workbook." At C:\Users\Serviceadmin\AppData\Local\Temp\hudson.ps1:94 char:3 + $libraryBook = $excel.workbooks.open("$xlLibraryPath\$xlLibraryFileName"); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation

выше ошибка появляется, несмотря на пути файлов является правильным. Это, как я открыть файлы с помощью PowerShell:

$excel = new-object -comobject excel.application; 
    $excel.visible = $true; 
    $libraryBook = $excel.workbooks.open("$xlLibraryPath\$xlLibraryFileName"); 
    $testWorkbook = $excel.workbooks.open("$testFile") 
    $excel.Run("$xlLibraryFileName!Initialize", "$testAct") 
    $loginsuccess = $excel.Run("$xlLibraryFileName!Login", "$xlenvironment", "$xlUserName", "$xlPassword"); 
    if($loginsuccess) 
    { 
     $excel.Run("PerformTest"); 
     $excel.Run("$xlLibraryFileName!Logout"); 
    } 
    $testWorkbook.close($false) 
    $libraryBook.close($false) 
    $excel.quit() 

Я проверил следующее: установлен
1. Excel в необходимом машинно Да, Excel 2013
2. Путь к XLSM Files- Все присутствуют
3. Успешная установка аддона

Есть ли что-то, что мне не хватает?

Заранее благодарен! :)

+0

Вы действительно уверены, что путь верный? msgstr "невозможно получить доступ к файлу '\ library.xlsm'" звучит как $ xlLibraryPath null? Btw: Обычно я предпочитаю путь объединения для объединения путей, так как он помогает избежать ошибок с отсутствующими косыми чертами. – whatever

+0

Я полностью исключил полный путь в вышеупомянутом сообщении ... Но, да, это правильно .... PS: Я добавил путь теперь. – Rishi

+0

Является ли это подключенным дисководом? Имеет ли профиль, запускающий скрипт, этот диск? – TheMadTechnician

ответ

0

Ну, оказывается, мне пришлось добавить папку «Рабочий стол» на каждом из следующих путей. Решение довольно странно, но он теперь работает для меня:

C: \ Windows \ System32 \ Config \ systemprofile \ Desktop (должен присутствовать на 32 битной машине и даже для 64 бит)

C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop (только для 64-разрядной машины)

 Смежные вопросы

  • Нет связанных вопросов^_^