Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  2 3 4 5 6 7 8 9 10   další » ... 140

Zdravím
Kdysi jsem programoval doplněk pro excel pro 2 monitory (ještě v době, kdy jsem měl excel, který neuměl SDI)
ke stažení zde https://elcha-en.blogspot.com/2014/12/excel-and-dual-monitor.html
Tam mám vyřešenu i identifikaci monitoru. Nemám teď chuť to hledat, ale je to jedna z následujících API funkcí:
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As modCommon.typeRectangle) As Long
Private Declare PtrSafe Function EnumDisplayMonitors Lib "user32.dll" (ByVal hdc As Long, ByRef lprcClip As Any, ByVal lpfnEnum As LongPtr, ByVal dwData As Long) As Boolean
Private Declare PtrSafe Function GetMonitorInfo Lib "user32.dll" Alias "GetMonitorInfoA" (ByVal hMonitor As Long, ByRef lpmi As modCommon.typeMonitorInfo) As Boolean
Private Declare PtrSafe Function MonitorFromWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal dwFlags As Long) As Long
Private Declare PtrSafe Function GetDesktopWindow Lib "user32" () As Long
Private Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare PtrSafe Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Private Declare PtrSafe Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare PtrSafe Function GetClientRect Lib "user32" (ByVal hwnd As Long, ByRef lpRect As modCommon.typeDimensions) As Long
Private Declare PtrSafe Sub ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As modCommon.typeCoordinates)
Private Declare PtrSafe Sub OffsetRect Lib "user32" (lpRect As typeDimensions, ByVal X As Long, ByVal Y As Long)
Public Declare PtrSafe Sub ClipCursor Lib "user32" (lpRect As Any)

Záleží na verzi - pak můžete použít funkci SEQUENCE
=SEQUENCE(1;DEN(DATUM($B$1;MĚSÍC("1."&$B2)+1;0));DATUM($B$1;MĚSÍC("1."&$B2);1)) Oblast si pak naformátujete na datum
SEQUENCE function
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web Excel for iPad Excel for iPhone Excel for Android tablets Excel for Android phones

Pokud nemůžete použít SEQUENCE, použil bych raději PowerQuery.

V ani jednom případě pak nemusíte řešit počet sloupců a počet dní v měsíci (únor)

Zkusil jsem úpravu a v letech 1900-3000 a sedí=(KČ((DATUM(ROK(DNES());4;0))/7+MOD(19*MOD(ROK(DNES());19)-7;30)*14%;)*7-6)+2

Pokud už máte zkušenost s powerquery, tak bych to asi řešil tímto způsobem. Mám něco podobného (data jsou uložena na sql serveru a načítá je procedura).

1) Ve zdrojovém souboru si vytvořte tabulku s oprávněními. Použijte uživatelské jméno windows - nebudete potřebovat žádný login, žádné heslo.
2) Tuto tabulku propojte s reportovanými daty.
3) Vytvořte report a uložte tak aby nebyla načtena žádná data. U nás si uživatelé obnovují sami (proavé tlačítko - Obnovit) ale lze nastavit tak, že se data obnoví po otevření.
4) Pozor, soubor musí být uložen pouze pro čtení, aby ho nikdo nemohl uložit s daty.

Funguje spolehlivě.

Do buňky F2 vložte=ZVOLIT(A(F$1>=$B2;F$1<=$C2)+(F$1=$C2)+1;0;8;MOD($E2;8)) případně pokud nechcete 0=ZVOLIT(A(F$1>=$B2;F$1<=$C2)+(F$1=$C2)+1;"";8;MOD($E2;8)) a rozkopírujte

Ono stačí vykopírovat hodnoty vkládané funkcí DDE do jiného sešitu a to pak vložit. Nebo případně obrázek.
Ideálně upravit funkci DDE, aby vracela číslo.

@elninoslov
v SAP se dá oddělovač tisíců změnit z tečky na mezeru a pak máte klid.

Máte tam něco špatně. Asi nějaká chyba nebo co. Bez přílohy těžko říct.

Ale kdybych měl kouknout do křišťálové koule, tak vám DDE funkce nevrací číslo, ale text (nemáte tam desetinnou tečku?)

Prostě vypněte ověření ;)
Protože když už může být text, tak už v podstatě cokoliv.

Myslím, že to lze i bez makra. Jen si budete muset pomoc pomocným sloupcem (např s funkcí DNES). Pak byste neklikal na tlačítko makra, ale na tlačítko Použít znovu (Data -> Seřadit a filtrovat)

Abych to utnul.
Barevný název excel souboru "standardně" nelze.

"Standardně" proto, že v IT světě nic není 100% (může existovat alternativní file explorer, který toto umí - zase takový problém to naprogramovat by to nebyl)
Rozhodně to ale není věc excelu - ten to neumí a proto že toto je sekce excel, tak zamykám.

Lze to např. taktoarrPole = Application.Transpose(Oblast_FAST.Value)Ale transpose tuším pracuje korektně je 65 536 řádky
Takže pak raději cyklem (nebo cyklem s transpose po 65 536 řádcích ;) )

@Merlin99

Máte pravdu, zadání jsem špatně pochopil, respektive, špatně jsem četl.
Je to také tím, že smysl kolekce je právě v načtení jedinečných hodnot (a pak se volá právě názvem hodnoty - takže nemusíte projíždět cyklem). Pokud ty hodnoty nejsou jedinečné, pak to nedává moc smysl. Pak stačí použít pole (jak píše Stalker) a na testování funkci Filter.

Respektive - vůbec nechápu, proč načítat a pak znovu kontrolovat - to jsou 2 cykly. Buď to testuji při načítání nebo použiju funkci Match na listu a zjistím, jestli se hodnota v dané oblasti vyskytuje.

Ale snad víte, co vlastně chcete.

Není třeba testovat. Pokud dáte položce stejný název, jako hodnotu, tak už ji znova nepřidáte.For Each Cell In Oblast_FAST.Cells
On Error Resume Next
myCol.Add Cell.Value2, CStr(Cell.Value2)
On Error Goto 0
Next Cell
Psal jsem to rovnou, takže snad je to OK

Zároveň díky tomuto existenci hodnoty v kolekci zjistíte přes její název ;)

Položím jednoduchou otázku. Proč?

Možná je to zajímavé a je to i řešitelné, ale proč to dělat?

Navíc, pokud máte 2 instance, lze soubor otevřený v jedné instanci otevřít i v té druhé (jen pro čtení) a z něj kopírovat v rámci instance.

@lubo

Rozumím a nezpochybňuji ;)

Tady jsou data kopírována z externího zdroje v hodinách a seřazeny. Asi bych použil podobné řešení jako vy.

Ale jako vždy je více možností ;)


Strana:  1 ... « předchozí  2 3 4 5 6 7 8 9 10   další » ... 140

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Relativní cesta - zdroje Power Query

elninoslov • 23.4. 19:33

Vyhledej

elninoslov • 23.4. 18:54

Vyhledej

PavDD • 23.4. 12:29

Vyhledej

PavDD • 23.4. 11:47

Relativní cesta - zdroje Power Query

Alfan • 23.4. 10:52

Relativní cesta - zdroje Power Query

elninoslov • 23.4. 10:22

Relativní cesta - zdroje Power Query

lubo • 23.4. 10:15