как очистить ака отобразить все содержимое документа Excel в VB6 - PullRequest
0 голосов
/ 06 февраля 2012

Я создал программу для чтения документов Excel и отображения их в окне сообщений.но дело в том, что я хочу просмотреть все это в messageBox, не зная, какую строку или столбец выбрать.я написал этот код:

  Private Sub Command1_Click()
  On Error GoTo Err

  StartExcel

  Set ExcelWBk = Excel.Workbooks.Open(App.Path & "\Dataku.xls")
  Set ExcelWS = ExcelWBk.Worksheets(1)
  With ExcelWS

    Dim i As Integer
    Dim strData As String

    For i = 1 To 5

      strData = strData & .Cells(i, 1) & vbCrLf
    Next i
  End With

  MsgBox strData
  CloseWorkSheet
  ClearExcelMemory
  Exit Sub
Err:
  ClearExcelMemory 
End Sub

, но он вернулся только к данным этого столбца (столбец 1).Мне нужно прочитать весь файл Excel.

1 Ответ

0 голосов
/ 06 февраля 2012

Примерно так (протестировано в PowerPoint, так как у меня нет VB6) получится UsedRange первой ячейки листа за ячейкой (с использованием массива для эффективности)

Просьба изменить путь к файлу в соответствии с требованиями.

Первая версия - протестирована в PowerPoint

Sub GetData()
Dim objExcel As Object
Dim objWB As Object
Dim objws As Object
Dim X As Variant
Dim lngCol As Long
Dim lngRow As Long
Dim strOut As String


Set objExcel = CreateObject("Excel.Application")
On Error Resume Next
Set objWB = objExcel.Workbooks.Open("c:\temp\test.xlsx")
Set objws = objWB.Sheets(1)
On Error GoTo 0
If objws Is Nothing Then Exit Sub

'recalc usedrange
objws.usedrange
X = objws.usedrange
For lngRow = 1 To UBound(X, 1)
    For lngCol = 1 To UBound(X, 2)
        strOut = strOut & (X(lngRow, lngCol) & vbNewLine)
    Next
Next

objWB.Close False
objExcel.Quit
Set objExcel = Nothing
If Len(strOut) > 0 Then MsgBox strOut
End Sub

VBS версия

Dim objExcel
Dim objWB
Dim objws 
Dim X
Dim lngCol
Dim lngRow
Dim strOut  

Set objExcel = CreateObject("Excel.Application") 
On Error Resume Next 
Set objWB = objExcel.Workbooks.Open("c:\temp\test.xlsx") 
Set objws = objWB.Sheets(1) 
On Error GoTo 0 
If IsEmpty(objws) Then Stop

'recalc usedrange 
objws.usedrange 
X = objws.usedrange 
For lngRow = 1 To UBound(X, 1) 
    For lngCol = 1 To UBound(X, 2) 
        strOut = strOut & (X(lngRow, lngCol) & vbNewLine) 
    Next 
Next 

objWB.Close False 
objExcel.Quit 
Set objExcel = Nothing 
If Len(strOut) > 0 Then MsgBox strOut 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...