Megosztás a következőn keresztül:


Az Excel automatizálása a Visual Basic .NET-ből egy tartomány adatainak tömbök használatával történő kitöltéséhez vagy beolvasásához

Összefoglalás

Ez a cikk bemutatja, hogyan automatizálhatja a Microsoft Excelt, és hogyan tölthet ki egy többcellás tartományt egy értéktömbbel. Ez a cikk azt is bemutatja, hogyan kérhető le tömbként egy többcellás tartomány az Automation használatával.

További információ

Ha egy többcellás tartományt cellák feltöltése nélkül szeretne kitölteni, a Tartomány objektum Érték tulajdonságát kétdimenziós tömbre állíthatja. Hasonlóképpen, egy kétdimenziós értéktömb egyszerre több cellához is lekérhető az Érték tulajdonság használatával. Az alábbi lépések bemutatják ezt a folyamatot az adatok kétdimenziós tömbökkel történő beállításához és lekéréséhez.

Az Automation-ügyfél létrehozása a Microsoft Excelhez

  1. Indítsa el a Microsoft Visual Studio .NET-et.

  2. A Fájl menüben kattintson az Új, majd a Projekt elemre. Válassza a Windows-alkalmazást a Visual Basic projekttípusok közül. Alapértelmezés szerint az 1. űrlap jön létre.

  3. Hivatkozás hozzáadása a Microsoft Excel objektumtárhoz. Ehhez hajtsa végre a következő lépéseket:

    1. Kattintson a Projekt menü Hivatkozás hozzáadása parancsára.
    2. A COM lapon keresse meg a Microsoft Excel objektumtárat, majd kattintson a Kijelölés gombra.

    Megjegyzés A Microsoft Office 2007 és a Microsoft Office 2003 tartalmazza az elsődleges együttműködési szerelvényeket (PIA-kat). A Microsoft Office XP nem tartalmazza a PIA-kat, de letölthetők.

  4. Kattintson az OK gombra a Hivatkozások hozzáadása párbeszédpanelen a kijelölt elemek elfogadásához. Ha a rendszer a kiválasztott kódtárak burkolóinak létrehozására kéri, kattintson az Igen gombra.

  5. A Nézet menüben válassza az Eszközkészlet lehetőséget az eszközkészlet megjelenítéséhez. Adjon hozzá két gombot és egy jelölőnégyzetet az 1. űrlaphoz.

  6. A jelölőnégyzet Név tulajdonságát Állítsa FillWithStrings értékre.

  7. Kattintson duplán a Button1 gombra. Megjelenik az űrlap kódablaka.

  8. Adja hozzá a következőt a Form1.vb fájl elejéhez:

    Imports Microsoft.Office.Interop
    
    
  9. A kódablakban cserélje le az alábbi kódot

     Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
    End Sub
    

    a következővel:

     'Keep the application object and the workbook object global, so you can  
     'retrieve the data in Button2_Click that was set in Button1_Click.
     Dim objApp As Excel.Application
     Dim objBook As Excel._Workbook
    
    Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
         Dim objBooks As Excel.Workbooks
         Dim objSheets As Excel.Sheets
         Dim objSheet As Excel._Worksheet
         Dim range As Excel.Range
    
    ' Create a new instance of Excel and start a new workbook.
         objApp = New Excel.Application()
         objBooks = objApp.Workbooks
         objBook = objBooks.Add
         objSheets = objBook.Worksheets
         objSheet = objSheets(1)
    
    'Get the range where the starting cell has the address
         'm_sStartingCell and its dimensions are m_iNumRows x m_iNumCols.
         range = objSheet.Range("A1", Reflection.Missing.Value)
         range = range.Resize(5, 5)
    
    If (Me.FillWithStrings.Checked = False) Then
             'Create an array.
             Dim saRet(5, 5) As Double
    
    'Fill the array.
             Dim iRow As Long
             Dim iCol As Long
             For iRow = 0 To 5
                 For iCol = 0 To 5
    
    'Put a counter in the cell.
                     saRet(iRow, iCol) = iRow * iCol
                 Next iCol
             Next iRow
    
    'Set the range value to the array.
             range.Value = saRet
    
    Else
             'Create an array.
             Dim saRet(5, 5) As String
    
    'Fill the array.
             Dim iRow As Long
             Dim iCol As Long
             For iRow = 0 To 5
                 For iCol = 0 To 5
    
    'Put the row and column address in the cell.
                     saRet(iRow, iCol) = iRow.ToString() + "|" + iCol.ToString()
                 Next iCol
             Next iRow
    
    'Set the range value to the array.
             range.Value = saRet
         End If
    
    'Return control of Excel to the user.
         objApp.Visible = True
         objApp.UserControl = True
    
    'Clean up a little.
         range = Nothing
         objSheet = Nothing
         objSheets = Nothing
         objBooks = Nothing
     End Sub
    
    
  10. Térjen vissza a Form1 tervező nézetéhez, majd kattintson duplán a 2. gombra.

  11. A kódablakban cserélje le az alábbi kódot

    Private Sub Button2_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles Button2.Click
    
    End Sub
    

    a következővel:

    Private Sub Button2_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles Button2.Click
        Dim objSheets As Excel.Sheets
        Dim objSheet As Excel._Worksheet
        Dim range As Excel.Range
    
    'Get a reference to the first sheet of the workbook.
        On Error Goto ExcelNotRunning
        objSheets = objBook.Worksheets
        objSheet = objSheets(1)
    
    ExcelNotRunning:
        If (Not (Err.Number = 0)) Then
            MessageBox.Show("Cannot find the Excel workbook.  Try clicking Button1 to " + _
            "create an Excel workbook with data before running Button2.", _
            "Missing Workbook?")
    
    'We cannot automate Excel if we cannot find the data we created, 
            'so leave the subroutine.
            Exit Sub
        End If
    
    'Get a range of data.
        range = objSheet.Range("A1", "E5")
    
    'Retrieve the data from the range.
        Dim saRet(,) As Object
        saRet = range.Value
    
    'Determine the dimensions of the array.
        Dim iRows As Long
        Dim iCols As Long
        iRows = saRet.GetUpperBound(0)
        iCols = saRet.GetUpperBound(1)
    
    'Build a string that contains the data of the array.
        Dim valueString As String
        valueString = "Array Data" + vbCrLf
    
    Dim rowCounter As Long
        Dim colCounter As Long
        For rowCounter = 1 To iRows
            For colCounter = 1 To iCols
    
    'Write the next value into the string.
                valueString = String.Concat(valueString, _
                    saRet(rowCounter, colCounter).ToString() + ", ")
    
    Next colCounter
    
    'Write in a new line.
            valueString = String.Concat(valueString, vbCrLf)
        Next rowCounter
    
    'Report the value of the array.
        MessageBox.Show(valueString, "Array Values")
    
    'Clean up a little.
        range = Nothing
        objSheet = Nothing
        objSheets = Nothing
    End Sub
    
    

Az Automation-ügyfél tesztelése

  1. Nyomja le az F5 billentyűt a mintaprogram létrehozásához és futtatásához.
  2. Kattintson a Gomb1 gombra. A Microsoft Excel egy új munkafüzettel kezdődik, és az első munkalap A1:E5 cellái egy tömbből származó numerikus adatokkal vannak feltöltve.
  3. Kattintson a 2. gombra. A program beolvassa az A1:E5 cellákban lévő adatokat egy új tömbbe, és megjeleníti az eredményeket egy üzenetmezőben.
  4. Jelölje ki a FillWithStrings elemet, majd a Gomb1 gombra kattintva töltse ki az A1:E5 cellákat a sztringadatokkal.

Hivatkozások

Ha további információt szeretne arról, hogy tömbök használatával hogyan állíthatja be és kérdezheti le az Excel-adatokat a Visual Studio korábbi verzióival, kattintson az alábbi cikkszámokra a Cikkszám hivatkozásra kattintva a Microsoft Tudásbázisban:

247412 INFO: Metódusok az Adatok átvitele az Excelbe Visual Basicből