2017-10-12 7 views
0

vsto outlook addin에서 Excel 시트의 마지막 빈 셀을 어떻게 검색합니까?vsto - VB - Outlook addin의 열에서 마지막 셀 찾기

나는 스콧 Holtzman의 의견에 따라 내가 업데이트 한 다음 코드 (컴파일되지 않음)

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() 

을 가지고 있지만 지금은 오류 메시지가 : HRESULT : 0x800A03EC

+0

솔루션을 질문의 업데이트가 아닌 답변으로 게시하십시오. 이것은 미래 방문자에 대한 혼란을 피하기위한 것입니다. 변경 사항은 정확히 손실되지 않으며 [수정본] (https://stackoverflow.com/posts/46711104/revisions)에서 변경 사항을 가져올 수 있습니다. – Bugs

답변

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 .xl 이전

0

을 코드가없는 개체 모델에 따라 올바른 계층 구조.

먼저 Worksheet 개체를 정의하지 않고 Range 개체를 정의 할 수 없습니다.이 개체는 정의되기 전에 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) 
+0

@ Escounda - 내 편집을 참조하십시오. 먼저 Application Object를 선언하고 설정해야합니다. 그런 다음 통합 문서 개체. 그런 다음 워크 시트 개체. 그런 다음 Range Object –

+0

Scott Holtzman에게 감사드립니다. 나는 .find()의 속성을 다음과 같이 수정하여 그것을 해결했다 : XlSearchOrder.xlByColumns, Excel.XlSearchDirection.xlPrevious – Escounda