Не присваивается непоследовательный Range для Excel из VB6.0

Узнай цену своей работы

Формулировка задачи:

Добрый день! Возникла проблема на позднем подключении из приложения к экселю. А именно, невозможно присвоить "дырявый" Range объекту. В VBA код работает хорошо. В VB работает только с непрерывным диапазоном. См. код:
Листинг программы
  1. Private Sub test()
  2. Dim objExcel As Object
  3. Dim objWorkbook As Object
  4. Dim oRanges
  5. Dim sAddress As String
  6. Set objExcel = CreateObject("Excel.Application")
  7. Set objWorkbook = objExcel.Workbooks.Open("c:\test.xls")
  8. ExcelWorkSheet = objWorkbook.Worksheets(1)
  9. objExcel.Visible = True
  10. sAddress = "A4:R436"
  11. Set oRanges = ExcelWorkSheet.Range(sAddress) '<= код работает с непрерывным диапазоном
  12. '(Set oRanges = objExcel.Range(sAddress) '<= тоже работает)
  13. sAddress = "A4:R9,A11:R436,A439:R452,A454:R1326" '<= ставим "дырявый" диапазон
  14. Set oRanges = ExcelWorkSheet.Range(sAddress) 'в VB ошибка, но в VBA работает.
  15. Set objWorkbook = Nothing
  16. Set objExcel = Nothing
  17. Set oRange = Nothing
  18. End Sub
Как ещё можно присвоить непоследовательный Range объекту из VB?

Решение задачи: «Не присваивается непоследовательный Range для Excel из VB6.0»

textual
Листинг программы
  1. Private Sub test()
  2.     Dim objExcel        As Object
  3.     Dim objWorkbook     As Object
  4.     Dim oRanges         As Object
  5.    
  6.     Dim sAddress         As String
  7.    
  8.     Set objExcel = CreateObject("Excel.Application")
  9.     objExcel.Visible = True
  10.     Set objWorkbook = objExcel.Workbooks.Open("c:\test.xls")
  11.    
  12.     Set ExcelWorkSheet = objWorkbook.Worksheets(1)
  13.    
  14.     sAddress = "A4:R9,A11:R436,A439:R452,A454:R1326"     '<= ставим "дырявый" диапазон
  15.    a = Split(sAddress, ",")
  16.     Set oRange = ExcelWorkSheet.Range(a(0))
  17.     For i = 1 To UBound(a)
  18.       Set oRange = objExcel.Union(oRange, ExcelWorkSheet.Range(a(i)))
  19.     Next
  20.     oRange.Select
  21.    
  22.     Set objWorkbook = Nothing
  23.     Set objExcel = Nothing
  24.     Set oRange = Nothing
  25.  
  26. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут