Visual Basic 2010 Express   otázka

VB.NET

Dobrý den,

potřebuji pomoci. Asi před 2 roky nám student v naší firmě udělal prográmek za pomocí Visual Basic 2010 Express. Vyplňujeme různé comboboxy a ty se pak kopírují do různých excelovských tabulek po stisknutí tlačítka.

Problém nastal při přechodu z excelu 2007 na excel 2013. Program nejen kopíruje, ale také načítá data z tabulek a při načítání i kopírování se program velice zpomalil a také se nyní každý otevíraný ecelovský soubor zobrazí fyzicky na obrazovce. Před tím se soubor otevřel pouze v paměti PC, takže byl vidět pouze skrze TaskManager. Může mi někdo poradit, kde může být problém, když doposud vše fungovalo a nic se neměnilo. Přikládám pro informaci jak je napsané otevření souboru. Mohu přidat i zavírání. Děkuji za pomoc

Tímto volám proceduru otevři soubor

otevri_soubor(ad_nastav, True, False, heslo_1_r, heslo_1_w) 'ad_nastav = cesta k souboru „nastaveni.xlsx“ stejným způsobem se volají i další soubory.

Zde je procedura otevři soubor

Public Sub otevri_soubor(ByVal cesta As String, ByVal read As Boolean, ByVal edit As Boolean, ByVal heslo_R As String, ByVal heslo_W As String)

Dim a As Boolean

fs = CreateObject("Scripting.FileSystemObject")

a = fs.fileexists(cesta)

If a = False Then MsgBox("Zkontrolujte prosím cestu k souboru " & cesta) : Exit Sub

If soubor_otevren = 0 Then

Promenne.xlApp = New Excel.Application _

: Promenne.xlWorkBook = xlApp.Workbooks.Open(cesta, ReadOnly:=read, Editable:=edit, WriteResPassword:=heslo_W, Password:=heslo_R, IgnoreReadOnlyRecommended:=edit) _

: soubor_otevren = 1

Else

Promenne.xlApp1 = New Excel.Application _

: Promenne.xlWorkBook1 = xlApp1.Workbooks.Open(cesta, ReadOnly:=read, Editable:=edit, WriteResPassword:=heslo_W, Password:=heslo_R, IgnoreReadOnlyRecommended:=edit)

: soubor_otevren = 2

End If

End Sub

'Globální funkce zavři soubor - uvolni paměť

Public Sub zavri_soubor()

If soubor_otevren = 1 Then

releaseObject(Promenne.xlWorkSheet)

xlWorkBook.Close(False)

releaseObject(Promenne.xlWorkBook)

Promenne.xlApp.Quit()

releaseObject(Promenne.xlApp)

soubor_otevren = 0

End If

If soubor_otevren = 2 Then

releaseObject(Promenne.xlWorkSheet1)

xlWorkBook1.Close(False)

releaseObject(Promenne.xlWorkBook1)

Promenne.xlApp1.Quit()

releaseObject(Promenne.xlApp1)

soubor_otevren = 1

End If

End Sub

'Uvolnění paměti po exel objektech

Public Sub releaseObject(ByVal obj As Object)

Try

System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)

obj = Nothing

Catch ex As Exception

obj = Nothing

Finally

GC.Collect()

GC.WaitForPendingFinalizers()

End Try

End Sub

Zde jsou prommene

Imports Excel = Microsoft.Office.Interop.Excel

Imports Microsoft.Office.Interop.Excel

Imports System.Threading

#Region "Globální proměnné"

Public heslo_ov_r As String = ""

Public heslo_ov_w As String = "xxx"

Public heslo_1_r As String = ""

Public heslo_1_w As String = "xxx"

Public heslo_NC_r As String = ""

Public heslo_NC_w As String = "xxx"

#Region "Globální proměnné pro otevření souboru"

Public xlApp As Excel.Application

Public xlWorkBook As Excel.Workbook

Public xlWorkSheet As Excel.Worksheet

Public xlApp1 As Excel.Application

Public xlWorkBook1 As Excel.Workbook

Public xlWorkSheet1 As Excel.Worksheet

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

Tady máte nápovědu a celý postup jak na Excel. Funguje pro verzi 2007, 2010, ...

http://www.visual-basic-tutorials.com/Wr...

Stačí jen v Referencích vybrat správnou knihovnu.

Oni tam mají Microsoft Excel 12.0

Použijte ale Microsoft Excel 14.0 a vyšší ( tu co tam budete mít ).

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

Nastavil jsem v referencích Microsoft Excel 15.0 Object Library a Microsoft Office 15.0 Object Library a problém stále trvá. Domnívám se, že referencemi to pravděpodobně nebude.

Nemá někdo jiný nápad?

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