0

皆さん、私はこれで数週間戦っています。私たちの組織には、シンクライアントで実行されている独自の企業アプリがあります。このアプリから、バックグラウンドで VBA スクリプトを適用して簡単な機能を実行できます。以前は、IE を開いて特定の Web サイトに誘導し、データを入力したり、Calc を開いたりするためのボタンを追加していました。

最近、私は以下のコードに取り組んでいます。これは、完全なデスクトップと explorer.exe を起動する RDP セッションを使用してサーバー上で開発されました。私が気付いたことは、explorer.exe が実行されていない場合、コードは関数内の「For Each oWin In oShApp.Windows」という行で「実行時エラー '429'」で爆発することに気付きました。

ただし、デスクトップとすべての機能を起動する ThinClient で explorer.exe を起動するスクリプトを作成すると (スタート バーとタスク バーが有効になるため、これは悪いことです)、ログインしている Thin Client ユーザーとして正常に実行されます。完全なデスクトップではなく、リモートアプリを使用しているときに実行される「制限付きシェル」について少し読んだことがありますが、スタートメニューとタスクバーを有効にせずに、その周りに何らかの方法があるかどうか疑問に思っていましたか?

以下のコードを参照してください。助けてくれてありがとう、CreteIT

Private Sub cmdHomePage_Click()
Dim ie As Object
Dim sMatch As String
sMatch = "http://www.companyweb.com"
    On Error Resume Next
Set ie = GetIEatURL(sMatch & "*")
On Error GoTo 0
If Not ie Is Nothing Then
    ShowWindow ie.hwnd, 9
    BringWindowToTop ie.hwnd
Else
    Dim strHome
    Dim strAPP
    strHome = "c:\progra~1\intern~1\iexplore.exe www.companyweb.com"
    strAPP = Shell(strHome, vbNormalFocus)
End If
End Sub

Function GetIEatURL(sMatch As String) As Object
Dim ie As Object, oShApp As Object, oWin As Object
Set oShApp = CreateObject("Shell.Application")
For Each oWin In oShApp.Windows
    If TypeName(oWin.Document) = "HTMLDocument" Then
        Set ie = oWin
                If LCase(ie.LocationURL) Like LCase(sMatch) Then
                Set GetIEatURL = ie
        Exit For
                End If
            End If
Next
Set oShApp = Nothing
Set oWin = Nothing
End Function
4

1 に答える 1