分享

VBA实用代码

 星之明光 2011-09-04
VBA实用代码
 

1.判断一个表的最后一行:

  i = Range("A65536").End(xlUp).Row

2.取最后一列列号:

  m = Range("dz1").End(xlToLeft).Column

3.遍历工作簿中所有表

  i=1

  For Each m In Sheets             '遍历每个工作表

    cells(i,1)=m.name            '取工作表名

    cells(i,2)=sheets(m.name).cells(1,1)   '取工作表第一个单元格内容

    i=i+1

  next

4.求某月天数

 

  Function tianshu(riqi As Date) As Byte

  tianshu = DateSerial(Year(riqi), Month(riqi) + 1, Day(riqi)) - riqi

  End Function

 

  '求月末日期

  Function yuemo(riqi As Date) As Date

  yuemo = DateSerial(Year(riqi), Month(riqi) + 1, 0) 

  End Function

5.禁止别人运行Word程序的VBA代码禁止别人运行Word程序的VBA代码

  单击“工具→宏→宏…”命令,在弹出的对话模型中输入宏名“autoexec”,然后单击“创建”,在代码窗中输入如下内容,即可控制别人  运行WORD

 

  Sub autoexec()

  Dim psw As String

  psw = inputbox("请输入密码:", "登录?")

  If psw = "elong" Then

     Application.ShowMe

  Else

     msgbox "对不起,请您与本机主人联系!"

     Application.Quit

  End If

  End Sub

 

 

  破解办法:

  (1)、禁止自运行宏、

  (2)、或者直接删除normal.dot模板文件即可。

 

  补充:

  这个代码也可以用在Excel中,只是函数名换成Auto_Open()即可

6.在编程时,时常需要知道工作表是否存在,文件是否存在等,这时候,以下这些自定义函数就能派上用场了:

 

Private Function FileExists(fname) As Boolean

'当文件存在时返回true

    Dim x As String

    x = Dir(fname)

    If x <> "" Then FileExists = True _

        Else FileExists = False

End Function

 

 

Private Function FileNameOnly(pname) As String

'返回路径pname的文件名

    Dim i As Integer, length As Integer, temp As String

    length = Len(pname)

    temp = ""

    For i = length To 1 Step -1

        If Mid(pname, i, 1) = Application.PathSeparator Then

            FileNameOnly = temp

            Exit Function

        End If

        temp = Mid(pname, i, 1) & temp

    Next i

    FileNameOnly = pname

End Function

 

 

Private Function PathExists(pname) As Boolean

'如果路径pname存在则返回true

    Dim x As String

    On Error Resume Next

    x = GetAttr(pname) And 0

    If Err = 0 Then PathExists = True _

      Else PathExists = False

End Function

 

 

Private Function RangeNameExists(nname) As Boolean

'如果一个名称存在则返回true

    Dim n As Name

    RangeNameExists = False

    For Each n In ActiveWorkbook.Names

        If UCase(n.Name) = UCase(nname) Then

            RangeNameExists = True

            Exit Function

        End If

    Next n

End Function

 

 

Private Function SheetExists(sname) As Boolean

'如果活动工作簿中存在表SNAME则返回真

    Dim x As Object

    On Error Resume Next

    Set x = ActiveWorkbook.Sheets(sname)

    If Err = 0 Then SheetExists = True _

        Else SheetExists = False

End Function

 

 

Private Function WorkbookIsOpen(wbname) As Boolean

'如果工作簿WBNAME打开着,则返回true

    Dim x As Workbook

    On Error Resume Next

    Set x = Workbooks(wbname)

    If Err = 0 Then WorkbookIsOpen = True _

        Else WorkbookIsOpen = False

End Function

7.关于远程写入数据:

需要了解如下对象:

  ApplicationExcel应用程序。

  WorkbookExcel工作簿。

  WorkSheetExcel工作表。

如何创建一个Excel应用程序

  创建Excel应哟功能程序使用的是CreateObject()函数

看下面的例子:

打开Word,进入VBAIDE,添加模块后写入如下代码:

Public Sub test()

    Dim app As Excel.Application

    Dim book As Workbook

    Dim sheet As Worksheet

   

    Set app = CreateObject("Excel.Application")

   

    Set book = app.Workbooks.Add

    MsgBox book.Name

   

    For Each sheet In book.Worksheets

        MsgBox sheet.Name

    Next sheet

   

    Set sheet = book.Worksheets(1)

    sheet.Cells(1, 1) = "Hello"

    book.SaveAs "C:\Hello.xls"

    book.Close

   

    Set sheet = Nothing

    Set book = Nothing

    Set app = Nothing

   

End Sub

8.个可以让ExcelAccess等程序播放声音文件的函数(只能放WAV文件)

会让你的系统或者表格别具一格哦 :)

 

使用方法:=PlaySound("声音文件名.WAV")  (声音文件必须含路径和扩展名)

          =PlaySound(A1)   (A1单元格中存放声音文件名)

 

Declare Function apisndPlaySound Lib "winmm" Alias "sndPlaySoundA" _

(ByVal filename As String, ByVal snd_async As Long) As Long

Function PlaySound(sWavFile As String)

If apisndPlaySound(sWavFile, 1) = 0 Then

MsgBox "The Sound Did Not Play!"

End If

End Function

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多