Excel - formátování/tisk do více sloupů na jedné stránce Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

zabacek
nováček
Příspěvky: 36
Registrován: leden 08
Pohlaví: Nespecifikováno
Stav:
Offline

Excel - formátování/tisk do více sloupů na jedné stránce

Příspěvekod zabacek » 23 dub 2010 12:58

V jiné poradně jsme řešil následující problém:

Prosím o radu: mám text v jednom sloupci v buňkách pod sebou, jedná se o stovky řádků. Potřebuji vše zformátovat (případně pouze vytisknout) tak, abych měl více sloupců (např. 3) vedle sebe na jedné stránce A4 - jako kdybych dal ve Wordu tři sloupce na stránku.
Když vše v současné podobě vytisknu, vyleze mi na každé stránce pouze úzká nudle a stránek je několik desítek
Možná se tento dotaz zdá někomu velice pitomým, ale já jsem řešení skutečně nikde nenašel.
Děkuji předem!


Vynikající poradce navstevnik vytvořil proceduru VBA. Jím vytvořený kód se ale zobrazoval špatně, proto bych ho chtěl poprosit, zda by ho mohl vložit sem.
DÍKY.

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - formátování/tisk do více sloupů na jedné stránce  Vyřešeno

Příspěvekod navstevnik » 23 dub 2010 17:04

Procedura je z drivejsi doby, nyni bych to napsal trochu jinak, ale je funkcni, promenne na zacatku procedury uprav dle potreby, zejmena pocet radku na tiskovou stranu PocetR:

Kód: Vybrat vše

Option Explicit
Sub Sestav()
Dim L1 As String, L2 As String, Hlavicka As Boolean
Dim Blok1 As Range, Blok2 As Range, PocetR As Long, PocetS As Byte
Dim Sl1 As String, Sl11 As String, Sl2 As String, Sl21 As String, PocSl As Byte
Dim OdstupR As Byte, OdstupS As Byte, OfsHl As Byte
Dim i As Integer, j As Byte, k As Byte
Dim PoslR As Long
Dim PosBunka As Range
'
'****************************
' parametry nastavit dle potreby:
  ' prvni radek je/neni hlavicka a tedy bude/nebude vlozena k prvnim blokum tiskoveho listu
  Hlavicka = True 'True / False
  L1 = "pres_sl" ' zdrojovy list
  ' sloupce na zdrojovem listu a prvni blok na cilovem listu musi byt v rozmezi A-Z
  ' jinak je nutno upravit zadani a vypocet poslednich sloupcu Sl11, Sl21
  Sl1 = "A" ' prvni zdrojovy sloupec
  PocSl = 1 ' pocet paralenich sloupcu v n-tici sloupcu
  L2 = "pres_sl" ' cilovy list pro presun
  Sl2 = "F" ' prvni cilovy sloupec pro n-tice sloupcu
  PocetR = 10 ' nastaveni poctu radku na tiskovou stranu
  PocetS = 3 ' nastaveni poctu n-tic sloupcu na tiskovou stranu
  OdstupR = 1 ' odstup bloku radku (pro snazsi naformatovani okraju pro tisk)
  OdstupS = 1 ' odstup n-tic sloupcu
'****************************
  ' nalezeni posledniho radku
  Set PosBunka = Worksheets(L1).Range(Sl1 & ":" & Sl1).Cells(Range(Sl1 & ":" & Sl1).Cells.Count)
  ' presun na posledni neprazny radek listu
  If IsEmpty(PosBunka) Then Set PosBunka = PosBunka.End(xlUp)
  If IsEmpty(PosBunka) Then
    End ' bunka na 1. radku  je take prazdna
  Else
     PoslR = PosBunka.Row
  End If
  '
  OfsHl = 0
  Sl11 = Chr(Asc(Sl1) + PocSl - 1) ' posledni zdrojovy sloupec n-tice
  Sl21 = Chr(Asc(Sl2) + PocSl - 1) ' posledni cilovy sloupec n-tice
  ' vlozeni hlavicek k blokum na cilovem listu
  If Hlavicka Then
    Set Blok1 = Worksheets(L1).Range(Sl1 & CStr(1) & ":" & Sl11 & CStr(1))
    Set Blok2 = Worksheets(L2).Range(Sl2 & CStr(1) & ":" & Sl21 & CStr(1))
    Do
      Blok2.Offset(0, i * (PocSl + OdstupS)).Value = Blok1.Value
      i = i + 1
    Loop While i < PocetS
    OfsHl = 1
  End If
  Set Blok1 = Worksheets(L1).Range(Sl1 & CStr(1 + OfsHl) & ":" & Sl11 & CStr(PocetR + OfsHl))
  Set Blok2 = Worksheets(L2).Range(Sl2 & CStr(1 + OfsHl) & ":" & Sl21 & CStr(PocetR + OfsHl))
  ' presun ze sloupce(u) na listu L1 do bloku na list L2
  i = 0: k = 0 ' k=0 zajisti, ze na prvnim listu nebude OdstupR bloku radku (prazdne radky)
  Do
    j = 0
    Do
      Blok2.Offset(i * (PocetR + (k * OdstupR)), j * (PocSl + OdstupS)).Value _
        = Blok1.Offset((i * PocetR * PocetS) + (j * PocetR), 0).Value
      j = j + 1 ' dalsi n-tice sloupcu
      If (j + (i * PocetS)) * PocetR > PoslR Then End ' ukonceni cyklu
    Loop While j < PocetS
    k = 1 ' bude pridavan OdstupR bloku radku
    i = i + 1 ' dalsi blok n-tic radku
  Loop
End Sub


Na zaver je nutno na cilovem listu upravit sirky sloupcu, pripadne zalomeni textu v bunkach v zavislosti na poctu znaku v radcich zdrojove tabulky.

zabacek
nováček
Příspěvky: 36
Registrován: leden 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - formátování/tisk do více sloupů na jedné stránce

Příspěvekod zabacek » 26 dub 2010 12:18

Děkuji, funguje to skutečně nádherně!!!


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Tisk více excel souborů najednou.
    od Myerina » 17 dub 2024 17:42 » v Kancelářské balíky
    2
    859
    od Myerina Zobrazit poslední příspěvek
    20 dub 2024 11:36
  • Excel - z jedné tabulky automaticky vytvořené jednotlivé listy Příloha(y)
    od yanetta » 09 říj 2023 10:55 » v Kancelářské balíky
    3
    3539
    od elninoslov Zobrazit poslední příspěvek
    10 říj 2023 11:38
  • excel text na konec více řádků najednou Příloha(y)
    od Myerina » 03 led 2024 11:51 » v Kancelářské balíky
    5
    989
    od Zivan Zobrazit poslední příspěvek
    04 led 2024 09:42
  • Word 2007: Jak zrušit prázdné řádky na každé stránce mezi čarou a poznámkami?
    od Jirka0508 » 29 pro 2023 00:30 » v Windows 11, 10, 8...
    1
    803
    od mmmartin Zobrazit poslední příspěvek
    29 pro 2023 13:00
  • Nekvalitní tisk Příloha(y)
    od Dolpi » 21 led 2024 21:09 » v Problémy s hardwarem
    3
    1185
    od Dolpi Zobrazit poslední příspěvek
    25 led 2024 18:23

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 46 hostů