作業手順書を開いて閉じなくても、サブプロシージャに渡してExcelを実行しようとしています。 オブジェクトを関数またはサブプロシージャに渡す
私はこのPublic Function CheckForMutipleUIC(ByVal ws As Excel.Workbook) As Boolean
' Dim ExcelApp As New Excel.Application
' DataFleet = CurrentProject.Path & "\Extract\Fleet.xls"
' Set ws1 = ExcelApp.Workbooks.Open(DataFleet).Sheets(1)
UICCheck = ws.Range("GD2").Value
For Each Cell In ws.Range("GD2:GD10000").cells
If Cell.Text <> "" Then
If Cell.Value <> UICCheck Then
Err.Raise 513, "VICILauncher-DataValidation-CheckForMultipleUIC", "Multiple UICS Found in extract. Please Make sure the correct UIC is being Extracted"
End If
End If
Next
CheckForMutipleUIC = True
Exit Function
に機能が表示されます。この
Dim ExcelApp As New Excel.Application
Dim ws As Object
Public Function cert()
Set ws = ExcelApp.Workbooks.Open(FileDir).Sheets(1)
If CheckForMutipleUIC(ws) = True Then <---- this is where I call the Function
....
を試してみました。しかし、私は適切にExcelオブジェクトを渡していませんよね。アプリケーションオブジェクトは、閉じて再オープンすることなく、どのようにsubに渡されますか?
「ワークブック」を渡したいとします。 **しかし、**ここでは、ワークシートに設定します: 'Set ws = ExcelApp.Workbooks.Open(FileDir).Sheets(1)'。その後、あなたの関数の中に '(ByVal ws As Excel.Workbook)'、**がありますが、 'UICCheck = ws.Range(" GD2 ")。Value'の後、' Worksheet'オブジェクトです。それはどちらですか? 'ws'は' Worksheet'か 'Workbook'ですか? –
あなたは正しいです。機能にExcelシートを渡したいと思っています – Quint
私は試してみましたが、それはエラーで実行されますが、「各セルに対して」セルが空白になります – Quint