vsto - VB - 从outlook addin中的列中查找最后一个单元格

时间:2017-10-12 13:38:13

标签: excel visual-studio excel-vba vsto outlook-addin vba

如何从vsto outlook addin中搜索Excel工作表中的最后一个空单元?

我有以下代码(不编译)

Imports Excel = Microsoft.Office.Interop.Excel
Dim ExcelApp As New Excel.Application
Dim ExcelWorkbook As Excel.Workbook
Dim ExcelWorkSheet As Excel.Worksheet= ExcelWorkbook.Worksheets(1)
Dim ExcelRange As Excel.Range = ExcelWorkSheet.Range("A1","A600")

Dim currentFind As Excel.Range = Nothing
Dim firstFind As Excel.Range = Nothing

currentFind = ExcelRange.Find("*", , Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)

            While Not currentFind Is Nothing

                ' Keep track of the first range you find.
                If firstFind Is Nothing Then
                    firstFind = currentFind

                    ' If you didn't move to a new range, you are done.
                ElseIf currentFind.Address = firstFind.Address Then
                    Exit While
                End If

                currentFind = ExcelRange.FindNext(currentFind)
            End While

ExcelWorkbook.ActiveSheet.range(currentFind).Select()

我根据Scott Holtzman的评论更新了它,但现在我收到一条错误消息:HRESULT:0x800A03EC

2 个答案:

答案 0 :(得分:0)

根据对象模型,代码没有正确的层次结构。

如果没有先定义Range对象,则无法定义Worksheet对象,该对象在定义之前需要Workbook个对象。

试试这个:

Set ExcelApp = New Excel.Application

Dim ExcelWorkbook as Excel.Workbook
Set ExcelWorkbook = ExcelApp.Workbooks.Open("myPath") 'actually opens a workbook to work with 

Dim ExcelWorksheet as Excel.Worksheet
Set ExcelWorksheet = ExcelWorkbook.Worksheets("mySheet")

Dim currentFind As Excel.Range = Nothing
Dim firstFind As Excel.Range = Nothing

Dim Fruits As Excel.Range = ExcelWorksheet.Range("A1", "A200")
Set currentFind = Fruits.Find("apples", , Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)


... 


Set currentFind = Fruits.FindNext(currentFind)

答案 1 :(得分:0)

已解决:我有以下代码(现在正在编译!)

Imports Excel = Microsoft.Office.Interop.Excel
Dim ExcelApp As New Excel.Application
Dim ExcelWorkbook As Excel.Workbook
Dim ExcelWorkSheet As Excel.Worksheet= ExcelWorkbook.Worksheets(1)

Dim LastRow As Integer

LastRow = ExcelWorkSheet.Columns(1).Find("*", , , , Excel.XlSearchOrder.xlByColumns, Excel.XlSearchDirection.xlPrevious).Row

ExcelWorkSheet.Range("A" & LastRow).Select()

我的错误是在实际的属性库选择中。当心选择: XlSearchOrder .xlByColumns,Excel。 XlSearchDirection .xlPrevious