`
zhyt710
  • 浏览: 203324 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

vba的一些提示

阅读更多

excel功能强大, 受到不同层次爱好者青睐。软件工程中,有些没有现成的管理软件,不妨先用excel来担当。在excel中加入vba功能,有助于管理的自动化。下面只是在学习应用中的一些提示。

 

1.office2007中录制宏

由于以前用的都是office2003.同然有2007,找不到以前的菜单在哪了。2007几乎吧所有的东西都制作成了工具面板。要给excel2007录制宏或者添加vba脚本,需要呼出“开发工具”工具面板,方法如下:

     点击office按钮(最左上角的大图标按钮)-->点击excel选项(右下角)-->选择“常用标签”-->勾选“在功能区显示‘开发工具’选项卡”

好了, 确定以后你就可以在工具栏中看到“开发工具”工具面板的标签了。上面有你想要的东西

 

2.程序代码的保护
为了不让使用者查看和修改程序代码,需要对代码进行保护。方法如下:
进入VBA编辑环境,打开“工程资源管理器”窗口,用鼠标右击工程(VBAProject),在弹出菜单中选“VBAProject属性”项,在“VBAProject 工程属性”对话框的“保护”卡中,选中“查看时锁定工程”复选框,然后输入并确认“查看工程属性的密码”,最后单击“确定”按钮,保存当前工作簿并退出。
再次打开工作簿时,要查看或者修改程序代码,必须输入正确的密码。

 

3.ado库引用

在vb编辑器中选择菜单 工具-->引用  在对话框中勾选 Microsoft Activex Data Objects 2.8 library 以及

Microsoft Activex Data Objects Recordset 2.8 library.

我用的office2007选择了上面两个选项。 这个要根据自己的版本而定。其实我这样做的一个直接目的就是让excel能生成文本文件。用下面代码测试

 

'功能:text保存为文件(ADO方式)
'输入:输出文件地址、内容文本、字符集
'输出:无
Function WriteToTextFileADO(filePath As String, strContent As String, CharSet As String)
    Set stm = New ADODB.Stream
    stm.Type = 2 '以本模式读取
    stm.Mode = 3
    stm.CharSet = CharSet
    stm.Open
    stm.WriteText strContent
    '如果文件存在,删除文件
    If Len(Dir(filePath)) > 0 Then
        Kill filePath
    End If
    stm.SaveToFile filePath, 2
    stm.Flush
    stm.Close
    Set stm = Nothing
End Function

'功能:读取text文件(ADO方式)
'输入:输入文件地址、字符集
'输出:无
Function ReadFromFileADO(filePath As String, CharSet As String) As String
    Dim strRtn As String
    Set stm = New ADODB.Stream
    stm.Type = 2 '以本模式读取
    stm.Mode = 3
    stm.CharSet = CharSet
    stm.Open
    stm.LoadFromFile filePath
    strRtn = stm.ReadText
    stm.Close
    Set stm = Nothing
    ReadFromFileADO = strRtn
End Function

'调用读取的方法
Public Sub CallRead()

    Call WriteToTextFileADO("thefile.xml", "1234567", "utf-8")
    
End Sub

 

注意上面是vb语法结构的代码。 但是由于添加代码对话框中没有给定这个类型, 于是就选择的javascript.但事实上不是这个样子。一下均采用这种办法。

 

4.用呼出文件对话框来定义生成文件的名字

经过在网上查阅和看vba文档, 几个小时的时间,搞定。汗!!这就是自学的好处和不足

'调用读取的方法
Public Sub CallRead()

    '定义生成文件的名字变量
    Dim FileName As String


    '声明对话框变量
    Dim fd As FileDialog

    '生成对话框
    'MsoFileDialogType 可为以下 MsoFileDialogType 常量之一。
    'msoFileDialogFilePicker 允许用户选择一个文件
    'msoFileDialogFolderPicker 允许用户选择一个文件夹
    'msoFileDialogOpen 允许用户打开一个文件
    'msoFileDialogSaveAs 允许用户保存一个文件
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    
    
    '文件筛选器部分
    Dim fdfs As FileDialogFilters
    Dim fdf As FileDialogFilter
    Set fdfs = fd.Filters
    For Each fdf In fdfs
        '显示txt文件
        If InStr(1, fdf.Extensions, "txt", vbTextCompare) > 0 Then
            'MsgBox "Description of filter: " & fdf.Description
        End If
    Next fdf

    
    

    '声明被选择的变量
    Dim vrtSelectedItem As Variant

    '初始化对话框的一些属性
    With fd

        '初始化保存文件的路径名称
        .InitialFileName = "F:\temp.txt"

        '显示并运用对话框
        If .Show = -1 Then

            'Step through each string in the FileDialogSelectedItems collection.
            For Each vrtSelectedItem In .SelectedItems
                '可以用自己的方法替换这里带到自己的要求
                MsgBox "Selected item's path: " & vrtSelectedItem
                FileName = vrtSelectedItem

            Next vrtSelectedItem
        '如果点击的是取消按钮...
        Else
        End If
    End With

    '清楚对话框.
    Set fd = Nothing

    '如果得到的文件名为空,推出此过程
    If FileName = "" Then
        Exit Sub
    End If
    
    Call WriteToTextFileADO(FileName, "1234567", "utf-8")
    
    MsgBox "生成" & FileName & "成功"
    
End Sub

 

现在很显然的是, 如果有了正常的生成文件内容的处理逻辑,就可以生成真正想要的文件了。不如通过excel的表格描述生成xml配置文件,sql文件,甚至代码的骨架等

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics