zoukankan      html  css  js  c++  java
  • VBA: 怎样批量数据从Excel派出到Visio

    上周派到了个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 0
    
    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 = 2 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(1).Characters
           vsoCharacters1.Begin = 0
           vsoCharacters1.End = 0
           vsoCharacters1.text = sourceSheet.Cells(i, 1).Value
    Next sourceSheet.Activate End Sub
  • 相关阅读:
    YTU 2543: 数字整除
    YTU 2542: 弟弟的作业
    YTU 2541: 汽水瓶
    YTU 2535: C++复数运算符重载(+与<<)
    YTU 2530: 小勇玩lol
    YTU 2520: 小慧唱卡拉OK
    YTU 2517: 打倒魔王↖(^ω^)↗
    YTU 2516: 剪刀石头布
    reload、replace、href、assign、window.history.go(0)的区别
    js 数组排序sort方法
  • 原文地址:https://www.cnblogs.com/TheMiao/p/9657787.html
Copyright © 2011-2022 走看看