VB2005 -> Excel   otázka

VB.NET, Office

Dobrý večer, potrebujem pomoc preniesť rádovo 1000 hodnôt do Excelovskej šablony (súboru). Prenos do nového Excel súboru som našiel pripájam kód, ale do existujúceho sa mi nedarí. Pracujem s VB2005, Excel2003.Ďakujem

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object

        'Start a new workbook in Excel.
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add

        'Create an array with 3 columns and 100 rows.
        Dim DataArray(99, 2) As Object
        Dim r As Integer
        For r = 0 To 99
            DataArray(r, 0) = "ORD" & Format(r + 1, "0000")
            DataArray(r, 1) = Rnd() * 1000
            DataArray(r, 2) = DataArray(r, 1) * 0.07
        Next

        'Add headers to the worksheet on row 1.
        oSheet = oBook.Worksheets(1)
        oSheet.Range("A1").Value = "Order ID"
        oSheet.Range("B1").Value = "Amount"
        oSheet.Range("C1").Value = "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:\" & "Book2.xls")
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
    End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

s Excelem nepracuju denně, takže jenom hádám. Místo vytvoření nového souboru (sešitu) chcete otevřít již existující soubor. Zkuste tedy příkaz Workbooks.Add nahradit příkazem Workbooks.Open, kterému předáte adresu šablony.

 oBook = oExcel.Workbooks.Open("c:\sablona.xls")

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Úprava nepomohla. Odkaz je na VBA ja potrebuje VB2005.

Ďakujem za snahu. Prešiel som veľa odkazov ale všetky riešia

zápis z VB do nového zošita nie do existujúcej šablony (Excelu).

Teraz ma napadlo že to ešte skúsim do WORDU.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nedalo mi to spát, tak jsem to vyzkoušel. Následující kód otevře soubor sablona.xls, do buňky A2 zapíše text a uloží jako sablona2.xls. Vše mi funguje podle očekávání.

    Sub Main()
        Dim app As New Microsoft.Office.Interop.Excel.Application
        Dim wb As Workbook = app.Workbooks.Open("c:\sablona.xls")
        Dim sheet As Worksheet = wb.Worksheets(1)
        sheet.Range("A2").Value = "Text zapsaný z kódu"
        wb.SaveAs("c:\sablona2.xls")
        wb.Close()
        app.Quit()
    End Sub

Používám VB2010 a nareferencoval jsem Microsoft.Office.Interop.Excel ve verzi 12.0.0.0. Jak se projevuje, že vám to nefunguje? Vypisuje chybu (Exception)? Data se nezapíšou? Soubor se nevytvoří?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Už neviem čo mám skúsiť. Vo VB2005 ako aj vo VB2010 mi to robí to isté.

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Dim app As New Microsoft.Office.Interop.Excel.Application
        Dim wb As Workbook = app.Workbooks.Open("c:\sablona.xls")
        Dim sheet As Worksheet = wb.Worksheets(1)
        sheet.Range("A2").Value = "Text zapsaný z kódu"
        wb.SaveAs("c:\sablona2.xls")
        wb.Close()
        app.Quit()
    End Sub

Workbook,Worksheet nepozná. Hlási chybu "is not defined".

Skúšal som pridať referencie "Office 11.0 aj Office 12.0"

ale až ak som pridal refereciu na "Excel 11.0" tak prešla prvá deklarácia.

"Dim app As New Microsoft.Office.Interop.Excel.Application"

Všimol som si že po pridaní ref. na Office pridá

"Dim app As New Microsoft.Office.Core"

"

Podľa toho čo som našiel na NETe tak majú pre každú verziu čosi iné. Ak by ste mal čas a ochotu mi pomôcť tak by som bol rád. Ďakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na začátku souboru s kódem musíte importovat požadovaný namespace

Imports Microsoft.Office.Interop.Excel

nebo psát celé názvy např.

Dim wb As Microsoft.Office.Interop.ExcelWorkbook = app.Workbooks.Open("c:\sablona.xls")

Zapoměl jsem to zmínit, přišlo mi to jako samozřejmost.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Veľmi pekne ďakujem, už mi to ide vo VB2005 aj vo VB2010.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skoro som sa tešil. Po pridaní 'namespace'

Imports Microsoft.Office.Interop.Excel

došlo k chybe v príkaze

ev.Graphics.DrawString(Label3.Text, New Font("Courier New", 11, FontStyle.Bold), Brushes.Black, x, y)

ktorý používa 'namespace'

Imports system.drawing.printing

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nastala chyba "Font": 'New' cannot be used on an interface

Doposiaľ som to používal - fungovalo.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback