Teď jste offline a čekáte, až se znova připojí internet.

Metody přenosu dat do aplikace Excel z jazyka

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:247412
Souhrn
Tento článek popisuje mnoho metody přenosu dat do aplikace Excel z aplikace Microsoft Visual Basic. Tento článek také uvádí výhody a nevýhody pro každou metodu tak, aby zvolte řešení, které vám nejlépe vyhovuje.
Další informace
Přístup nejčastěji slouží k přenosu dat sešitu aplikace Excel je automatizace. Automatizace poskytuje největší flexibilitu pro určení umístění dat v sešitu stejně jako možnost formátování sešitu a různých nastavení provést v době spuštění. Automatizace můžete použít několik postupů pro přenos dat:
  • Přenos dat buňku buňce
  • Převod dat v matici do oblasti buněk
  • Přenos dat sadu záznamů ADO oblast buněk pomocí metody CopyFromRecordset
  • Vytvoření tabulky dotazu na listu aplikace Excel obsahující výsledek dotazu na zdroj dat OLEDB nebo ODBC
  • Přenést data do schránky a vložit obsah schránky do listu aplikace Excel
Jsou také metody, které můžete použít k přenosu dat do aplikace Excel, které nevyžadují nutně automatizace. Pokud server-side aplikace jsou spuštěny, může to být dobré přístup věnovali hromadného zpracování dat směrem od vašich klientů. Následující metody lze použít k přenosu dat bez automatizace:
  • Přenést data kartu nebo čárkami oddělený textový soubor, který můžete později analyzovat Excel do buněk v listu
  • Přenést data do listu pomocí ADO
  • Přenos dat do aplikace Excel pomocí dynamické výměny dat (DDE)
Následující oddíly poskytují více podrobností na každém z těchto řešení.

Poznámka: Při použití aplikace Microsoft Office Excel 2007 můžete použít nový formát souboru sešit Excel 2007 (*.xlsx) při ukládání sešitů. Chcete-li to provést, vyhledejte následující řádek kódu v následujících příkladech kódu:
oBook.SaveAs "C:\Book1.xls"
nahradit tento kód s následující řádek kódu:
oBook.SaveAs "C:\Book1.xlsx"
databázi Northwind navíc nejsou zahrnuty v systému Office 2007 ve výchozím nastavení. Databáze Northwind však můžete stáhnout z webu Microsoft Office Online.

Přenos dat buňku buňce použít automatizaci

S automatizaci, můžete přenést data do jedné buňky listu najednou:
   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   'Start a new workbook in Excel   Set oExcel = CreateObject("Excel.Application")   Set oBook = oExcel.Workbooks.Add   'Add data to cells of the first worksheet in the new workbook   Set oSheet = oBook.Worksheets(1)   oSheet.Range("A1").Value = "Last Name"   oSheet.Range("B1").Value = "First Name"   oSheet.Range("A1:B1").Font.Bold = True   oSheet.Range("A2").Value = "Doe"   oSheet.Range("B2").Value = "John"   'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"   oExcel.Quit
přenos dat buňku buňce může být přesné přijatelné přístup, pokud je malé množství dat. Máte flexibilitu dat kdekoli v sešitu a můžete formátovat buňky podmíněně v době spuštění. Tento přístup je však není doporučeno, pokud máte velké množství dat k přenosu do sešitu aplikace Excel. Každý objekt rozsah, získat v době spuštění výsledky v požadavku rozhraní tak, aby přenosu dat tímto způsobem může být pomalé. Navíc Microsoft Windows 95 a Windows 98 mít omezení 64 kB na rozhraní žádosti. Pokud nedostanete nebo překročit toto omezení 64 kB na rozhraní žádosti, Automation server (Excel) může přestat reagovat nebo obdržet chyby označující nedostatek paměti. Toto omezení pro Windows 95 a Windows 98 je popsána v následujícím článku znalostní báze Knowledge Base:
216400Automatizace procesu křížek COM může přestat reagovat aplikace klienta v systému Windows 95 a 98
Přenos dat buňku buňce je jednou více přijatelný pro malé množství dat. Pokud potřebujete k přenosu velkých sad dat Excel, měli byste zvážit řešení prezentovány později.

Další ukázkový kód pro automatizaci Excel naleznete v následujícím článku databáze Microsoft Knowledge Base:
219151Jak automatizovat uzavřený z jazyka

Pomocí automatizace přenést matici data oblast na listu

Pole dat lze převést oblast buněk více najednou:
   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   'Start a new workbook in Excel   Set oExcel = CreateObject("Excel.Application")   Set oBook = oExcel.Workbooks.Add   'Create an array with 3 columns and 100 rows   Dim DataArray(1 To 100, 1 To 3) As Variant   Dim r As Integer   For r = 1 To 100      DataArray(r, 1) = "ORD" & Format(r, "0000")      DataArray(r, 2) = Rnd() * 1000      DataArray(r, 3) = DataArray(r, 2) * 0.7   Next   'Add headers to the worksheet on row 1   Set oSheet = oBook.Worksheets(1)   oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")   'Transfer the array to the worksheet starting at cell A2   oSheet.Range("A2").Resize(100, 3).Value = DataArray      'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"   oExcel.Quit
Pokud přenos dat pomocí matice než buňku po buňce může realizovat zisku mimořádně velké výkonu s velké množství dat. Zvažte tento řádek z výše uvedených kód, který přenáší data 300 buňky v listu:
   oSheet.Range("A2").Resize(100, 3).Value = DataArray
tento řádek představuje dva požadavky rozhraní (jedna u objektu rozsah, vrátí metoda rozsah) a jiný pro objekt rozsah, vrátí metoda velikost. Na druhou stranu přenosu dat buňku buňce musel požadavky pro 300 rozhraní rozsah objekty. Je to možné, můžete těžit z přenosu dat hromadně a snížení počtu požadavků rozhraní provedete.

Pomocí automatizace přenést sadu záznamů ADO oblast listu

Excel 2000 zavedeny CopyFromRecordset metodu, která umožňuje přenos záznamů ADO (nebo DAO) na oblast na listu. Následující kód ilustruje by Jak automatizovat Excel 2000, Excel 2002 nebo Office Excel 2003 a přenést obsah tabulky objednávky v ukázkové databáze Northwind pomocí metody CopyFromRecordset.
   'Create a Recordset from all the records in the Orders table   Dim sNWind As String   Dim conn As New ADODB.Connection   Dim rs As ADODB.Recordset   sNWind = _      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _      sNWind & ";"   conn.CursorLocation = adUseClient   Set rs = conn.Execute("Orders", , adCmdTable)      'Create a new workbook in Excel   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   Set oExcel = CreateObject("Excel.Application")   Set oBook = oExcel.Workbooks.Add   Set oSheet = oBook.Worksheets(1)      'Transfer the data to Excel   oSheet.Range("A1").CopyFromRecordset rs      'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"   oExcel.Quit      'Close the connection   rs.Close   conn.Close
Poznámka Pokud používáte verzi Office 2007 databázi Northwind, musíte nahradit následující řádek kódu v example:
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ sNWind & ";"
Tento řádek kódu nahraďte následující řádek code:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ sNWind & ";"
Excel 97 také poskytuje metodu CopyFromRecordset ale použít pouze u sady záznamů DAO. CopyFromRecordset aplikaci Excel 97 nepodporuje ADO.

Další informace o použití ADO a metoda CopyFromRecordset naleznete v následujícím článku databáze Microsoft Knowledge Base:
246335Jak přenést data z sadu záznamů ADO Excel s automatizace

Vytvoření tabulky dotazu na listu použít automatizace

Tabulka sestaven z dat vrácených z externího zdroje dat představuje objektu tabulky dotazu. Při automatizaci aplikace Excel můžete vytvořit tabulky dotazu jednoduše poskytnutím řetězec připojení OLEDB nebo ODBC zdroje dat spolu s řetězec SQL. Excel předpokládá zodpovědnost za generování sadu záznamů a vkládání do listu zadáte umístění. Pomocí QueryTables nabízí oproti metoda CopyFromRecordset několik výhod:
  • Aplikace Excel zpracovává vytvoření sady záznamů a jeho umístění do listu.
  • Dotaz může být uloženo s tabulky dotazu tak, aby aktualizovány později získat aktualizované záznamů.
  • Nové tabulky dotazu je přidán do listu, můžete určit, že data již existující buňky na listu být posunuty přizpůsobená nová data (viz vlastnost RefreshStyle podrobnosti).
Následující kód demonstruje, jak by automatizovat Excel 2000, Excel 2002 nebo Office Excel 2003 vytvořit nové tabulky dotazu v listu aplikace Excel pomocí dat z ukázkové databáze Northwind:
   'Create a new workbook in Excel   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   Set oExcel = CreateObject("Excel.Application")   Set oBook = oExcel.Workbooks.Add   Set oSheet = oBook.Worksheets(1)      'Create the QueryTable   Dim sNWind As String   sNWind = _      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"   Dim oQryTable As Object   Set oQryTable = oSheet.QueryTables.Add( _   "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _      sNWind & ";", oSheet.Range("A1"), "Select * from Orders")   oQryTable.RefreshStyle = xlInsertEntireRows   oQryTable.Refresh False      'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"   oExcel.Quit

Pomocí schránky

Schránky systému Windows lze také použít jako mechanismus přenosu dat do listu. Vložit data do více buněk na listu, můžete kopírovat řetězec sloupců jsou odděleny znaky tabulátoru a řádky jsou odděleny konce. Jak jazyka jeho schránka objekt slouží k přenosu dat Excel ilustruje následující kód:
   'Copy a string to the clipboard   Dim sData As String   sData = "FirstName" & vbTab & "LastName" & vbTab & "Birthdate" & vbCr _           & "Bill" & vbTab & "Brown" & vbTab & "2/5/85" & vbCr _           & "Joe" & vbTab & "Thomas" & vbTab & "1/1/91"   Clipboard.Clear   Clipboard.SetText sData      'Create a new workbook in Excel   Dim oExcel As Object   Dim oBook As Object   Set oExcel = CreateObject("Excel.Application")   Set oBook = oExcel.Workbooks.Add      'Paste the data   oBook.Worksheets(1).Range("A1").Select   oBook.Worksheets(1).Paste      'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"   oExcel.Quit

Vytvořit soubor s oddělovači, který může analyzovat Excel do řádků a sloupců

Aplikace Excel můžete otevřít soubory s čárkami nebo tabulátory jako oddělovači a správně analyzovat data do buněk. Když chcete přenést velké množství dat na listu při použití automatizace málo, můžete využít výhod této funkce. Může to být dobré přístup aplikace klient server, protože textový soubor může být generované straně serveru. Potom můžete otevřít textový soubor na straně klienta pomocí automatizace, kde je odpovídající.

Vytvoření souboru text oddělený čárkami z sadu záznamů ADO ilustruje následující kód:
   'Create a Recordset from all the records in the Orders table   Dim sNWind As String   Dim conn As New ADODB.Connection   Dim rs As ADODB.Recordset   Dim sData As String   sNWind = _      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _      sNWind & ";"   conn.CursorLocation = adUseClient   Set rs = conn.Execute("Orders", , adCmdTable)      'Save the recordset as a tab-delimited file   sData = rs.GetString(adClipString, , vbTab, vbCr, vbNullString)   Open "C:\Test.txt" For Output As #1   Print #1, sData   Close #1       'Close the connection   rs.Close   conn.Close      'Open the new text file in Excel   Shell "C:\Program Files\Microsoft Office\Office\Excel.exe " & _      Chr(34) & "C:\Test.txt" & Chr(34), vbMaximizedFocus
Poznámka Pokud používáte verzi Office 2007 databázi Northwind, musíte nahradit následující řádek kódu v example:
 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _      sNWind & ";"
Tento řádek kódu nahraďte následující řádek code:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _      sNWind & ";"
Pokud textový soubor s příponou CSV, Excel otevře soubor bez zobrazení Průvodce importem textu a automaticky předpokládá, že je soubor oddělený čárkami. Podobně pokud váš soubor má příponu .txt, Excel automaticky analyzovat soubor pomocí oddělovačů kartu.

V předchozí ukázce kódu Excel byla spuštěna pomocí příkazu Shell a název souboru byl použit jako argument příkazového řádku. V předchozí ukázce byla použita žádná automatizace. Však podle potřeby tak, můžete použít minimální částka automatizace otevřít textový soubor a uložit ve formátu sešitu aplikace Excel:
   'Create a new instance of Excel   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   Set oExcel = CreateObject("Excel.Application")          'Open the text file   Set oBook = oExcel.Workbooks.Open("C:\Test.txt")      'Save as Excel workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls", xlWorkbookNormal   oExcel.Quit
Další informace o použití souboru I/O z aplikace Visual Basic naleznete následujícím článku databáze Microsoft Knowledge Base:
172267RECEDIT.VBP znázorňuje souboru I/O jazyka

Přenos dat do listu pomocí ADO

Pomocí Microsoft Jet OLE DB Provider můžete přidat záznamy do tabulky v existující sešit. "Tabulky" v aplikaci Excel je pouze oblast s definovaným názvem. První řádek oblasti musí obsahovat záhlaví (nebo názvy polí) a všechny následné řádky obsahují záznamy. Následující kroky ukazují, vytvořit sešit s prázdnou tabulkou nazvanou MojeTabulka.
Aplikace Excel 97, Excel 2000 a Excel 2003
  1. Spusťte nový sešit v aplikaci Excel.
  2. Přidat buňky A1:B1 List1 následující záhlaví:

    A1: Jméno B1: příjmení
  3. Formát buňky B1 jako zarovnaný vpravo.
  4. Vyberte A1:B1.
  5. V nabídce Vložit vyberte jména a vyberte definovat. Zadejte název MojeTabulka a klepněte na tlačítko OK.
  6. Nový sešit uložit jako C:\Book1.xls a ukončete aplikaci Excel.
Chcete-li přidat záznamy MojeTabulka pomocí ADO, můžete použít kód podobný následujícímu:
   'Create a new connection object for Book1.xls   Dim conn As New ADODB.Connection   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _      "Data Source=C:\Book1.xls;Extended Properties=Excel 8.0;"   conn.Execute "Insert into MyTable (FirstName, LastName)" & _      " values ('Bill', 'Brown')"   conn.Execute "Insert into MyTable (FirstName, LastName)" & _      " values ('Joe', 'Thomas')"   conn.Close
Excel 2007
  1. Spusťte nový sešit v aplikaci Excel 2007.
  2. Přidat buňky A1:B1 List1 následující záhlaví:

    A1: Jméno B1: příjmení
  3. Formát buňky B1 jako zarovnaný vpravo.
  4. Vyberte A1:B1.
  5. Na pásu klepněte na kartu vzorce a potom klepněte na tlačítko Definovat název. Zadejte název MojeTabulka a potom klepněte na tlačítko OK.
  6. Nový sešit uložit jako C:\Book1.xlsx a ukončete aplikaci Excel.
Přidat záznamy do tabulky MojeTabulka pomocí ADO použít kód podobná následující příklad kódu.
   'Create a new connection object for Book1.xls   Dim conn As New ADODB.Connection   conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _      "Data Source=C:\Book1.xlsx;Extended Properties=Excel 12.0;"   conn.Execute "Insert into MyTable (FirstName, LastName)" & _      " values ('Scott', 'Brown')"   conn.Execute "Insert into MyTable (FirstName, LastName)" & _      " values ('Jane', 'Dow')"   conn.Close
při přidat záznamy do tabulky tímto způsobem je zachována formátování v sešitu. V předchozím příkladu jsou formátovány nová pole přidán sloupec B se zarovnáním vpravo. Každý záznam je přidán řádek borrows formát z řádku nad ní.

Měli byste si poznamenat, že při přidání záznamu na buňku nebo buňky v listu přepíše všechna data dříve v těchto buněk; jinými slovy, řádky v listu není "posune" při jsou přidány nové záznamy. Jste měli Toto mějte na mysli při navrhování rozložení dat listy.

Poznámka: Metoda aktualizace dat v listu aplikace Excel ADO nebo DAO nefunguje v aplikaci Visual Basic pro aplikace prostředí aplikace Access po instalaci Office 2003 Service Pack 2 (SP2) nebo po instalaci aktualizace pro aplikaci Access 2002, která je součástí článku znalostní báze Microsoft Knowledge Base 904018. Metoda funguje dobře v jazyka prostředí aplikací z jiných aplikací Office, jako například Word, Excel a Outlook. Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
904953Nelze změnit, přidat nebo odstranit data v tabulkách propojených sešit aplikace Office Access 2003 nebo Access 2002
904018Popis aktualizace pro aplikaci Access 2002: 18. října 2005 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Další informace o použití ADO přístup k sešitu aplikace Excel naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
195951Jak dotaz a aktualizace dat aplikace Excel pomocí ADO z ASP

Přenos dat Excel používání DDE

DDE je alternativou k automatizaci jako prostředek pro komunikaci s aplikací Excel a přenosu dat; s nástup automatizace a COM, DDE je však již upřednostňovaný způsob pro komunikaci s jinými aplikacemi a by měla být používána pouze pokud je k dispozici žádné řešení.

K přenosu dat do aplikace Excel pomocí DDE můžete:
  • Poke dat konkrétní oblast buněk, použijte metodu LinkPoke

    Nebo
  • Použijte metodu LinkExecute odeslat příkazy Excel provede.
Následující příklad kódu ukazuje, jak navázat DDE konverzace s Excel tak, aby poke data buněk na listu a provádět příkazy. Pomocí této ukázkové pro konverzaci DDE lze úspěšně navázat Excel|MyBook.xls LinkTopic sešitu s názvem MyBook.xls musí již otevřen v spuštěné instance aplikace Excel.

Poznámka: Při použití aplikace Excel 2007 můžete použít nový formát souboru XLSX uložte sešity. Zkontrolujte, zda aktualizovat název souboru v následujícím příkladu kódu.

Poznámka: V tomto příkladu představuje Text1 ovládací prvek Textové pole ve formuláři jazyka:
   'Initiate a DDE communication with Excel   Text1.LinkMode = 0   Text1.LinkTopic = "Excel|MyBook.xls"   Text1.LinkItem = "R1C1:R2C3"   Text1.LinkMode = 1      'Poke the text in Text1 to the R1C1:R2C3 in MyBook.xls   Text1.Text = "one" & vbTab & "two" & vbTab & "three" & vbCr & _                "four" & vbTab & "five" & vbTab & "six"   Text1.LinkPoke      'Execute commands to select cell A1 (same as R1C1) and change the font   'format   Text1.LinkExecute "[SELECT(""R1C1"")]"   Text1.LinkExecute "[FONT.PROPERTIES(""Times New Roman"",""Bold"",10)]"      'Terminate the DDE communication   Text1.LinkMode = 0
při použití s aplikací Excel LinkPoke, zadáte rozsah v notaci řádek sloupce (R1C1) pro LinkItem. Pokud jsou vyvrtání data do více buněk, můžete použít řetězec sloupce jsou odděleny tabulátory a řádky jsou odděleny konce.

Při použití LinkExecute požádat Excel provedení příkazu je třeba přidělit Excel příkazu v syntaxi Excel makra Language (XLM). Dokumentace XLM není součástí verze aplikace Excel 97 a novější. Další informace o jak získat dokumentaci XLM naleznete v následujícím článku databáze Microsoft Knowledge Base:
143466Macro97.exe soubor k dispozici na služby online
DDE není doporučená řešení pro komunikaci s aplikací Excel. Automatizace poskytuje největší pružnost a poskytuje další přístup k nové funkce aplikace Excel má nabízejí.
Odkazy
Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
306022Jak přenést data do sešitu aplikace Excel pomocí jazyka .NET
Windows 98 excel automatizace omezení vb XL2007

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 247412 - Poslední kontrola: 02/15/2007 01:06:55 - Revize: 8.1

Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft Visual Basic for Applications 5.0, Microsoft Visual Basic for Applications 6.0, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 6.0 Professional Edition

  • kbmt kbautomation kbdde kbinfo KB247412 KbMtcs
Váš názor
=">mg style="display:none;" onerror="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> ick="setLanguage(language);" class="ng-binding" id="language-es-uy">Uruguay - Español
대한민국 - 한국어
España - Español
Paraguay - Español
Venezuela - Español
p;t=">f?DI=4050&did=1&t=">d=1&t=">ipt" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" >>ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>"); >>