打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA学习资料
 
VBA抓取当前的文件名称及地址:
Dim   str1   As   String,str2   as   string
str1   =   Application.ActiveWorkbook.FullName
str2   =   ThisWorkbook.Path
其中,str1得到的是带有文件名的路径名,str2得到的是路径名。如:
str1= "e:\test\book1.xls "
str2= "e:\test "
----------------------------------------------------------------------------------------------
取邮件签名代码:
Dim SigString As String
Dim Signature As String
SigString = "C:\Documents and Settings\" & Environ("username") & _
            "\Application Data\Microsoft\Signatures\Mysignature.txt"
    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
    Else
        Signature = ""
    End If
 
Function GetBoiler(ByVal sFile As String) As String
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function
----------------------------------------------------------------------------------------------------
自已凑出来的按流程发送通知邮件的东东:
 
Public Sub 询价信息1()
'Const istep As Integer = 1
Dim myscore As Integer
myscore = Range("C33").Value
    Select Case myscore
    Case Is < 35
    MsgBox "信息不够无法评估!"
    Sheets("进度示意图").Select
    Range("C4").Select
    Selection.FormulaR1C1 = "FALSE"
    Case 35 To 60
    MsgBox "重要信息已提供可通知开发部进行评估"
    Call Smail(1)
    End Select
    Sheets("1询价信息统计").Select
'    ActiveSheet.Protect
End Sub
Sub 评估完成2()
irst = MsgBox("确定已完成?", vbYesNo)
If irst = vbYes Then
Call Smail(2)
Else
Exit Sub
End sub
----------------------------
Sub Smail(k As Integer)
Dim SigString As String
Dim Signature As String
SigString = "C:\Documents and Settings\" & Environ("username") & _
            "\Application Data\Microsoft\Signatures\Mysignature.txt"
           
    If Sheets("进度示意图").Range("C" & k + 3) = False Then
    Exit Sub
Else
    Sheets("进度示意图").Select
    Application.ScreenUpdating = False
Dim mailaddress As String
Dim i As Integer
Dim objOL As Object
Dim itmNewMail As Object
Dim Hyp As String
'Hyp = "\\192.168.0.252\公共文档\财务\Estimation\" & ActiveWorkbook.Name
Hyp = Application.ActiveWorkbook.FullName
   
'Hyp = "<a href=""http:\\www.baidu.com"">Click here</a>"
    For i = 1 To 1
        Set objOL = CreateObject("Outlook.Application")
        Set itmNewMail = objOL.CreateItem(olMailItem)
    If k = 3 Or k = 4 Or k = 5 Then '流程3.4.5均需跳到下一步执行,即:3-5,4-6,5-7,是一个平行的流程
        mailaddress = Range("F" & k + 5)
    Else
       mailaddress = Range("F" & k + 4)
    End If
       
    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
    Else
        Signature = ""
    End If
       
    With itmNewMail
        .To = mailaddress
'        .BCC = "yss@AXILONE-SHUNHUA.CN"
        .Subject = Range("B" & k + 3) & "完成" & "--" & Range("B2")
        If k = 3 Or k = 4 Or k = 5 Then '流程3.4.5均需跳到下一步执行,即:3-5,4-6,5-7,是一个平行的流程
        .cc = Range("G" & k + 5)
        .Body = Range("E" & k + 5) & ":" & vbCrLf & "请尽快完成此项目" & Range("B" & k + 5) & "之事项" & ",谢谢!" & vbCrLf & Hyp & _
        vbCrLf & vbCrLf & Signature
'        .Body = Range("E" & k + 5) & ":" & vbCrLf & "请尽快完成此项目" & Range("B" & k + 5) & "之事项" & ",谢谢!" & vbCrLf & Range("E" & k + 3) & vbCrLf & Signature
    Else
        .cc = Range("G" & k + 4)
        .Body = Range("E" & k + 4) & ":" & vbCrLf & "请尽快完成此项目" & Range("B" & k + 4) & "之事项" & ",谢谢!" & vbCrLf & Hyp & _
         vbCrLf & vbCrLf & Signature
        
    End If
'       .GetInspector    '邮件签名代码,但不管用还造成Word死机
        .Display True
        On Error Resume Next
        .Send
        On Error GoTo 0
        Set objOL = Nothing
        Set itmNewMail = Nothing
        End With
    Next i
    Application.ScreenUpdating = True
   
End If
End Sub
Function GetBoiler(ByVal sFile As String) As String
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function
------------------------------------------------
 
找来的可以掩码的 InputBox
'-------------------------------------------------------------------
'有输入掩码的 InputBox
'在 VBA InputBox 可以隐藏输入的字符
'-------------------------------------------------------------------

'需要引用 WIN32 API
Private Declare Function CallNextHookEx _
    Lib "user32" (ByVal hHook As Long, _
                    ByVal ncode As Long, _
                    ByVal wParam As Long, _
                    lParam As Any) As Long
Private Declare Function GetModuleHandle _
    Lib "kernel32" Alias "GetModuleHandleA" _
        (ByVal lpModuleName As String) As Long
Private Declare Function SetWindowsHookEx _
    Lib "user32" Alias "SetWindowsHookExA" _
                    (ByVal idHook As Long, _
                    ByVal lpfn As Long, _
                    ByVal hmod As Long, _
                    ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx _
    Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function SendDlgItemMessage _
    Lib "user32" Alias "SendDlgItemMessageA" _
        (ByVal hDlg As Long, _
        ByVal nIDDlgItem As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) As Long
Private Declare Function GetClassName _
    Lib "user32" Alias "GetClassNameA" _
        (ByVal hwnd As Long, _
        ByVal lpClassName As String, _
        ByVal nMaxCount As Long) As Long
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
'定义 API 中需要引用的常数
Private Const EM_SETPASSWORDCHAR = &HCC
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
Private Const HC_ACTION = 0
Private hHook As Long
Public Function NewProc(ByVal lngCode As Long, _
                        ByVal wParam As Long, _
                        ByVal lParam As Long) As Long
    Dim RetVal
    Dim strClassName As String, lngBuffer As Long
    If lngCode < HC_ACTION Then
        NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
        Exit Function
    End If
    strClassName = String$(256, " ")
    lngBuffer = 255
    If lngCode = HCBT_ACTIVATE Then                             '当前被激活的窗体
        RetVal = GetClassName(wParam, strClassName, lngBuffer)
        If Left$(strClassName, RetVal) = "#32770" Then          '获取 InputBox 的类名
            '用 * 星号替换文本框中显示的字符
            'Asc("*") 可以替换,你可以用其他字符代替
            SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
        End If
    End If
    '以下这行确保其他钩子能够被正确调用
    CallNextHookEx hHook, lngCode, wParam, lParam
End Function
Public Function InputBoxDK(Prompt, _
                            Optional Title, _
                            Optional Default, _
                            Optional XPos, _
                            Optional YPos, _
                            Optional HelpFile, _
                            Optional Context) As String
    Dim lngModHwnd As Long, lngThreadID As Long
    lngThreadID = GetCurrentThreadId
    lngModHwnd = GetModuleHandle(vbNullString)
    hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
    InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context)
    UnhookWindowsHookEx hHook
End Function
Function test()
'按 ALT + F11 后插入一个模块,然后将所有代码 COPY 进去后,
'将光标停在这里,然后按 F5
'    MsgBox InputBoxDK("请输入密码")
     InputBoxDK ("请输入密码")
       
End Function
 
-------------------------------------------------------
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
xcel vba 数组中第1位字符为0,赋给单元格时如何将0保留
Excel VBA ADO SQL入门教程018:DELETE删除语句
神奇的VBA系列-023:动态滚动显示单元格区域内容
VBA: 判断某个Excel文件是否已打开
Excel
Excel·VBA文件重命名、移动
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服