Problém je Referencia. Je to napísané hneď v prvom riadku
' Přidat Tools - References - Microsoft Outlook xx.x Object Library
To "xx.x" znamená Vašu verziu! Ja mám Office 2019, teda číslo verzie je 16.0. Vy máte Office 2010, a číslo verzie je 14.0.
Ak sa pozriete do Referencií, uvidíte tam MISSING na verzii 16.0. Tak ju odčiarknite, potvrďte. Potom začiarknite Vašu 14.0 a potvrďte. Chyba s Right$ je len nejaká divná sprievodná reakcia na tú referenciu. Ak opravíte Referenciu, Right$ aj Right bude fungovať.
Tak skúste, ale nechcite ten vzorec vysvetľovať. Teraz je to na 3 mená s rovnakým SJM a LV. Ľahko sa pridá 4. či 5. iba pridaním na koniec vzorca
&IFERROR(" a "&INDEX(JMENO;SMALL(IDENTICAL;3));"")
akurát, že to číslo 3 bude 4 atď. Neviem na koľko to je riadkov ale vypočtovo to bude náročné.
Odstráňte ten znak $ za "Right". Nie som si istý, či to Vaša verzia Excelu pozná. V novších to bežne používam. Akú máte verziu?
Takže máte v liste data na 5 strán na výšku.
Chcete tlačiť až od 3 strany, a to tak, že:
1. vytlačená strana (v liste je to strana 3.) bude mať 1/3.
2. vytlačená strana (v liste je to strana 4.) bude mať 2/3.
3. vytlačená strana (v liste je to strana 5.) bude mať 3/3.
To je to čo chcete?
VPageBreaks.Count
zmente na
ActiveSheet.VPageBreaks.Count
A čo myslíte tým výpočtom? Vzorec? To nejde. Musíte si výpočet urobiť buď vzorcom alebo vo VBA a do hlavičky dať výsledok.
Maticový
=SUMPRODUCT(IFERROR(1/COUNTIF(A1:A4;A1:A4)*(B1:B4="Milan")*(A1:A4>=E4)*(A1:A4<=E5);0))
=SOUČIN.SKALÁRNÍ(IFERROR(1/COUNTIF(A1:A4;A1:A4)*(B1:B4="Milan")*(A1:A4>=E4)*(A1:A4<=E5);0))
Tak tu máte hromadné pre Excel. Ono čo sa týka toho Outlooku, tak nerozumiem odkiaľ by bral mail, adresáre, text do mailu...
Inak ten text do mailu (telo správy), to je akože u každého iné? Predmet tiež?
Tak asi nemáte v Outlooku povolené makrá
V Exceli to naprogramovať nieje problém. Mrknem na to ale najskôr na obed. Zatiaľ upresnite:
-Na ktorom riadku začínajú dáta?
-Ktorý stĺpec je smerodajný na určenie počtu riadkov?
-V ktorom stĺpci je mail klienta?
-Počas tejto operácie je Outlook stále zapnutý? Ide totiž o to, že ak by ste mal neustále vytvárať a rušiť objekt Outlooku (alebo ho otvárať), tak je to neúnosne pomalé.
EDIT: Aha screen som si všimol až teraz.
Z Outlooku je to takto:
Sub vice_priloh_Click()
Dim myItem As Outlook.MailItem
Dim strFolderPath As String
Dim strFileName As String
Dim bIsCreated As Boolean
On Error Resume Next
Set myItem = Application.ActiveInspector.CurrentItem
On Error GoTo 0
If myItem Is Nothing Then
Set myItem = Application.CreateItem(olMailItem)
bIsCreated = True
ElseIf myItem.Class <> olMail Then
Set myItem = Application.CreateItem(olMailItem)
bIsCreated = True
End If
With myItem
strFolderPath = "C:\a pracovni\adresare\adam\"
strFileName = Dir(strFolderPath, vbNormal)
While Len(strFileName) > 0
.Attachments.Add (strFolderPath & strFileName)
strFileName = Dir
Wend
If bIsCreated Then .Display
.HTMLBody = "posíláme protokoly" & " " & " Najděte přiložený soubor " & .HTMLBody
.To = "ab@volny.cz"
.CC = "ab@volny.cz"
.BCC = "ab@volny.cz"
.Subject = "TEST MAIL"
'.Send
End With
Set myItem = Nothing
End Sub
Excel:
Private Sub vice_priloh_Click()
' Reference Microsoft Outlook xx.x Object Library
Dim objOutlook As Object
Dim myItem As Object
Dim strFolderPath As String
Dim strFileName As String
Dim bIsCreated As Boolean
On Error Resume Next
Set objOutlook = GetObject(, "Outlook.Application")
On Error GoTo 0
If objOutlook Is Nothing Then
Set objOutlook = CreateObject("Outlook.Application")
bIsCreated = True
End If
Set myItem = objOutlook.CreateItem(0)
With myItem
strFolderPath = "C:\a pracovni\adresare\adam\"
strFileName = Dir(strFolderPath, vbNormal)
While Len(strFileName) > 0
.Attachments.Add (strFolderPath & strFileName)
strFileName = Dir
Wend
.HTMLBody = "posíláme protokoly" & " " & " Najděte přiložený soubor " & .HTMLBody
.To = "ab@volny.cz"
.CC = "ab@volny.cz"
.BCC = "ab@volny.cz"
.Subject = "TEST MAIL"
.Display
'.Send
End With
If bIsCreated Then objOutlook.Quit
Set myItem = Nothing
Set objOutlook = Nothing
End Sub
A odkiaľ sa majú brať tie údaje na doplnenie ?
A ešte na konci to overiť v danom rozsahu týždňa (E4 a E5):
=SUMPRODUCT(1/COUNTIF(A1:A4;A1:A4)*(B1:B4="Milan")*(A1:A4>=E4)*(A1:A4<=E5))
=SOUČIN.SKALÁRNÍ(1/COUNTIF(A1:A4;A1:A4)*(B1:B4="Milan")*(A1:A4>=E4)*(A1:A4<=E5))
Takto?
=AVERAGE(IF((A1:A50<>"")*(COUNTIF(OFFSET(A1;;;ROW(A1:A50));A1:A50)=1);COUNTIF(A1:A50;A1:A50)))
=PRŮMĚR(KDYŽ((A1:A50<>"")*(COUNTIF(POSUN(A1;;;ŘÁDEK(A1:A50));A1:A50)=1);COUNTIF(A1:A50;A1:A50)))
Rozsah 50 si zmeňte na Váš rozsah.
Napadá ma maticový vzorec (Ctrl+Shift+Enter):
=AVERAGE(IF(COUNTIF(OFFSET(A1;;;ROW(A1:A31));A1:A31)=1;COUNTIF(A1:A31;A1:A31)))
=PRŮMĚR(KDYŽ(COUNTIF(POSUN(A1;;;ŘÁDEK(A1:A31));A1:A31)=1;COUNTIF(A1:A31;A1:A31)))
To je prvé čo ma napadlo. Keď príde MePExG, tak ma sprdne, a hodí sem jednoduchšie riešenie .
Píšete, že chcete mať index podľa vlastnej voľby, tak vychádzam z toho že máte nejaké indexy položkám priradené.
Jablká <> jablká
Za tento riadok
For y = 1 To Radku
doplňte toto
If LenB(Data(y, 1)) = 0 Then ReDim Preserve aRadky(1 To y - 1): Exit For
Tu to hodí chybu, ak to spustíte na prázdnom liste! Mám dopĺňať kontrolu do kódu?
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.