Nebo vlastní funkcí. Ale těm bych se vyhýbal, pokud jde řešit vestavěnými funkcemi.
M@
Ta druhá je super :-), sice mimo mé chápání, ale funguje jak má :-).
Potřebuju změnou hodnoty v DB ukončit aplikaci na všech pc kde je spuštěná, abych mohl přepsat exe soubor, no a nechtěl jsem to utnout bez hlášky, ale hláška přímo z programu by mi zas nedovolila jeho ukončení, proto jsem hledal externí možnosti hlášky, což první volba byla msg.exe, která bohužel zklamala, ale Vaše možnost č. 2 to zachránila :-).
Díky
M@
Dobrý den,
prosím jestli někdo může ve VB vyzkoušet příkaz
MsgBox Dir("C:\Windows\System32\msg.exe")
Jestli message box vrátí msg.exe, nebo jestli bude prázdný.
Z nějakého důvodu daný soubor přes průzkumníka vidím, ale VBA, ani VB ho nevidí. Když zkusím jakýkoliv jiný soubor ve stejné složce, tak message box vrátí název.
S tím souvisí otázka, jestli někoho nenapadne, kde by mohl být háček.
Dělám aplikaci ve VB, kde potřebuji aby se za jistých podmínek sama ukončila a hodila uživateli hlášku, nicméně ta hláška nesmí být z dané aplikace, protože aplikaci potřebuji ukončit.
Myslel jsem že využiju funkce windows a soubor msg.exe, který sám o sobě funguje (přes příkaz spustit, či příkazový řádek), ale když ho VBA, ani VB nevidí, tak je to blbý :-/. Možností je volat externí script s hláškou, ale je to zas soubor navíc :-/.
Tak kdyby někdo poradil jak to vyřešit elegantně bez dalších souborů, tak bych byl rád :-).
Díky
M@
Tak ještě jeden pokus...
Public Sub rozdel()
Dim cj, vec As String
Dim dt As Date
Dim pozadavky() As String
Dim pozadavek As String
Dim tmppocet As Single
Dim rd As Single
Dim tmpxml, tmpxmlpoz As String
Dim tmpp() As String
rd = 2
For i = 1 To List1.UsedRange.Rows.Count
If List1.Cells(i, 1) = "<info>" Then
tmpxml = ""
tmppocet = 0
Erase pozadavky
Do While List1.Cells(i, 1) <> "</info>"
tmpxml = tmpxml & vbNewLine & List1.Cells(i, 1)
If UCase(Replace(List1.Cells(i, 1), " ", "")) = UCase("<pozadavek>") Then tmpxmlpoz = ""
tmpxmlpoz = tmpxmlpoz & vbNewLine & List1.Cells(i, 1)
If UCase(Replace(List1.Cells(i, 1), " ", "")) = UCase("</pozadavek>") Then
pozadavek = gettag(tmpxmlpoz, "dr")
If pozadavek <> "" Then
tmppocet = tmppocet + 1
ReDim Preserve pozadavky(tmppocet - 1)
pozadavky(tmppocet - 1) = pozadavek & "|" & gettag(tmpxmlpoz, "priorita") & "|" & gettag(tmpxmlpoz, "priorita2")
End If
End If
i = i + 1
Loop
For Each p In pozadavky
List2.Cells(rd, 2) = "'" & gettag(tmpxml, "cj")
List2.Cells(rd, 3) = "'" & gettag(tmpxml, "vec")
List2.Cells(rd, 4) = CDate(gettag(tmpxml, "datum_platnosti"))
List2.Cells(rd, 1) = CDate(List2.Cells(rd, 4))
tmpp = Split(p, "|")
List2.Cells(rd, 7) = "'" & tmpp(0)
List2.Cells(rd, 5) = "'" & tmpp(1)
List2.Cells(rd, 6) = "'" & tmpp(2)
rd = rd + 1
Next
End If
Next
End Sub
Public Function gettag(text, tag)
Dim start, konec As Single
For i = 1 To Len(text)
If UCase(Right(Left(text, i), Len(tag) + 2)) = UCase("<" & tag & ">") Then start = i + 1
If UCase(Right(Left(text, i), Len(tag) + 3)) = UCase("</" & tag & ">") Then
konec = i - (Len(tag) + 2)
Exit For
End If
Next
gettag = Mid(text, start, konec - start)
End Function
M@
Jen takový neuniverzální pokus
Public Sub ROZDELIT()
Dim rd As Single
rd = 2
For i = 1 To List1.UsedRange.Rows.Count
If List1.Cells(i, 1) = "<info>" Then
List2.Cells(rd, 4) = Replace(Replace(List1.Cells(i + 3, 1), " <datum_platnosti>", ""), "</datum_platnosti>", "")
List2.Cells(rd, 2) = Replace(Replace(List1.Cells(i + 1, 1), " <cj>", ""), "</cj>", "")
List2.Cells(rd, 3) = Replace(Replace(List1.Cells(i + 2, 1), " <vec>", ""), "</vec>", "")
Do While List1.Cells(i, 1) <> "</info>"
If List1.Cells(i, 1) = " <pozadavek>" Then
List2.Cells(rd, 7) = CStr(Replace(Replace(List1.Cells(i + 2, 1), " <dr>", ""), "</dr>", ""))
List2.Cells(rd, 5) = "'" & CStr(Replace(Replace(List1.Cells(i + 3, 1), " <priorita>", ""), "</priorita>", ""))
List2.Cells(rd, 6) = "'" & CStr(Replace(Replace(List1.Cells(i + 4, 1), " <priorita2>", ""), "</priorita2>", ""))
rd = rd + 1
End If
i = i + 1
Loop
End If
Next
End Sub
za předpokladu že struktura je vždy stejná.
M@
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
první se volá se změnou obsahu buňky (manuálním, tzn. ne vzorcem)
druhá se volá se změnou výběru na listu.
V tomto případě jsou obě funkce prázdné, tudíž jako by tam ani nebyly :-). Můžeš je smazat :-)
M@
Jenom takovej rychlej pokus :-)
M@
Vlastním 630 a chová se to stejně, problém bude v tom že se nepřipojuje jako "mass storage", ale jako zařízení, což nám tak nějak znemožňuje přístup :-/.
Sám jsem zvědavej jestli někdo něco vymyslí :-).
M@
Jen jestli to dobře chápu, máte soubor se 1700 řádky, na každém máte název zdrojového souboru a někam vedle názvu souboru byste rád hodnotu, z definované buňky daného souboru?
Otázky zní z jaké buňky, tzn. jak je definována a z jakého listu, jestli je taky nějak definován, nebo jestli je to vždy stejný list a stejná buňka.
Pak by se dalo napsat makro.
Asi by šlo i vzorcem pomocí nepřímého odkazu, ale do propojení s tolika sešity bych se osobně radši nepouštěl.
M@
To jako že jenom tohle ...
=MIN([Brno.xlsx]List1!E3;[Bratislava.xlsx]List1!E3;[Praha.xlsx]List1!E3)
bez dolarů, ať lze roztáhnout, přičemž v první fázi je mít potřeba všechny soubory otevřené.
M@
Takový pokus v příloze. Daný exe soubor je možno zavolat makrem z jakéhokoliv excelového souboru pomocí shell.
Případně si na dané makro nastavit klávesovou zkratku.
Spustit jde i samostatně. Při každé aktivaci okna programu načte listy posledního aktivního (stále spuštěného) excelu.
Ne že bych to použil, ale byla to taková výzva :-). Když na to přijde můžu poskytnout zdroj k úpravě, ale sem se to nevejde.
M@
bylo, ale zároveň by to bylo i programově náročnější. Kdyby se to vybíralo po jednom, tak by to i šlo, ale vzhledem k tomu že to pracuje se Selection, tak mi to takto přišlo jako nejrychlejší řešení, nicméně určitě se to dá "vytunit" máte-li chuť :-)
Co má být výstupem? 1 nejnižší hodnota napříč všemi soubory, nebo 3 nejnižší hodnoty (z každého souboru jedna)?
Soubor uložen z jiného pc, snad už bude ok :-)
V editoru maker je složka Modules a nad ní je složka Forms, ve které je vložen formulář F_NAHLED. Po dvojkliku na něj se zobrazí v editačním módu, kde si s ním můžete dělat cokoliv Vás napadne.
M@
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.