2017-03-13 1 views
0

"RunAs different user"という小さなアプリケーションを作成しています。開く必要のあるファイル(フルパス)は、リストビューに保存されます。vb.net ListViewの引数として異なるユーザーのExcel 2013ドキュメントとして処理を開始する - ファイルがロックされた

Do_RunAsとプロシージャを呼び出した場合( "C:\プログラムファイルのMicrosoft Office \ Office15 \ EXCEL.EXE \(x86の)"、 "D:\テスト\ネーミングとして実行 - Test.xlsx") ":\プログラムファイル(x86の)\ Microsoft Officeの\ Office15 \ EXCEL.EXE C"、item.SubItems(1)の.text ...それは コールDo_RunAs(とプロシージャを呼び出す場合

しかし を働いています) EXCELでこのメッセージが表示されます(リンク先の図を参照) ...file is locked for editing by another user

ここDo_RunAs

引数として
Public Sub Do_RunAs(strApplication As String, strFilename As String) 
    Dim procStartInfo As New ProcessStartInfo 
    Dim procExecuting As New Process 

    With procStartInfo 
     .UseShellExecute = False 

     .Domain = strDomain 
     .UserName = strUserName 
     .Password = ConvertToSecureString(strPassword) 
     .Verb = "runas" 
     .LoadUserProfile = True 

     .FileName = GetShortPathName(strApplication) 
     .Arguments = GetShortPathName(strFilename).ToString 
     .WindowStyle = ProcessWindowStyle.Normal 
    End With 

    procExecuting = Process.Start(procStartInfo) 
    procExecuting.Close() 
End Sub 

のコードIはすでに試み

  • .Arguments = strFilename
  • .Arguments = chrです(34)+ strFilename + chrです(34)
  • であります.Arguments = GetShortPathName(strFilename)
  • .Arguments = GetShortPathName(strFilename).ToString

何も動作しません。常に同じエラーが発生します。

誰かが私を助けることができれば素晴らしいだろう - 事前にたくさんありがとう!

答えて

0

私はその問題の答えを見つけました...誰かがそれを必要としているかもしれません このSubはFor-Nextループ内で呼び出されました。私は単にこれは、問題を解決し

For i = 1 To 10 
    Call Do_RunAs("Excel.exe", "xy.xls") 
    Wait(3) 'wait 3 seconds 
Next 

このサブ次回を呼び出す前に、WAIT機能を追加しました

関連する問題