Aplikace Excel   zodpovězená otázka

VB6/VBA

Zdravím všechny fanoušky VB.net

Mám takový dotaz, jak můžu vytvořit aplikaci Excel ve které se mi otevře pouze Workbook který určím?

Nyní používam:

aplikace_XL = CreateObject("Excel.Application")

Jiné workbooky by měly využít svou vlastní aplikaci Excel

Díky

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

Jde-li Vám o to, jak z aplikce VB NET otevřít soubor XLS v MS Excel, pak zkuste:

  Imports Microsoft.Win32

  Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, _ 
     ByVal e As System.EventArgs) Handles MyBase.Load
      Dim objKey As RegistryKey = Registry.ClassesRoot
      Dim objSubKey As RegistryKey = objKey.OpenSubKey("Excel.Application")
      If objSubKey Is Nothing Then
        MsgBox("Počítač nemá nainstalovaný MS Excel!")
      Else
        Dim startInfo As New ProcessStartInfo("EXCEL.EXE", """C:\Nová složka\sešit1.xls""")
        Process.Start(startInfo)
        startInfo.WindowStyle = ProcessWindowStyle.Normal
      End If
      objKey.Close()
      End
    End Sub
  End Class

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

Toto jsem zrovna na mysli nemněl ale díky za jiný pohled na otevření excelu. Měl jsem spíše na mysli když mám Aplikaci Excel.EXE spuštěnou pomocí

aplikace_XL = CreateObject("Excel.Application")

tak by jsem rád v této aplikaci otevřel pouze jeden workbook(toto pro mě není problém) Problém nastane tehdy když program s touto aplikací pracuje, respektive s workbookem ( a listy) a já se otevřu jiný workbook( třeba pomocí kliknutí v TC)a tento workbook mi začne běžet v aplikaci kterou jsem spustil VB kódem. Proto by jsem rád tu aplikaci zřístupnil pouze tomu workbooku který používá program. Lze to nějak zajistit?

Díky

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

Nerozumím tomu, co chcete. Napište více z kódu... Nevím, co je "otevřu jiný workbook( třeba pomocí kliknutí v TC)"

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

Níže je kód jak otevřu aplikaci Excel.EXE (v kódu je uložena do proměnné aplikace_XL)a do ní vložím Workbook (template_porovnání.xls nebo případně nenalezení tohoto template úplně nový). Program dále pokračuje a porovnává určité hodnoty v tabulkách. A nyní když otevřu nějaký Excel soubor (který nemá vůbec žádnou souvislost s tímto programem), tak tento workbook využije již otevřenou aplikaci (aplikace_XL) kterou jsem já vytvořil koudem prog. Já by jsem rád aby se jakýkolik jiny Excel soubor otevřel v jiné aplikaci tzn. aby nevyužíval aplikaci (aplikace_XL). Dá se to nějak zajistit programově?

Díky

If Not aplikace_XL Is Nothing Then
   workbook_vysledek.Close()
   workbook_vysledek = Nothing
Else
   workbook_vysledek = Nothing
   aplikace_XL = CreateObject("Excel.Application")
End If
cesta_temp = GetFileLocation("d:\", "Template_porovnani.xls")
If cesta_temp Is "chyba" Then
   'Otevři nový workbook pro výsledek
   workbook_vysledek=aplikace_XL.Workbooks.Add         
Else
   'Otevři nový workbook pro výsledek
   workbook_vysledek = aplikace_XL.Workbooks.Open(cesta_temp)
   aplikace_XL.Visible = False
End If
   'Nastav ho i k zápisu
workbook_vysledek.ReadOnlyRecommended = False          workbook_vysledek.Application.DisplayAlerts = False
aplikace_XL.Visible = False

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

Nevím, zda jsem problém pochopil, nedaří se mi jej vyvolat.

Vytvořil jsem si zkušební VB NET program s kódem, který jste uvedl.

Zkušební program spustím s bodem přerušení na konci kódu. Je tedy na pozadí otevřený Excel a v něm soubor "Template_porovnani.xls" se zkušebně vyplněnými buňkami (aplikace_XL).

Nyní spustím MS Excel z nabídky Start, automaticky se otevře prázdný sešit, "Template_porovnani" nevidím, má nastavené Visible na False.

Vrátím se do zkušebního programu, změním aplikace_XL.Visible na True. Otevře se nové okno Excelu s otevřeným sešitem Template_porovnani.

Když ze zkušebního programu VB NET provedu

    aplikace_XL.Workbooks.Close()
    aplikace_XL.Quit()

Template_porovnani.xls se ukončí, MS Excel spuštění z nabídky Start zůstane, to svědčí o tom, že jde o jinou instanci programu.

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

To mátepravdu, když otevřete nový sešit (přes ikonu Excel nebo z nabídky start) tak Excel vytvoří další aplikaci a nový workbook se otevře v něm (je to dobře vidět v Task Manageru). Ovšem pokud máte již nějaký uložený excel soubor(jaký koli jiný) a otevřete ho, tak se mi občas stalo že Aplikace_xl i když byla Visible = False tak se zobrazila, což znamená že se otevřel tento wotrkbook v mé aplikaci spuštěné programově, toto je za běhu mého programu nežádoucí. Spíše hledám nějakou vlastnost aplikace Excel, kde by se dalo nadefinovat že v této aplikaci se zobrazí pouze a jenom požadovaný workbook.

Kdyby jste o něčem věděl budu moc vděčný.

Díky

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

Když ve výše popsaném postupu změním otevření Excelu na nikoliv z nabídky Start, ale poklepáním na jakýkoliv soubor XLS, je konečný výsledek vždy stejný, ve VB NET programu otevřený workbook se nezobrazí. Mám XP prof. a MS Excel 2002 SP 3, průběžné aktualizace...

Rozdíl tu však je a to podstatný. Po poklepání na soubor XLS jeho otevření trvá nepříjemně dlouho! Příčinu neznám, ale nějaká zrada v programu nejspíš bude! Snad napoví někdo zdatnější.

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