< návrat zpět

MS Excel


Téma: Hromadná zmena 1 obrázka za 2. obrázok rss

Zaslal/a 5.11.2016 19:35

kabakaPotrebujem hromadne zmeniť 1 obrázok za 2 obrázok z databázy.
Vo worde alebo v exceli (2003)
Ak existuje elegantnejšie riešenie v grafickom programe, prosím nasmerujte ma naň (najlepšie freeware, jednoduchý, v slovenčine, ale to chcem, asi veľa:))

cesta D:\meno\dokumenty\podklady\obrázky

Ďakujem

Příloha: zip33319_obrazky.zip (161kB, staženo 23x)
Zaslat odpověď >

Strana:  « předchozí  1 2 3 4 5   další »
icon #033386
avatar
Dakujem. Zajtra prestudujem.citovat
icon #033387
avatar
Precital, pochopil. Zaujimave. Netusil som, ze Width Property u Range je Read only. Asi preto, ze som nikdy nepotreboval kodom nastavovat sirku stlpcov. Dakujem za link.citovat
#033388
avatar
Tak ještě jeden s berličkou, ale stejně nechápu ...
Sub Menit_Obrazek_2()
Const myPicName As String = "D:\meno\dokumenty\podklady\obrázky\2.jpeg"
Dim pic As Picture, i As Byte, j As Byte, w As Single, h As Single
Dim hh As Single, ww As Single, ss As Single
For Each pic In ActiveSheet.Pictures
pic.Delete
Next pic
h = [A1].Height - 6
w = [A1].Width - 6
Set pic = ActiveSheet.Pictures.Insert(myPicName)
With pic
.ShapeRange.LockAspectRatio = msoTrue
hh = .Height: ww = .Width: ss = hh / ww
If hh > h Then
.Height = h: hh = .Height: ww = hh / ss
If Not .Width = ww Then .Width = ww
End If
If ww > w Then
.Width = w: ww = .Width: hh = ww * ss
If Not .Height = hh Then .Height = hh
End If
.Cut
End With
For i = 1 To 11
For j = 1 To 4
With ActiveSheet.Pictures.Paste
.Top = Rows(i).Top + (h - hh) / 2 + 3
.Left = Columns(j).Left + (w - ww) / 2 + 3
If Not .Height = hh Then .Height = hh
If Not .Width = ww Then .Width = ww
End With
Next j
Next i
End Sub
citovat
icon #033389
eLCHa
Já jen něco málo k tomu nastavení.

Šířka sloupce se nastavuje ve znacích (šířka "0") dle fontu nastaveného ve stylu Normal.
Takže pokud budu brát základní nastavení, tak šířka znaku "0" je pro Calibri 11 rovna 7 pixelům.

Pokud chci nastavit šířku v pixelech, stačí tedy podělit číslem 7. Od šířky cca 10 pixelů si k tomu vždy excel přidá 5 pixelů - bude to někde v nastavení, zatím se mi nepodařilo najít. Takže pokud dáte 200, nastaví 205. To se dá vyřešit takto.Sub subSetColumnWidthInPixels(ByRef rRange As Range, ByVal iPixels As Long)
rRange.EntireColumn.ColumnWidth = iPixels / 7 / ((iPixels + 5) / iPixels)
End Sub

A teď budu psát o svém nastavení - u mne platí, že
1 pixel=0.75 point
pokud toto vím, takSub subSetColumnWidthInPoints(ByRef rRange As Range, ByVal nPoints As Single)
Call subSetColumnWidthInPixels(rRange, CLng(nPoints / 0.75))
End Sub

No a pakSub test()
For i = 50 To 1000 Step 50
Call subSetColumnWidthInPoints(Range("A1"), i)
Debug.Print Left$(i & WorksheetFunction.Rept(Chr$(160), 20), 20) & Range("A1").Width
Next i
End Sub

Výsledek:50                  50,25
100                 99,75
150                 150
200                 200,25
250                 249,75
300                 300
350                 350,25
400                 399,75
450                 450
500                 500,25
550                 549,75
600                 600
650                 650,25
700                 699,75
750                 750
800                 800,25
850                 849,75
900                 900
950                 950,25
1000                999,75

Toto je samozřejmě neobecné řešení.
1. Šířka znaku 0 se dá zjistit např pomocí API
2. tu 5 navíc - to bude nějaký okraj někde v nastavení - možná je to stejné pro všechna písma, nemám čas nyní ověřovat
3. poměr pixels to points asi záleží na jemnosti monitoru, také bude zjistitelný přes pixels/inch a points/inch (72)

To znamená - obecné řešení je možné, jen nevím jestli to za to stojí.
Třeba někdy budu mít čas a náladu.citovat
icon #033390
avatar
Hoši, skutočne žasnem nad Vašimi znalosťami. Mám za to, že to čo vedieť potrebujem, do veľkej miery viem a keď neviem, tak si nejako poradím/naštudujem. Ale že by som hore uvedené veci vedel sypať z rukávu, to ani náhodou..citovat
#033391
kabaka

Anyman napsal/a:

Poslední pokus...

geniálne... konečne je obrázok nedeformovaný, je väčší, resp. je rovnako veľký ako originál, keď sa vloží, ale konečne je nedeformovaný... paráda... obidve makrá sub meniť obrázok, aj sub meniť bunku fungujú rovnako..., funguje aj makro sub meniť obrázok2...

ďakujem veľmi peknecitovat
#033392
kabaka

eLCHa napsal/a:

Já jen něco málo k tomu nastavení.
Šířka sloupce se nastavuje ve znacích (šířka "0") dle fontu nastaveného ve stylu Normal.
Takže pokud budu brát základní nastavení, tak šířka znaku "0" je pro Calibri 11 rovna 7 pixelům.
Pokud chci nastavit šířku v pixelech, stačí tedy podělit číslem 7. Od šířky cca 10 pixelů si k tomu vždy excel přidá 5 pixelů - bude to někde v nastavení, zatím se mi nepodařilo najít. Takže pokud dáte 200, nastaví 205.
To znamená - obecné řešení je možné, jen nevím jestli to za to stojí.


Ja som sa zase sa dopátrala k tejto informácií, keď som riešila problém ako nastaviť 1 cm v exceli, kedže v exceli 2003 to nie je umožnené.

http://lorenc.info/3MA381/merne-jednotky-pravitka-excel.htm

Standardní rozměry buňky

Standardně se velikost buňky řídí nastaveným typem písma. Jde o velikost deseti nul zapsaných standardním písmem. V Excelu 2003 je to standardně Arial velikosti 10, v Excelu 2007 Calibri velikosti 11 (pokud si jako výchozí písmo zvolíme jiné písmo, upraví se podle něj i velikost buněk).

Výchozí šířka sloupce je 8,43 znaků (1,8 cm).
Minimální šířka sloupce je 0 (pak je sloupec skrytý) a maximální 254,86 znaků (50,3 cm)
Výchozí výška řádku je 12,75 bodů (0,45 cm pro Arial, 0,53 cm pro Calibri).
Minimální výška řádku je 0 (pak je řádek skrytý) a maximální 409,5 bodů (14,45 cm).

Převody mezi jednotkami

1 tiskový bod = 1/72 palce
1 palec = 2,54 cm
1 palec = 72 bodů
1 typografický bod = 0,375939849 mm
1 bod = 0,3528 mm
A4 = 297 x 210 mm

http://pc.poradna.net/q/view/38848-excel-sirka-a-vyska-bunky-v-milimetrech

http://www.dataspectrum.cz/pages/learning/learningmain.htm

možno to niekomu pomôže, ale toto je už MIMO TÉMY
Ešte raz, vďaka všetkým za pomoc.
Příloha: rar33392_vyskasirka.rar (39kB, staženo 12x)
citovat
icon #033393
eLCHa
@kabaka
Pokud se týká bodů (points), tak není problém. Existují funkce InchesToPoints a CentimetersToPoints. Problém je u šířky sloupců, ta se udává ve znacích, u nich se nejsnáze zjistí šířka v pixelech. No a tady nastává problém, protože monitory mají různou velikost bodu a tak nelze napsat 1 cm = x pixelů. No a abyste to dostala na body, tak toto potřebujete.
Je pravda že v novějších verzích si můžete přepnout na Rozložení stránky a zadat výšku a šířku v cm, nicméně záznamník maker vám novou šířku uloží standardně ve znacích a jste zase na začátku. Pomocí VBA se mi v cm zatím nepodařilo.

V excelu 2003 by měly existovat funkce PointToPixels a opačná. Ve 2010 už nejsou, takže asi nebyly moc spolehlivé (spekulace).

Klidně buďme OT, když je to zajímavé.

@AL
Ale že by som hore uvedené veci vedel sypať z rukávu, to ani náhodou
nesmíš chodit v tričku s krátkým rukávem, tam se toho moc nevleze ;))citovat
icon #033394
eLCHa
Jen jsem pohledal hotová řešení, takže už neplatí
Pomocí VBA se mi v cm zatím nepodařilo.

DPI (pixely na palec)
http://www.pcreview.co.uk/threads/how-to-determine-the-dpi-setting-for-current-user.2521177/

šířka textu (tedy i znaku) v pixelech
http://stackoverflow.com/questions/5012465/vb-macro-string-width-in-pixel

teď už jen ta pětka... ;))citovat
#033400
kabaka
Ešte by ma zaujímalo ako urobiť tlačítko na makro pre výber všetkých obrázkov z databázy. Viem spraviť iba jedno tlačítko na jedno makro pre jeden obrázok. Druhé tlačítko pre druhé makro pre druhý obrázok. Atď.citovat

Strana:  « předchozí  1 2 3 4 5   další »

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

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.

On-line nástroje