こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

【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
-----

投稿日時 - 2015-04-06 14:43:00

QNo.8950398

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

うむむ、分かりませんが_

test.xlsx はアプリケーションじゃないので、開けないと・・お・もいます。

notepad.exe とか起動してみると良いかな。

投稿日時 - 2015-04-06 17:57:17

あなたにオススメの質問