怎样用excel中的宏定时自动发邮件 如何用excel里的宏编一个定时自动发送文件的程序。先谢谢了

作者&投稿:歹蚀 (若有异议请与网页底部的电邮联系)
/步骤

1
创建名字货清单Excel表单先制作货记录表格
您按需要自行制作做行条目
内容加行用于选择否需要自发送邮件

2
再增加名字"清单"Excel表单用于列举各项用重复内容
例列举货址清单联系联系式清单料号清单

各清单定义范围PNlist 命名定义举例各位按需定义
料号清单范围定义 =清单!$G$2:OFFSET(清单!$G$1,COUNTA(清单!$G:$G)-1,0)

COUNTA(清单!$G:$G) 用于计算G列少行内容即少P/N清单 例计算结4
OFFSET($G$1,4-10)计算结即$G$4.

所PNlist 功定义=清单!$G$2:$G$4

定义址清单:Addresslist =清单!$A$2:offset($A$1,counta($A:$A)-1,1)
定义联系清单:Namelist =清单!$D$2:OFFSET(清单!$D$1,COUNTA(清单!$D:$D)-1,1)

通定义清单校验数据 保证误输入通选择提高效率

新建名模板Excel表单定义要通邮件发送内容模板
续通宏拷贝模板填充内容调用outlook发送

注意 模板请放第行第行用与拷贝发送内容做转制

按图片步骤录制名"shipment"宏
宏录制录制单条操作内容操作内容根据自需要按步骤录制
条循环操作需稍微加几句代码
步骤介绍

代码供参考:
Sub shipment()' shipment arrangement

'录制内容
Sheets("货记录").Select
Range("B3:I3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("邮件模板").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("G3:H12").Select
Application.CutCopyMode = False
Selection.Copy
Range("A3").Select
Selection.Insert Shift:=xlDown
Range("B3").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-2]C[-1]"
Range("B4").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[1]"
Range("B5").Select
ActiveCell.FormulaR1C1 = "=R[-4]C[2]"
Range("B6").Select
ActiveCell.FormulaR1C1 = "=R[-5]C"
Range("B7").Select
ActiveCell.FormulaR1C1 = "=R[-6]C[4]"
Range("B8").Select
ActiveCell.FormulaR1C1 = "=R[-7]C[5]"
Range("B9").Select
ActiveCell.FormulaR1C1 = "=R[-8]C[3]"
Range("B10").Select
ActiveCell.FormulaR1C1 = "=R[-9]C[6]"
Range("B3:B10").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("A1:H1").Select
Application.CutCopyMode = False
Selection.ClearContents
Sheets("货记录").Select
Range("J3").Select
ActiveCell.FormulaR1C1 = "Closed"
Range("A3:J3").Select
Range("J3").Activate
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
'录制内容
End Sub

打录制宏添加循环代码
按图片步骤及语句录制范围前添加循环代码
Dim i As Integer
Dim j As Integer
Dim g As Integer
Application.ScreenUpdating = False
Sheets("货记录").Select
i = 1
j = Application.WorksheetFunction.CountA(Range("A:A")) + 1
g = 0
'变量i 用于循环变量j用于判断少行需要循环变量g 用于邮件发送定义少行需要发送
For i = 1 To j
If Range("j" & i).Value = "Y" Then
'录制内容
-------------
'录制内容
g = g + 1
Else
End If
Next i

录制范围部代码需按图片更新变量

再添加邮件发送代码其定义名 RangetoHTML()函数

' 语段用于发送邮件
Sheets("货记录").Select
If g = "0" Then
MsgBox "No new shippment set to Y "
Else
g = 10 * g + 2
Dim OutApp As Object
Dim OutMail As Object
Dim MailBody As Range
Sheets("邮件模板").Select
Set MailBody = Range("A3:B" & g)
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
On Error Resume Next
With OutMail
.to = "Mama@aimama.com"
.CC = ""
.BCC = ""
.Subject = "Shipment Arrangement"
.BodyFormat = Outlook.OlBodyFormat.olFormatHTML
.HTMLBody = RangetoHTML(MailBody)
.Display
End With
On Error GoTo 0
End If
Sheets("货记录").Select
Application.ScreenUpdating = True

RangetoHTML()函数 代码申明
代码拷贝粘帖End Sub()

Public Function RangetoHTML(rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook

TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center
x:publishsource=", _
"align=left x:publishsource=")
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function

代码完 需创建按钮便调用宏即

增加条目应行内邮件通知列改"Y",点发送邮件按钮即弹邮件并货通知表单内更改状态

怎样用excel中的宏定时自动发邮件???求大神指导,先跪谢了~

a.) 打开Excel,新建Book1.xlsx
b.) 填入下面的内容,
第一列:接收人,第二列:邮件标题,第三列:正文,第四列:附件路径
注意:附件路径中可以有中文,但是不能有空格
这里你可以写更多内容,每一行作为一封邮件发出。
注意:邮件正文是黑白文本内容,不支持加粗、字体颜色等。(如果你需要支持彩色的邮件,后面将会给出解决办法)
2.

编写宏发送邮件
a.) Alt + F11 打开宏编辑器,菜单中选:插入->模块
b.) 将下面的代码粘贴到模块代码编辑器中:
Public Declare Function SetTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As Long
Public Declare Function KillTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Function WinProcA(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal SysTime As Long) As Long
KillTimer 0, idEvent
DoEvents
Sleep 100
'使用Alt+S发送邮件,这是本文的关键之处,免安全提示自动发送邮件全靠它了

BASIC或其语言容易 简单语句格式 写用帮助提示 写宏 VISUAL BASIC帮助文档

excel如何用宏自动录入数据excel如何用宏自动录入数据库
答:在“开发工具”的菜单中,勾选需要的“自动录入数据”。4/4 最后点击“自动录入”,即可完成excel用宏自动录入数据。仅参考 excel使用宏自动录入数据,操作如下:在开发工具->插入->表单控件->按钮,命名为保存 右键选中该按钮,制定宏->录制宏,开始录制宏 复制源Sheet中的录入数据 到目标Sheet中,选中...

如何在Excel中安全地使用和编辑宏来自动化任务?
答:在Microsoft Excel的世界里,宏如同得力助手,为繁琐任务提供了强大支持。 它们是一系列精心设计的命令和函数,像魔法般简化复杂计算,比如用函数处理长公式,效率倍增。 这些函数被存储在Visual Basic模块中,分为标准模块和类模块,随时等待你的调用。想在文本输入时避免手动换行?那就让宏来自动设置单元格...

EXCEL中的宏怎么样用
答:通常用下划线代表空格。 5)选择“格式”的“单元格”,选择“图案”选项中的红色,单击“确定”。 6)单击“停止录制”工具栏按钮,结束宏录制过程。 ※ 如果“停止录制”工具栏开始并未出现,请选择“工具”—“宏”—“停止录制”。 录制完一个宏后就可以执行它了。 1.4 执行宏 当执行一个宏时,EXCEL按照宏语句...

excel 自动执行宏
答:方法如下:文件菜单下找到“选项”按钮打开 Excel选项当中选择“加载项”单击图片当中的“转到”按钮 在弹出的窗口中单击“浏览”按钮 找到需要的启动的宏文件 确认退出后,重新打开任何Excel文件即可任意启动宏文件。

Excel如何使用宏?
答:Excel如何使用宏?运用Excel的VBA开发的Excel文档,在Excel中运转时需求敞开Excel的宏功用,不然此文档的VBA自动化功用将被彻底屏蔽,文档的功用无法完结。因而,在翻开这些Excel程序文件之前,您需求先对您的Excel宏安全性进行设置(设置永世有用,在同一台电脑上无需再次设置)在Excel2003版别中,能够依以下...

excel的宏怎么用
答:现在可以看到,编辑录制的宏同样非常简单。需要编辑宏是因为以下三个方面的原因。一:在录制中出错而不得不修改。二:录制的宏中有多余的语句需要删除,提高宏的运行速度。三:希望增加宏的功能。比如:加入判断或循环等无法录制的语句。1.7 录制宏的局限性 希望自动化的许多EXCEL过程大多都可以用录制宏...

有没有人告诉我Excel中宏是怎么运用的?
答:Excel的宏是由一系列的Visual Basic语言代码构成的,因此,如果你熟悉VisualBasic语言,可以用它编写为宏,如果用户不熟悉VB语言,可以用记录功能建立宏。下面详细介绍一下有关的方法和技巧。一、建立宏要想建立一个宏,方法有两种:一是用宏记录器记录所要执行的一系列操作;二是用Visual Basic语言编写。这两种方法各有优...

EXCEL 如何让宏每隔一段时间运行一次
答:如题,我需要让EXCEL 每隔一段时间自动运行宏一次,比如每一分钟运行一次。其间,可以操作工作表,可以编辑,可以运行其他宏。请高手指点~!tidtoybd | 浏览4399 次 |举报 我有更好的答案2016-01-31 最佳答案 实现方式如下: 首先进入VBA编辑器(ALT+F11进入、或者ALT+F8选宏再点编辑), 然后再打开工程资源管理器(...

excel用宏怎让a列输入内容b列自动生成日期和时间
答:不需要宏的,你在B列写上公式就行了,=if(A1<>"",TODAY(),""),B列要改成日期时间格式 如果你想每次输入A列,B列才改变一次,其他时候不改变B列数据才用到宏

EXCEL中的宏怎么操作?
答:在介绍学习VBA之前,应该花几分钟录制一个宏。 \x0d\x0a新术语:“宏”,指一系列EXCEL能够执行的VBA语句。 \x0d\x0a以下将要录制的宏非常简单,只是改变单元格颜色。请完成如下步骤: \x0d\x0a1)打开新工作簿,确认其他工作簿已经关闭。 \x0d\x0a2)选择A1单元格。调出“常用”工具栏。