- 締切済み
【VB2008】別アカでExcelファイルを開く
お世話になります。よろしくお願いします。 Win7、VB2008、Excel2007という社内ネットワーク環境です。 社内ネットワークにログインしているユーザーが起動したアプリ[A]から内部的に別のアカウントでアプリ[B]を起動し、その起動されたアプリ[B]からExcelファイルを開き、VBからセル編集・印刷・閉じるという一連の処理をしたいと思っています。アプリ[A]は[B]を起動するためだけのもので、メイン処理はすべて[B]で行います。 なぜ内部的に別アカウントでアプリを起動するかという部分は社内セキュリティ対策によるものなので説明を省きます。 アプリ[A]でProcess.StartInfoを使ってユーザー名・パスワード・ドメイン名を指定しアプリ[B]を起動することはできました。 しかしアプリ[B]で下記記述によりExcelファイルを開く処理をすると、このようなエラーになります。 ----- System.Runtime.InteropServices.COMException (0x800A03EC): ファイル '\\abc\TEST.xlsx' にアクセスできません。次のいずれかの理由が考えられます。 ・ファイル名またはパスが存在しません。 ・ファイルが他のプログラムによって使用されています。 ・保存しようとしているブックと同じ名前のブックが現在開かれています。 ----- ファイルは間違いなく存在します。 また、現在はテストのためログインユーザーも別アカもアクセス権限があります。 アプリ[B]での記述(オープン処理の部分のみ抜粋): Private xlApp As Excel.Application Private xlBooks As Excel.Workbooks Private xlBook As Excel.Workbook Private xlSheets As Excel.Sheets Private xlSheet As Excel.Worksheet Private frgClose As Boolean 'ユーザーが Excel を閉じようとしたかのフラグ ----- Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Call ExcelOpen(System.IO.Path.GetFullPath("\\abc\TEST.xlsx"), "Sheet1") End Sub ----- Private Sub ExcelOpen(ByVal FilePath As String, ByVal SheetName As String) 'Excel のオープン処理用プロシージャ frgClose = False '起動中は、ユーザーが Excel を閉じれないように xlApp = New Excel.Application 'Excel の WorkbookBeforeClose イベントを取得 AddHandler xlApp.WorkbookBeforeClose, AddressOf xlApp_WorkbookBeforeClose xlBooks = xlApp.Workbooks If FilePath.Length = 0 Then '新規のファイルを開く場合 xlBook = xlBooks.Add xlSheets = xlBook.Worksheets xlSheet = CType(xlSheets.Item(1), Excel.Worksheet) Else '既存のファイルを開く場合 xlBook = xlBooks.Open(FilePath) xlSheets = xlBook.Worksheets xlSheet = CType(xlSheets(SheetName), Excel.Worksheet) End If xlApp.Visible = True End Sub -----
- みんなの回答 (1)
- 専門家の回答
みんなの回答
うむむ、分かりませんが_ test.xlsx はアプリケーションじゃないので、開けないと・・お・もいます。 notepad.exe とか起動してみると良いかな。