1

私は、当社のアドインをExcelにインストールし、ライブラリファイル(ライブラリマクロサブルーチンと関数を含むlibrary.xlsm)をロードするExcelオートメーションを自動化しようとしています。この後、テストごとに、対応する test.xlsm ファイルを読み込み、マクロを実行します。これはすべて、powershell (V3) を使用して行っています。私のスクリプトは、あるマシンで呼び出され、別のリモート マシンで実行されます。

これは私がアドインをインストールする方法です:

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: マクロのヘルパー関数が C# コードを呼び出すため、.dll ファイルを追加しています。

ただし、これらの xlsm ファイルを開くと、次のエラーが表示されます。

"1" 個の引数を指定して "Open" を呼び出し中に例外が発生しました: "Microsoft Excel はファイル 'D:\ABC\XYZ\workspace\library.xlsm' にアクセスできません。いくつかの理由が考えられます: ファイル名またはパスが存在しません。ファイルは別のプログラムによって使用されています。保存しようとしているブックは、現在開いているブックと同じ名前です。」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 ファイルのパス - すべてが存在する
3. アドインが正常にインストールされている

私が見逃しているものはありますか?

前もって感謝します!:)

4

1 に答える 1