找回密码
 加入
搜索
查看: 3477|回复: 4

[系统综合] 如何用au3将VBA代码写入到excel 中

[复制链接]
发表于 2015-1-5 23:27:43 | 显示全部楼层 |阅读模式
要用au3创建电子表格,当点击表格中的某个单元格时,单元格颜色自动发生变化 以做标记
发现VBA可以做到
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Interior.ColorIndex = 22 Then
Target.Interior.ColorIndex = 0
Else
Target.Interior.ColorIndex = 22
End If

End Sub
双击单元格变颜色
要是每张表格都手动输入的话,也是相当的麻烦
有没有办法在au3创建excel的时候就把VBA代码写进去呢?
 楼主| 发表于 2015-1-6 00:06:17 | 显示全部楼层
Private Sub CommandButton1_Click()
    Dim Wbk As Workbook
    Set Wbk = Workbooks.Add
    Dim w1 As String
    '构造代码
    w1 = "Private Sub Workbook_Open()"
    w1 = w1 & vbCrLf & "MsgBox ""我是被克隆出来的,呵呵!"""
    w1 = w1 & vbCrLf & "End Sub"
    Dim VBC
    For Each VBC In Wbk.VBProject.VBComponents
        If VBC.Name = Wbk.CodeName Then
            '删除所有代码
            VBC.CodeModule.DeleteLines 1, VBC.CodeModule.CountOfLines
            '插入新代码
            VBC.CodeModule.InsertLines 1, w1
            Exit For '跳出循环
        End If
    Next
    '保存工作簿
    'Wbk.SaveAs "c:\obs\obs1.xls"
    Set Wbk = Nothing
End Sub
这是网上一段代码
转不成功 求指点
#include <Excel.au3>

Local $oExcel = _ExcelBookNew()
;~  ' Place code in a string.
$strCode = _ 
'Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)' & @CRLF & _
'If Target.Interior.ColorIndex = 22 Then' & @CRLF & _
'Target.Interior.ColorIndex = 0' & @CRLF & _
'Else' & @CRLF & _
'Target.Interior.ColorIndex = 22' & @CRLF & _
'End If' & @CRLF & _
'End Sub'
   Dim $VBC
    For $VBC In $oExcel.VBProject.VBComponents
                If $VBC.Name = $oExcel.CodeName Then
        $VBC.CodeModule.DeleteLines( 1, $VBC.CodeModule.CountOfLines)
            ;'插入新代码
            $VBC.CodeModule.InsertLines(1, $strCode)
            ExitLoop; '跳出循环
        EndIf
    Next


发表于 2015-1-6 06:44:48 | 显示全部楼层
精神上支持你一下
发表于 2015-1-6 07:13:48 | 显示全部楼层
先要修改一个注册表值,也就是在excel选项里有一个“信任对vb模块的访问”前面打个勾,通过监控注册表可以知道修改了哪里,然后才可以向vb模块写入代码
发表于 2015-1-11 11:39:38 | 显示全部楼层
我来学习一下,也正在学EXCEL
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-27 14:37 , Processed in 0.078864 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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