VBA学习笔记(11)-经典代码之 (Visio中升级代码)

Option Explicit

Private Function add()
On Error GoTo ErrHandler
Dim filePath As String, fileName As String

  filePath = Application.ActiveDocument.Path
  fileName = filePath + "hello.bas"

  Visio.Application.Vbe.ActiveVBproject.VBComponents.Import (fileName)

  ‘Shell "cmd /c del " & fileName, vbHide

  Exit Function
ErrHandler:
  MsgBox Err.Description
End Function

Private Function del()
  On Error GoTo ErrHandler
  Dim modName As String

  modName = "hello"
  If (check(modName) = 1) Then
     Visio.Application.Vbe.ActiveVBproject.VBComponents.Remove Visio.Application.Vbe.ActiveVBproject.VBComponents(modName)
  End If
  Exit Function
ErrHandler:
  MsgBox Err.Description
End Function

Public Function call_ext()
   Call hello.hello
End Function

Function check(ByVal modName As String) As Long
  On Error GoTo ErrHandler

  Dim i
  check = 0
  ‘MsgBox Visio.Application.Vbe.ActiveVBproject.VBComponents.Count
  For i = 1 To Visio.Application.Vbe.ActiveVBproject.VBComponents.Count
     ‘MsgBox Visio.Application.Vbe.ActiveVBproject.VBComponents(i).Name
     If (Visio.Application.Vbe.ActiveVBproject.VBComponents(i).Name = modName) Then
        check = 1
     End If
  Next i

  Exit Function
ErrHandler:
  MsgBox Err.Description
End Function

Function AddCode(ByVal blockName As String, ByVal codeLine As Integer, ByVal codeString As String)
  On Error GoTo ErrHandler

  ‘insert
  ‘With Visio.Application.Vbe.ActiveVBproject.VBComponents("update").CodeModule
  ‘  .InsertLines codeLine, codeString
  ‘End With

  ‘replace
  Visio.Application.Vbe.ActiveVBproject.VBComponents(blockName).CodeModule.ReplaceLine codeLine, codeString

  Exit Function
ErrHandler:
  MsgBox Err.Description
End Function

‘Sub test()
‘   Call AddCode("update", 2, "modName = ""hello""")
‘End Sub

Public Sub update()

  Call del
  Call add
  ‘Call call_ext

  MsgBox "Update Done"
End Sub

包括删除和增加模块;

当然也可以备份:

Option Explicit

Public Sub backup()
On Error GoTo ErrHandler
Dim filePath As String, fileName As String

filePath = Application.ActiveDocument.Path
fileName = filePath + "hello.bas"

Visio.Application.Vbe.ActiveVBproject.VBComponents("hello").Export (fileName)
MsgBox "Backup done"
Exit Sub
ErrHandler:
  MsgBox Err.Description
End Sub
时间: 2024-12-09 05:36:32

VBA学习笔记(11)-经典代码之 (Visio中升级代码)的相关文章

VBA学习笔记(3)-理解Visio Shapesheet

其实Visio中的每个shape(包括你画的图形,线条等等),后台都有一个表来记录所有的属性,这个表我们叫做ShapeSheet. VBA编程中,你可能需要获取shape属性,其实也可以在这里参考: Open a Visio diagram containing a shape that you want to work with in Microsoft Visio 2007. Click on the shape you want to customize to select it. Fro

sqlite学习笔记11:C语言中使用sqlite之删除记录

最后一节,这里记录下如何删除数据. 前面所有的代码都继承在这里了,在Ubuntu14.04和Mac10.9上亲测通过. #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NANE "sqlite/test.db" sqlite3 *db = NULL; char* sql = NULL; char *zErrMsg = NULL; con

学习笔记11

目前正在专修CSS这一块,现在对内联元素和块元素进行深入的学习一下: 内联元素(inline element)一般都是基于语义级(semantic)的基本元素.内联元素只能容纳文本或者其他内联元素,常见内联元素"a". 块元素(block element)和内联元素(inline element)都是html规范中的概念.块元素和内联元素的基本差异是块元素一般都从新行开始.而当加入了css控制以后,块元素和内联元素的这种属性差异就不成为差异 了.比如,我们完全可以把内联元素cite加上

Swift学习笔记(11)--类与结构体

类与结构是编程人员在代码中会经常用到的代码块.在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能. 和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文件来使用类或者结构.Swift中的类或者结构可以在单文件中直接定义,一旦定义完成后,就能够被直接其它代码使用. 注意:一个类的实例一般被视作一个对象,但是在Swift中,类与结构更像是一个函数方法,在后续的章节中更多地是讲述类和结构的功能性. 1.类和结构的异同 类和结构有一些相似的地方,它们都可以

python 学习笔记 11 -- 使用参数使你的程序变得更性感

当然,在之前的系列中,我已介绍如何给 Python 脚本传参,当然,今天不会继续介绍这么无聊的东东.首先使用 python 的sys.argv 传参的话,就固定了参数的个数.顺序以及格式,这么死的规定如何性感? I have a dream , to make my code much sexer ! 今天我们简单介绍一下如何更加随性的给 python 脚本传参.效果如下: [email protected]:/tmp$ python arg.py -h NAME: project with u

python基础教程_学习笔记11:魔法方法、属性和迭代器

魔法方法.属性和迭代器 在python中,有的名称会在前面和后面各加上两个下划线,这种写法很特别.它表示名字有特殊含义,所以绝不要在自己的程序中使用这种名字.在python中,由这些名字组成的集合所包含的方法叫做魔法(或称特殊)方法.如果对象实现了这些方法中的某一个,那么这个方法会在特殊的情况下被python调用,而几乎没有直接调用它们的必要. 准备工作 为了确保类是新型的,应该把赋值语句__metaclass__=type放在你的模块的最开始,或者(直接或间接)子类化内建类(实际上是类型)ob

《C++ Primer Plus》学习笔记11

<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

lua学习笔记11:lua中的小技巧

lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一 巧用or x = x or v 等价于: if not x then x = v end 如果x为nil或false,就给他赋值为 二 三元运算符实现 a and b or c 类似C语言: a ? b : c and 的运算由优先级高于or lua学习笔记11:lua中的小技巧,布布扣,bubuko.com

mybatis学习笔记(11)-多对多查询

mybatis学习笔记(11)-多对多查询 mybatis学习笔记11-多对多查询 示例 多对多查询总结 resultMap总结 本文实现多对多查询,查询用户及用户购买商品信息. 示例 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders.orderdetail.items sql SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdeta