< návrat zpět

MS Excel


Téma: Odeslání textu zé zvýrazněných buněk do emailu rss

Zaslal/a 7.4.2016 15:19

Dobrý den,

existuje možnost jak odeslat pomocí tlačítka "odešli" pouze text zvýrazněných (vybraných) buněk ?
Jde o to, že to může být kdekoliv v sešitu(nepravidelně)

Zaslat odpověď >

#031027
Hav-Ran
Ja by som to urobil v dvoch krokoch.
Najprv by som "sústredil" všetky "zvýraznené (vybrané)bunky" do nového temp-listu-súboru,
Za druhé - poslal klasicky tento temp-list-súbor kam treba.citovat
#031028
avatar
No oano to tak asi bude, jen nevím, jak ve VB scriptu zadám "pouze vybrané buňky".

Našel jsem toto :

Sub ExcelFollowHyperlink()

Dim rngOblast As Range
Dim rngBunka As Range
Dim strAdresat As String
Dim strPredmet As String
Dim strObsah As String
Dim strRet As String

'náhrada vbLf
Const cstrLf As String = "%0A"

'adresát
strAdresat = "nekdo@nekde.cz"

'předmět
strPredmet = "Výpis z listu"

'zdroj obsahu
Set rngOblast = Range("rngObsah")

'hlavička obsahu
strObsah = rngOblast.Parent.Name & cstrLf

'načtení adres a obsahů jednotlivých buněk oblasti
For Each rngBunka In rngOblast
strObsah = strObsah & cstrLf & rngBunka.Address(0, 0) & ": " & _
rngBunka.Text
Next rngBunka

'sestavení řetězce pro metodu FollowHyperlink
strRet = "mailto:" & strAdresat & "?"
'předmět
strRet = strRet & "subject=" & strPredmet & "&"
'obsah
strRet = strRet & "body=" & strObsah

'odeslání e-mailu
ActiveWorkbook.FollowHyperlink (strRet)

'simulované potvrzení dialogu (Odeslat, ALT+A)
'Microsoft Outlook 2010 CZ
Application.Wait (Now + TimeValue("0:00:05"))
SendKeys "%a", True

End Sub

Ale nevím, jak tuto rutinu spojit s tlačítkem a jak změnit pouze vybrané buňky...citovat
#031031
elninoslov
Toto Vám vráti obsah všetkých označených buniek v celom zošite, keďže píšete "kdekoliv v sešitu(nepravidelně)" :
Function OznaceneBunky() As String
Dim WS As Worksheet, Bunka As Range, Text As String, bIndex As Integer
Application.ScreenUpdating = False
bIndex = ThisWorkbook.ActiveSheet.Index
For Each WS In ThisWorkbook.Worksheets
WS.Activate
For Each Bunka In Selection.Cells
Text = Text & Bunka & vbNewLine
Next Bunka
Next WS
ThisWorkbook.Worksheets(bIndex).Activate
OznaceneBunky = Text
Application.ScreenUpdating = True
End Function

Tento text potom použite v texte mailu, či už pomocou Outlook alebo CDO, každopádne obe možnosti nájdete tu na fóre.
Ale vidím problém v tom, ako Excel zistí, či sa jedná o "označenú" jednobunkovú oblasť, a teda ju má zahrnúť, alebo je to proste iba kurzor, a teda by sa zahrnúť nemala. Jedine vylúčiť listy, v ktorých je oblasť iba jedna bunka...citovat
#031032
avatar
Díky za odpověď, jen nevím jak to zkomponovat dohromady a přidat jako makro k tlačítku.....

V tomhle asi nikdy nebudu doma....

S tou buňkou bych si starost nedělal, většinou v mém případě si na toto dávám pozor, takže by se nemělo stat, že bude vybrána jiná buňka.

PS: Hledal jsem něco I tady co by mi pomohlo ale asi blbě, nic jsem nenašel...citovat
#031034
elninoslov
Jedna verzia používa CDO odosielanie mailu bez Outlooku, ale v makre je viditeľné heslo do mailovej schránky, teda záleží na tom kto má prístup k súboru.

Druhá verzia používa Vašu metódu Hyperlinku, ktorým sa štartuje cez Tag "mailto:" mailovací program, v tomto prípade Outlook, počká sa sekúnd a a použije sa klávesová skratka.

Na odoslanie cez Outlook sa používa ešte ďalšia metóda, vytvorením objektu Outlooku v makre, ale tu je to iné do Office 2010 a od Office 2013. Je to tu na fóre všetko spomínané, len sa mi to nechce tiež hľadať 1
Příloha: zip31034_odoslat-mail-oznacene-bunky.zip (37kB, staženo 66x)
citovat
#031037
Jeza.m
K tomu CDO, mám příklad ...
Public Function Odesli_eml(Adresat, Zprava)
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "Nekdo@NoReply.com"
objEmail.To = Adresat
objEmail.Cc = "nekdo.nejaky@server.com"
objEmail.Subject = "Pokus"
objEmail.HTMLbody = Zprava
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "adresa SMTP serveru"
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
End Function


V tomto případě to heslo nevyžaduje, ale jako SMTP máme použit firemní server.

Další možnost je pomocí knihoven Outlloku, tzn. ve VBA je třeba přidat referenci na Microsoft Outlook XX.X Object Library. Tady může nastat problém např. když vytvoříte v Office 2013, tak ve 2007 fungovat nebude, jelikož je tam natvrdo reference na novější knihovnu.

Příklad...
Dim oOApp As Outlook.Application
Dim oOMail As Outlook.MailItem

Set oOApp = CreateObject("Outlook.Application")
Set oOMail = oOApp.CreateItem(olMailItem)

With oOMail
.To = EML_RECEIVER
.CC = EML_COPY
.Subject = EML_SUBJECT
.HTMLBody = text
.Attachments.Add ThisWorkbook.Path & "\Last.ppsx"

.Send
End With


V tomto případě .HTMLBody = text, jako text je třeba použít html text (v podstatě jako byste psali webovou stránku), tzn. včetně formátování
Místo toho je možné použít pouze .Body = text, v takovém případě text bude prostý text.
Do .Attachments pak můžete dát odkaz na konkrétní soubor, který můžete vygenerovat před tím právě z těch vybraných buněk.
Záleží kolik toho je, pokud hodně tak bych šel cestou přílohy, pokud ne moc hodně, tak formou formátování HTML jako webová stránka přímo v textu emailu.

M@citovat
#031098
avatar
Díky moc, od elninoslov funguje přesně tak jak má !!!
3 2 4 1 5 9citovat

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

odpocet a storno tl.

PavDD • 28.3. 8:53

odpocet a storno tl.

Začátečník • 26.3. 14:39

odpocet a storno tl.

PavDD • 26.3. 10:22

odpocet a storno tl.

elninoslov • 26.3. 7:50

odpocet a storno tl.

PavDD • 26.3. 7:26

odpocet a storno tl.

elninoslov • 25.3. 22:34

odpocet a storno tl.

Začátečník • 25.3. 15:09