Výpis dat z excelu   zodpovězená otázka

VB.NET

Dobrý den,

udělal jsem si malou aplikaci , která táhá text z excelovské tabulky, ale potřeboval bych , aby to fungovalo tak, že na pozadí otevře sešit načte data a sešit uzavře. první půlka úlohy maká , ale tu tabulku mi to nechává otevřenou, respektive mi vyskočí excel upozornění , že je možné tabulku upravovat. Vůbec netušim kde by mohla být chyba , jestli už při tom otevírání nebo nevim .... :)

Private Sub udaje_Click(sender As Object, e As EventArgs) Handles udaje.Click
        Dim c As String
        c = c_odl.Text
        Dim cesta_k As String
        cesta_k = "S:\11 - VÝROBA\VÝKRESOVÁ DOKUMENTACE\VÝKRES NÁSTROJE\Evidenční listy nástroje\Evidence forem - kokily\Evidence nástrojů - kokily - " + c + ".xls"
        Try
            If c = vbNullString Then
                MessageBox.Show("K zobrazení informací je nutné zadat číslo odlitku.")

            ElseIf File.Exists(cesta_k) = False Then
                MessageBox.Show("Neexistující číslo odlitku.")
            ElseIf File.Exists(cesta_k) = True Then
                udaje.Visible = False
                nac.Visible = True
                Dim excel As Excel.Application = _
               CType(CreateObject("excel.application"), Excel.Application)
                Dim appExcel As Excel.Application = CType(CreateObject("excel.application"), Excel.Application)
                appExcel.Workbooks.Open(cesta_k)
                excel.Workbooks.Open(Filename:=cesta_k)
                Dim ObsahA1 As String = _
                  excel.Workbooks("Evidence nástrojů - kokily - " + c + ".xls").Worksheets("Úvodní list").range("C7").value()
                Dim ObsahA2 As String = _
                  excel.Workbooks("Evidence nástrojů - kokily - " + c + ".xls").Worksheets("Úvodní list").range("C9").value()
                nac.Visible = False
                zak_i.Visible = True
                zak.Visible = True
                ozn_i.Visible = True
                ozn.Visible = True
                zak.Text = ObsahA1
                ozn.Text = ObsahA2
                ' MessageBox.Show("Počítačové číslo: " & c & vbCrLf & "Zákazník: " & ObsahA1 & vbCrLf & "Označení: " & ObsahA2)

                appExcel.Workbooks.Close()
                appExcel.Quit()
            End If
        Catch

            MessageBox.Show("K zobrazení informací je nutné mít na svém počítači instalovaný Microsoft EXCEL.")
        End Try
    End Sub

Díky za rady

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

Jsou tam dvě proměnné s otevřeným objektem, jedna s názvem appExcel, kde je voláno appExcel.Quit() a druhá s názvem excel ... Proč to tak je dvakrát přece dobře víte!

Tip :

Metoda Excel.Application.Workbooks.Open má parametry, jedním z nic je, že má být sešit otevřen pouze pro čtení (ReadOnly), lze to najít m.j. v nápovědě VBA, když otevřete svoji verzi excelu.

Tip na uvolnění aplikace excel (případně také listu či sešitu):

    appExcel.Quit()
    FinalReleaseComObject(appExcel)

V úvodu modulu formuláře doplnit:

Imports System.Runtime.InteropServices

Funkci si zkopírovat do modulu:

    Private Sub FinalReleaseComObject(ByRef Reference As Object)
        Try
            If Marshal.IsComObject(Reference) Then
                Marshal.FinalReleaseComObject(Reference)
            End If
        Catch
        Finally
            Reference = Nothing
        End Try
    End Sub

Závěrem ještě pár tipů, jak se dostat k buňce v excelu :

http://www.dotnetportal.cz/forum/tema/34...

Příklady s připojením skrzeva OleDbConnection a prostřednictvím funkce GetValue ,

kde se volá excel4macro, poskytují možnost načíst hodnoty ze zavřeného sešitu.

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

Díky za rady i za tip, výsledek by mohl být , že to bude celé rychlejší... Díky

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