Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:2.10.2013 11:03

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
Tvůrce
Avatar
Petr Nymsa:2.10.2013 15:11

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 Hartinger
Vlastník
Avatar
Odpovídá na Petr Nymsa
David Hartinger:2.10.2013 15:23

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
You are the greatest project you will ever work on.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Hartinger
Petr Nymsa:2.10.2013 15:26

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 Hartinger
Vlastník
Avatar
Odpovídá na Petr Nymsa
David Hartinger:2.10.2013 16:12

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
You are the greatest project you will ever work on.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Hartinger
Petr Nymsa:2.10.2013 16:17

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 Hartinger
Vlastník
Avatar
Odpovídá na Petr Nymsa
David Hartinger:2.10.2013 16:22

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

Nahoru Odpovědět
2.10.2013 16:22
You are the greatest project you will ever work on.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Hartinger
Petr Nymsa:2.10.2013 16:58

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:2.10.2013 18:49

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

 
Nahoru Odpovědět
2.10.2013 18:49
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Nymsa:8.10.2013 21:12

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:8.10.2013 21:37

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
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Nymsa:8.10.2013 21:39

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:8.10.2013 21:43

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
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Nymsa:8.10.2013 21:51

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
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Nymsa:9.10.2013 16:51

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ý
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Jan Vargovský:9.10.2013 17:19

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:9.10.2013 18:54

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
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.