0
3時間以上立ち往生している問題については、本当に助けが必要です。 IEを開いてURLに移動するVBAコードがあります。 コードIは、Microsoft Visual Basicの中にそれをテストするときに動作するようです:VBAコードがUFTで動作しない
Sub test()
On Error Resume Next
Set app = CreateObject("InternetExplorer.Application")
MsgBox "OpenWindow 1 : " & Err.Number
app.Visible = True
app.Navigate ("salut.com")
result = Err.Number
MsgBox "OpenWindow 2 : " & Err.Number
On Error GoTo 0
If result <> 0 Then
Call test
End If
End Sub
このコードは、マクロExcelで正常に動作しますが、私はUFTの正確な同じコード(統一Functionnalテスト)を実行するたびに、それはエラーをスローします。
ナビゲート後のCreateObject(?)- エラー-2147467261
コード全く同じで、私はちょうど関数にまでナビゲートするURLを渡します。
Function openWindow(url)
On error resume next
Set app = CreateObject("InternetExplorer.Application")
app.Visible = true
app.Navigate(url)
result = Err.number
On error goto 0
If result <> 0 Then
openWindow (url)
End If
End Function
は、私は本当に問題が何であるかの見当がつかない...
私はhttp://stackoverflow.com/documentation/vba/1179/procedure-calls/3818/this-is-confusing-why-not-just-(あなたが[この]を読みたいと思うかもしれないと思います常用括弧#t = 201704191432562970515)。そして 'url'を' ByVal url As String'と宣言して、関数は 'String'だけを取ることができます。現在、私たちは 'Navigate'呼び出しが処理できない何かを与えているので、' Navigate'呼び出しが失敗しているかどうかは分かりません。明示的な 'String'パラメータは物事をあいまいにしません。 UFTは 'CreateObject'呼び出しを処理できないようですか? –
私は決してUFTを使用しませんでしたが、プログラミング標準では変数を宣言し(各モジュールの最上部で 'Option Explicit'を指定する)、' app'は 'openWindow'関数の依存性ですそれは何も返されていないのでプロシージャ。独自の依存関係を作成するのではなく、引数として注入する必要があります。また、自動テストでは、メソッドが動作するために必要なインターフェースを擬似/模擬的に実装する必要があります。 [これはあなたに興味があるかもしれません](https://rubberduckvba.wordpress.com/2017/03/17/go-ahead-mock-vba/)。 –
またあなたの関数は再帰的であり、無効な 'url'が与えられたとき、あるいは* anything *が間違っているときに常にコールスタックを爆破します。 –