也玩一下excel文档的VBA编程

原创 2005年04月30日 15:01:00

一直没有接触过VBA编程,最近工作中遇到一个问题迫使我研究了一下简单的VBA编程。原来效果还是不错,通过一段VBA代码的确帮我做了大量对excel文档的重复的拷贝、粘贴工作。

简单的理解VBA脚本就是一种可以在excel中运行的宏脚本,他在VB语法的基础上提供了很多针对excel操作的对象模型API,简单看一下他的帮助文档就可以大概了解他是如何来操作excel的。其实如果简单的操作,你直接在excel菜单里录制一下宏,excel会自动为你生成一段VBA脚本的。打开visual basic editer就可以编辑他。如果你从来没有写过VBA脚本,可以录制一下手工操作来参考他生成的代码,按照自己的要求修改。

下面是我遇到的问题:我有若干的文档中,有很多下面这样格式的表格数据

1-1-1-1

1-1-1-1-1

1-1-1-1-2

1-1-1-1-3

1-1-1-1-4

上级变态要求改成下面的样子的格式:

4

1

1

 

 

4

1

2

 

 

4

1

2

1

 

4

1

2

2

 

完成这个工作如果不写脚本来完成,那就只有手工的完成,十多个文档不知道会做多久这样无聊重复的工作。最后经过简单的研究写了vba脚本完成了这个工作。脚本的工作应该先把上面的一个格子辟分成5个,然后把1-1-1-1-3依短线分开分别填到辟分出来的五个格子里。

下面是的脚本代码,不要被这么长的代码吓倒,其实很多代码都是用录制宏的办法生成的,不会写某个操作的代码,最好的办法就是录制一段宏生成代码然后再来看。比如选择几个格子然后拷贝,粘贴到另一个地方。看看生成的代码基本就可以看懂了。如果你的工作中遇到了这样需要大量修改excel文档的工作,可以考虑一下写一段vba脚本来完成繁琐重复的劳动。

 

Sub splitCell(beginRowId, endRowId)

 

 

    Dim begRange, endRange, endRange2

       

    begRange = "A" & beginRowId

    endRange = "A" & endRowId

    endRange2 = "E" & endRowId

   

    Range(begRange & ":" & endRange).Select

    Selection.ClearFormats

   

    Range(begRange & ":" & endRange2).Select

   

    Selection.Borders(xlDiagonalDown).LineStyle = xlNone

    Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    With Selection.Borders(xlEdgeLeft)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlEdgeTop)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlEdgeBottom)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlEdgeRight)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlInsideVertical)

        .LineStyle = xlDash

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlInsideHorizontal)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

   

    With Selection

        .HorizontalAlignment = xlLeft

        .VerticalAlignment = xlTop

        .WrapText = False

        .Orientation = 0

        .AddIndent = False

        .IndentLevel = 0

        .ShrinkToFit = False

        .MergeCells = False

    End With

   

    Selection.NumberFormatLocal = "@"

End Sub

 

 

Sub ParseSplitTestId(cellRowId)

'parse id String use "-"

 

Dim tmpStr, myArr

 

tmpStr = Cells(cellRowId, 1).Value

 

myArr = Split(tmpStr, "-", 5)

 

    For intI = 0 To UBound(myArr)

       'MsgBox "--" & myArr(intI)

       'Range("A" & (cellRowId + intI)).Value = myArr(intI)

       Cells(cellRowId, 1 + intI).Value = CStr(myArr(intI))

    Next

 

End Sub

 

Sub ParseSplitStr(beginRowId, maxRowId)

Dim count, tmpId, tmpStr

 

count = maxRowId - beginRowId + 1

For intI = 0 To count

   

    tmpId = beginRowId + intI

   

    'tmpStr = Cells(tmpId, 1).Value

    'MsgBox (tmpStr = "")

    'If tmpStr = "" Then

      

    '   Exit For

    'End If

    ParseSplitTestId (tmpId)

Next

End Sub

 

Sub ProcessOneFile(filename, maxRowId)

 

Dim beginRowId

 

beginRowId = 8

 

Windows(filename).Activate

Worksheets(2).Select

 

Call splitCell(beginRowId, maxRowId)

 

Call ParseSplitStr(beginRowId, maxRowId)

Windows(filename).ActivateNext

 

MsgBox filename & " - process sucess!"

End Sub


<script type="text/javascript"> &lt;!-- google_ad_client = "pub-4465827781731051"; google_ad_width = 234; google_ad_height = 60; google_ad_format = "234x60_as"; google_ad_type = "text_image"; google_ad_channel =""; //--&gt; </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4465827781731051&amp;dt=1126781722875&amp;format=234x60_as&amp;output=html&amp;ad_type=text_image&amp;nloc=http://blog.csdn.net/fckeditor/editor/fckeditor.html?InstanceName=Editor_Edit_FCKEditor&amp;Toolbar=Default&amp;u_h=768&amp;u_w=1024&amp;u_ah=740&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=15&amp;u_java=true" frameborder="0" width="234" scrolling="no" height="60" allowtransparency="65535"></iframe>

Excel VBA编程常用语句300句

Excel VBA编程常用语句300句 ************** * VBA 语句集 * * (第 1 辑) * ************** **************** * 定...
  • xys_777
  • xys_777
  • 2011年10月28日 12:04
  • 4335

(ExcelVBA编程入门范例)

很喜爱VBA,喜欢使用她对Excel操作实现所需的功能,更喜欢使用VBA控制Excel以及实现结果后的那种感觉。一直都想对ExcelVBA进行系统的整理和归纳,但由于对Excel及VBA了解得不够深入...
  • ZOU_SEAFARER
  • ZOU_SEAFARER
  • 2007年01月26日 15:58
  • 4110

Excel下实现贪吃蛇小游戏

上次我们在Excel下实现了一个华容道式的小游戏,使用了Excel中的小部分属性和功能,不到100行语句就完成了。这次我们要把贪吃蛇搬到Excel中,就不那么容易了。首先要解决游戏显示的问题。对我们来...
  • sidekicker
  • sidekicker
  • 2004年02月20日 11:32
  • 5443

一小时搞定简单VBA编程 Excel宏编程快速上手

Excel宏编程可以快速完成批量表格操作:复制粘贴、数据过滤等,宏代码基于VB语言实现,有基础的编程经验就能快速阅读。下面是我的学习笔记。1. Excel VBA编辑界面(进入路径: sheet名称 ...
  • u014339020
  • u014339020
  • 2018年01月19日 09:45
  • 264

Excel VBA 编程练习

根据表单名称从work查找
  • lsj308
  • lsj308
  • 2014年04月30日 22:27
  • 1422

用VBA读写excel文档属性

原文地址:用VBA读写excel文档属性作者:严雪用VBA读写excel文档属性2011-01-04 08:08要实现限制文件的使用次数,想来应该在某个地方存储文档已用的次数,并且在文档每被使用一次这...
  • gufengaoyue
  • gufengaoyue
  • 2013年11月15日 16:38
  • 1666

Excel_VBA_编程教程(完整版)

http://wenku.baidu.com/link?url=j7yxykC9P7sbbvMgNFIHfvA1qxO1ZKS4e7D70fwk_SEXiFGHn9CdUyMXeGVSMQIcrH33...
  • nodeman
  • nodeman
  • 2015年08月25日 15:25
  • 824

Excle也能编程-VBA小工具

工作中有用到,就学习了一下VBA编程。发现这个真的可以使得Excle工作效率倍增。 工作需求,为照片粘贴档案条。需要将一条条数据,转换为小纸片并且按照特殊样式排序。 完成后像这样其实要完成这个还是...
  • github_33934628
  • github_33934628
  • 2017年02月06日 23:40
  • 445

EXCEL VBA编程基础

PS:建议从“二)、基本概念”开始看起,前面的大部份人都知道了。Excel 最重要的应用就是利用公式进行计算。无论输入是纯粹的数字运算,还是引用其他单元格计算,只要在一个单元格中输入公式,就能得到结果...
  • jyh_jack
  • jyh_jack
  • 2008年05月13日 16:16
  • 8252

Excel用vba自动生成word

Sub GenDocfromExcel() 'excel控制word,生成新文件,插入图片和文件名,保存 'office 2003, VBA工具/引用中要勾选Microsoft Word 11.0 ...
  • u012250252
  • u012250252
  • 2015年02月09日 10:49
  • 3867
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:也玩一下excel文档的VBA编程
举报原因:
原因补充:

(最多只允许输入30个字)