Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Ahoj, řeším jeden problém. Nejdříve nastíním situaci

Mám v Excelu krom jiných i následující sloupce
*Obrázek výrobku -> například kladivo.jpg
*Cesta k obrázku -> D:/Foto/kladivo.jpg
*Existuje -> 0 nebo 1

Co potřebuju. Tahle tabulka sesbírá data z různých zdrojů a není jistý že popisovaný obrázek tam existuje. Potřebuju zjistit, jestli Excel zvládne udělat následující:

Zjistit existenci souboru v zadané cestě
->Pokud soubor existuje, napíše do buňky 1, když ne tak 0
Soubory, které existují (1) se zkopírují na zadanou cestu někde na disku

Pravděpodobně to půjde přes makra v Excelu ? Nebo lepší zkusit udělat nějakou WF nadstavbu, která bude spolupracovat s Excelem ?

Odpovědět 2.10.2013 11:03
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Věděl by někdo prosím ? :) Díky

Nahoru Odpovědět 2.10.2013 15:11
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Pokud ta funkce je, budeš to muset stejně programovat v Basicu a to bych radši napsal novou aplikaci v C# :D

Nahoru Odpovědět 2.10.2013 15:23
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

No našel jsem něco zde http://www.mrexcel.com/…A/15024.html .. na netu o tom něco je, jenže já tak nějak nevím jak na to v tom Excelu přes makra jít :D .. také to vidím na nějakou nadstavbu v C#

Nahoru Odpovědět 2.10.2013 15:26
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Já nevím co to dělá, ale když tam potřebuješ takováhle komba, tak to už stejně asi tu aplikaci chce. Když tam hodíš DataGridView, tak se to napíše samo.

Nahoru Odpovědět 2.10.2013 16:12
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

Problém je, že ten excel je nutný používat. Nedělám to pro sebe, ale táta mě poprosil, jestli bych nezjistil, zda je možný takhle v Excelu pracovat

Nahoru Odpovědět 2.10.2013 16:17
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Tak to máš asi lepší těmi makry, nechť je Google tvým přítelem :)

Nahoru Odpovědět 2.10.2013 16:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

No bohužel :) Snad Google bude dobrým kamarádem. Díky za snahu :)

Nahoru Odpovědět 2.10.2013 16:58
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Michal Žůrek (misaz):

Asi budeš muset použit VBA. Skusím to.

Nahoru Odpovědět 2.10.2013 18:49
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Petr Nymsa:

Koukal jsi na to ? Dneska jsem se k tomu vrátil.. s makry jsem v životě v Excelu nedělal, ale koukám že umí i přidávat ovládací prvky (button,radio­button,textare­a,...) takže by ten "program" šel udělat kompletně v Excelu možná.

Nahoru Odpovědět 8.10.2013 21:12
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Michal Žůrek (misaz):

Tady je example http://misaz.moxo.cz/…eSoubor.xlsm

Range je buňka v excelu, vlastností Value z jí získám hodnotu. Dávám to tam jako parametr.

<> v C# je to != tedy nerovná se. Šlo by to taky (asi, nevím jak u VBA) zapsat

If Not Dir(cesta.Value) = "" Then
Editováno 8.10.2013 21:42
Nahoru Odpovědět 8.10.2013 21:37
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Petr Nymsa:

Hmm asi se musím podívat na to VB :` :D

Range = ?
<> = ?

Každopádně díky ;). Budu se muset mrknout na Excelovskou práci s bunkami, výběry, nějakým způsobem iterace skrze rozsha buněk atd atd..

Nahoru Odpovědět 8.10.2013 21:39
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Michal Žůrek (misaz)
Michal Žůrek (misaz):

sakra mě se pomotaly komenty :D

Tak znova: Celá funkce je:

Function ExistujeSoubor(cesta As Range) As Integer
    Dim vysledek
    If Dir(cesta.Value) <> "" Then
        vysledek = 1
    Else
        vysledek = 0
    End If
    ExistujeSoubor = vysledek
End Function
Nahoru Odpovědět 8.10.2013 21:43
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Petr Nymsa:

Koukám že Range je vlastně rozmezí hodnot, tj pravděpodobně udělám následující (psát kod nemusíš, rád si na něj přijdu :P)

  1. Proiterovat bunky které obsahují cestu
  2. Zjistit jestli cesta je a do vedlejší bunky zapsat 1 (existuje)
  3. Proiterovat znova a ty co mají 1 zkopírovat od zadané cesty

No program v C# na chvilku, v Excelu nevím nevím :D

Každopádně díky moc za radu :)

Editováno 8.10.2013 21:54
Nahoru Odpovědět 8.10.2013 21:51
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Petr Nymsa:

Tedy musím ti říct jedno :D. Jestli klasický VB je stejný jako v tom Excelu, tak budu i C++ líbat. Například deklaraci stringu musím udělat takto, jinak to prostě spadne

Dim foo As String
foo = "Bar"
Nahoru Odpovědět 9.10.2013 16:51
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Petr Nymsa
Jan Vargovský:

Ve VB můžeš určitě napsat

Dim foo As String = "bar"

Alespoň dle příručky k VB.

Ve VBA musíš zvlášť deklarovat a zvlášť inicializovat

 
Nahoru Odpovědět 9.10.2013 17:19
Avatar
Odpovídá na Petr Nymsa
Michal Žůrek (misaz):

VBA vychází ze starší verze VB. Toto se mi na VBA nelíbí stejně jako integrované IDE pro jeho vývoj.

Nahoru Odpovědět 9.10.2013 18:54
Nesnáším {}, proto se jim vyhýbám.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.