ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: sunhill

[求助] 如何给外发邮件自动编号实现邮件控制

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-22 17:04 | 显示全部楼层
谢谢,基本功能已可以实现,但是如果多人同时发送会出现重复取号问题,如何避免呢?
myFile = Dir(lj & "*.d99")
If myFile = "" Then
No = 10000
Else
pos = InStr(1, myFile, ".")
No = Left(myFile, pos - 1)
No = No + 1
End If

Kill lj & "*.d99"

CreateFile No

如果不kill文件似可避免重复,但怎么让取号排队及在众多文件中寻到最大号又是个问题....

TA的精华主题

TA的得分主题

发表于 2010-12-22 20:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
每个人建立一种文件不行吗?
比如你建立 d99’
别人建立 d88’

在subject上再加个内容 ,比如(d99_1)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-23 10:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
为了便于控制,要按一个序号取下去

TA的精华主题

TA的得分主题

发表于 2010-12-30 11:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-12-28 09:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在最开始创建个文件,abc.tmp
在过程末尾删除这个文件。

别人发邮件的时候,先检测这个文件是否存在,存在的话,就给个提示,不存在的话就发送。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-29 09:46 | 显示全部楼层
好方法,回头尝试下。

最近又发现一个问题,每天早上发第一封邮件时会出现找不到“.D88“文件的情况,可能是网络盘路径的问题。如何在OL打开的时候初始化这个路径呢?谢谢

TA的精华主题

TA的得分主题

发表于 2010-12-29 10:41 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-29 10:59 | 显示全部楼层
Dim lj
lj = "V:\Customer Service Team\TOOL\"  'Lan drive
....
myFile = Dir(lj & "*.d99")

TA的精华主题

TA的得分主题

发表于 2010-12-29 12:58 | 显示全部楼层
我这没问题

按理网络路径在系统启动的时候已经初始化了

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-12-29 14:25 | 显示全部楼层
应该是网路发现的问题...,我在startup里加了Dir路径的代码,明天再看效果...
上面建立临时文件防止重号的方法很好用。
再次感谢dsd999斑竹的帮助,以下是完整代码作为此贴的完结

Private WithEvents vsoCommbandButton As CommandBarButton
Private WithEvents vsoCommandEmailCtrlNo As CommandBarButton
Private WithEvents colInspectors As Outlook.Inspectors
Private WithEvents vsoCommandEmailCtrlNoInspector As CommandBarButton

Private Sub Application_Startup()

Call addTotalButton
Set colInspectors = Application.Inspectors
Dir ("V:\Customer Service Team\TOOL\*.*")

End Sub

Sub addTotalButton()

On Error Resume Next
Dim vsoCommandBar As CommandBar

Set vsoCommandBar = Outlook.ActiveExplorer.CommandBars("Pointers")

If (vsoCommandBar Is Nothing) Then

Set vsoCommandBar = Outlook.ActiveExplorer.CommandBars.Add("Pointers", msoBarTop)

Set vsoCommandEmailCtrlNo = vsoCommandBar.Controls.Add(1)
vsoCommandEmailCtrlNo.Caption = "Send w/STK Co&de"
vsoCommandEmailCtrlNo.FaceId = 2174
vsoCommandEmailCtrlNo.Style = msoButtonIconAndCaption

vsoCommandBar.Visible = True

Else

Set vsoCommandEmailCtrlNo = vsoCommandBar.Controls(1)

End If

End Sub

Function GetCurrentItem() As Object
    Dim objApp As Outlook.Application
        
    Set objApp = Application
    On Error Resume Next
    Select Case TypeName(objApp.ActiveWindow)
        Case "Explorer"
            Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
        Case "Inspector"
            Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
    End Select
   
    Set objApp = Nothing
End Function

Sub colInspectors_NewInspector(ByVal Inspector As Inspector)
     On Error Resume Next
     Dim objCommandBar As CommandBar
     Set objCommandBar = Inspector.CommandBars("Pointers")
     If (objCommandBar Is Nothing) Then
     Set objCommandBar = Inspector.CommandBars.Add("Pointers", msoBarTop, , True)
     Set vsoCommandEmailCtrlNoInspector = objCommandBar.Controls.Add(msoControlButton, , , , True)
     vsoCommandEmailCtrlNoInspector.Caption = "Send w/STK Co&de"
     vsoCommandEmailCtrlNoInspector.FaceId = 2174
     vsoCommandEmailCtrlNoInspector.Style = msoButtonIconAndCaption
     objCommandBar.Visible = True
     Else
     Set vsoCommandEmailCtrlNoInspector = objCommandBar.Controls(1)
     End If
End Sub

Private Sub vsoCommandEmailCtrlNoInspector_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)

On Error Resume Next

Dim Item As MailItem
Set Item = GetCurrentItem()

If TypeName(Item) <> "MailItem" Then Exit Sub

Dim myFile, mFile, Tmp As String
Dim No As Integer
Dim lj
lj = "V:\Customer Service Team\TOOL\"
Tmp = "Wait"

mFile = Dir(lj & "Wait.tmp")
If mFile <> "" Then
MsgBox "其他同事取甘号,请再试!", vbOKOnly, "同时取号冲突提示"
Exit Sub
Else
CreateTmpFile Tmp
End If

Set fso = CreateObject("Scripting.FileSystemObject")

If MsgBox("发厂按 是, 发港司按 否", vbYesNo, "选择邮件编号") = vbYes Then

myFile = Dir(lj & "*.stk")
If myFile = "" Then
No = 10000
Else
pos = InStr(1, myFile, ".")
No = Left(myFile, pos - 1)
No = No + 1
End If

fso.movefile lj & myFile, lj & "STK\" & myFile

CreateFile No
Kill lj & "Wait.tmp"

Dim newSubject As String

newSubject = "(STK-" & No & ") / " & Item.Subject

Item.Subject = newSubject
'Item.Send

Else

myFile = Dir(lj & "*.hk")
If myFile = "" Then
No = 20000
Else
pos = InStr(1, myFile, ".")
No = Left(myFile, pos - 1)
No = No + 1
End If

fso.movefile lj & myFile, lj & "HK\" & myFile

CreateFile No
Kill lj & "Wait.tmp"

newSubject = "(STK-" & No & ") / " & Item.Subject
Item.Subject = newSubject
'Item.Send

End If
End Sub
   
Function CreateFile(No As Integer)
Dim sFilename As String
Dim lj

lj = "V:\Customer Service Team\TOOL\"

If Left(No, 1) = 1 Then
sFilename = lj & No & ".stk"
Else
sFilename = lj & No & ".hk"
End If

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(sFilename, True)
a.Close
End Function


Function CreateTmpFile(Tmp As String)
Dim sFilename As String
Dim lj

lj = "V:\Customer Service Team\TOOL\"
sFilename = lj & Tmp & ".tmp"
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(sFilename, True)
a.Close
End Function
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 22:28 , Processed in 0.039148 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表