Не присваивается непоследовательный Range для Excel из VB6.0
Формулировка задачи:
Добрый день!
Возникла проблема на позднем подключении из приложения к экселю.
А именно, невозможно присвоить "дырявый" Range объекту. В VBA код работает хорошо.
В VB работает только с непрерывным диапазоном. См. код:
Как ещё можно присвоить непоследовательный Range объекту из VB?
Листинг программы
- Private Sub test()
- Dim objExcel As Object
- Dim objWorkbook As Object
- Dim oRanges
- Dim sAddress As String
- Set objExcel = CreateObject("Excel.Application")
- Set objWorkbook = objExcel.Workbooks.Open("c:\test.xls")
- ExcelWorkSheet = objWorkbook.Worksheets(1)
- objExcel.Visible = True
- sAddress = "A4:R436"
- Set oRanges = ExcelWorkSheet.Range(sAddress) '<= код работает с непрерывным диапазоном
- '(Set oRanges = objExcel.Range(sAddress) '<= тоже работает)
- sAddress = "A4:R9,A11:R436,A439:R452,A454:R1326" '<= ставим "дырявый" диапазон
- Set oRanges = ExcelWorkSheet.Range(sAddress) 'в VB ошибка, но в VBA работает.
- Set objWorkbook = Nothing
- Set objExcel = Nothing
- Set oRange = Nothing
- End Sub
Решение задачи: «Не присваивается непоследовательный Range для Excel из VB6.0»
textual
Листинг программы
- Private Sub test()
- Dim objExcel As Object
- Dim objWorkbook As Object
- Dim oRanges As Object
- Dim sAddress As String
- Set objExcel = CreateObject("Excel.Application")
- objExcel.Visible = True
- Set objWorkbook = objExcel.Workbooks.Open("c:\test.xls")
- Set ExcelWorkSheet = objWorkbook.Worksheets(1)
- sAddress = "A4:R9,A11:R436,A439:R452,A454:R1326" '<= ставим "дырявый" диапазон
- a = Split(sAddress, ",")
- Set oRange = ExcelWorkSheet.Range(a(0))
- For i = 1 To UBound(a)
- Set oRange = objExcel.Union(oRange, ExcelWorkSheet.Range(a(i)))
- Next
- oRange.Select
- Set objWorkbook = Nothing
- Set objExcel = Nothing
- Set oRange = Nothing
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д