上周派到了个case, 是批量从Excel导出数据导Visio每个图形中.

花了些时间实现了这个功能.

原理如下:

  1. 打开Excel
  2. 新建/打开表单
  3. 指向所选择的表单
  4. 遍历所在列的所有数据
  5. 打开Visio
  6. 建立/打开Visio页面(Visio是和Excel一样, 需要建立指定页面.)
  7. 指向所选择的Visio页面.
  8. 打开diagram service 服务
  9. 遍历所有数据在新的图形中做文字.

代码如下:

Sub Test11()

Dim rowCount As Long
Dim sourceSheet As Worksheet
Dim targetWorksheet As Worksheet
Dim copyTimes As Integer
Dim vsoPage As Page Set sourceSheet = Worksheets("Sheet1")
Dim FName As String
Dim VsApp As Object On Error Resume Next
Set VsApp = GetObject(, "Visio.Application")
If VsApp Is Nothing Then
Set VsApp = CreateObject("Visio.Application")
If VsApp Is Nothing Then
MsgBox "Can't connect to Visio"
Exit Sub
End If
End If
On Error GoTo FName = "D:\drawing.vsdm" VsApp.Documents.Open FName
VsAppPage = "Page-1"
VsApp.ActivePage = VsAppPage
Cancel = True 'Enable diagram services
Dim DiagramServices As Integer
DiagramServices = VsApp.ActiveDocument.DiagramServicesEnabled
VsApp.ActiveDocument.DiagramServicesEnabled = visServiceVersion140 + visServiceVersion150 For i = To sourceSheet.UsedRange.Rows.Count
'MsgBox sourceSheet.Cells(i, 1).Value VsApp.Application.Windows.ItemEx("drawing.vsdm").Activate
VsApp.ActivePage.Drop VsApp.Application.Documents.Item("BASIC_U.VSSX").Masters.ItemU("Square"), 3.128788, 9.25
Set vsoCharacters1 = VsApp.ActiveWindow.Selection().Characters
vsoCharacters1.Begin =
vsoCharacters1.End =
vsoCharacters1.text = sourceSheet.Cells(i, 1).Value
Next sourceSheet.Activate End Sub

VBA: 怎样批量数据从Excel派出到Visio的更多相关文章

  1. Excel VBA ——如何导出数据到excel表格

    sub OutPut() Dim FileTitle, MyPath, MyFullName As String Application.ScreenUpdating = false '关闭表格公式的 ...

  2. 批量数据的Excel导入

    public void importIndexHistoryByCsv(String fileName) { logger.info("开始获取Csv文件导入到数据库,csv文件名为:&qu ...

  3. Excel vba:批量生成超链接,添加边框,移动sheet等

    Excel vba 操作 批量生成sheet目录并添加超链接 Sub Add_Sheets_Link() 'Worksheets(5)为清单目录页 '在sheet页上生成sheet页名字并超链接 To ...

  4. 使用PHPExcel实现数据批量导出为excel表格

    首先需要下载PHPExecel类文件,帮助文档可以参考PHPExcel中文帮助手册|PHPExcel使用方法. 下面直接上例子,是我自己写的一个简单的批量导出数据为excel的例子 前台页面 比较简单 ...

  5. VBA中数据库导出数据到Excel注意事项

    Sub ReadDBData() On Error GoTo ErrorHand Dim dbHelper As New dbHelper Dim sqlSQL As String Dim rs As ...

  6. BDC、CATT批量数据维护

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. 用VBA计算WPS 表格ET EXCEL中的行数和列数的多重方法

    用VBA计算WPS 表格ET EXCEL中的行数和列数 每种方法中上面的是Excel的行数,下面的是Excel的列数. 方法1: ActiveSheet.UsedRange.Rows.Count Ac ...

  8. C#通过OLEDB导出大数据到Excel

    C#导出数据到Excel,基本有两种方法,一种方法是通过Microsoft.Office.Interop.Excel.Application,一行一列的写入Excel中:另一种方法是通过OLEDB,利 ...

  9. 分享一个导出数据到 Excel 的类库

    起源: 之前在做一个项目时,客户提出了许多的导出数据的需求: 导出用户信息 导出业务实体信息 各种查询都要能导出 导出的数据要和界面上看到的一致 可以分页导出 ... 为了应对用户的这些需求,我决定先 ...

随机推荐

  1. bootstrap动态生成层级ul-li 新闻预览 常用方法

    <div class="row" id="add-withinfosortId-row" style="display: none"& ...

  2. 201621123001 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 字节流以字节为基本处理单位,字符流以字符为基本处理单位,以Reader和Writer为基础派生出的一系列类 字 ...

  3. MVC4.0实现批量删除

    HTML: @using(Html.BeginForm("Delete","Home")){    <div>    <input type= ...

  4. mysql创建用户并授予权限

    MySQL创建数据库与创建用户以及授权   1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创 ...

  5. python scrapy爬虫数据库去重方法

    1. scrapy对request的URL去重 yield scrapy.Request(url, self.parse, dont_filter=False) 注意这个参数:dont_filter= ...

  6. ES6 class的基本语法-学习笔记

    1.基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰.更像面向对象编程的语法而已. 类的内部所有定义的方法,都是 ...

  7. Python学习笔记第十二周

    目录: 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令事务 索引 创建数据库 外键 增删改查表 权限 python 操作mysql  ORM sqla ...

  8. quartz延迟执行一次

    package com.example.balabala; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; impor ...

  9. pytorch基础教程2

    1. 四部曲 1)forward; 2) 计算误差 :3)backward; 4) 更新 eg: 1)outputs = net(inputs) 2)loss = criterion(outputs, ...

  10. 关于Linux前后台进程切换

    前言: 当使用SSH远程登录服务器时,对于运行时间较长的程序(如Caffe的训练可能需要十几个小时), SSH可能会在很长时间后断掉,导致程序没运行完就中断了. 为了解决这个问题,需要将在服务器运行的 ...