Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ö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
Indítsa el a Microsoft Visual Studio .NET-et.
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.
Hivatkozás hozzáadása a Microsoft Excel objektumtárhoz. Ehhez hajtsa végre a következő lépéseket:
- Kattintson a Projekt menü Hivatkozás hozzáadása parancsára.
- 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.
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.
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.
A jelölőnégyzet Név tulajdonságát Állítsa FillWithStrings értékre.
Kattintson duplán a Button1 gombra. Megjelenik az űrlap kódablaka.
Adja hozzá a következőt a Form1.vb fájl elejéhez:
Imports Microsoft.Office.Interop
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
Térjen vissza a Form1 tervező nézetéhez, majd kattintson duplán a 2. gombra.
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
- Nyomja le az F5 billentyűt a mintaprogram létrehozásához és futtatásához.
- 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.
- 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.
- 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