【VBA】通过VBA自动解析指定工作薄,生成自己需要的数据表

本文分享了一种使用VBA自动化处理Excel数据的方法,通过编写脚本实现从特定格式的工作簿中提取数据,生成所需的数据表和目录页。作者强调这种脚本化解决重复工作的方式,尽管代码可能冗余,但有助于提高效率,适用于个人特定场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用VBA自动处理EXCEL的数据,用着用着觉得很方便,于是写了一些小脚本,不过水平有限,代码很冗余。

个人使用的脚本一般都是符合个人使用的特定场景,不像高手写的有很强的复用性。

不过既然写了,方便了个人的同时,我还是抛砖引玉分享一下,万一能帮到人呢!同时自己也留个备忘。

这里主要是:传播一种使用脚本解决重复性、简单、单调工作时,主动去寻找使用脚本解决的思想。

本案例需求是将图2中的数据按照图四的样式展开,同时生成一个目录页,所以写了这个脚本用来一键生成。

附上脚本的一部分:

Sub lianjie() '在首页生成每个sheet页的超链接
Dim x As Long
x = 0
 For x = 5 To Sheets.Count
     Sheets(3).Select '我的首页设在第三页,所以选中第三页
     Sheets(3).Hyperlinks.Add Anchor:=Cells(9 + x, 4), Address:=ActiveWorkbook.Name, SubAddress:=Sheets(x).Name & "!A1", TextToDisplay:=Sheets(x).Name
 Next
End Sub

'写入表名,这里说一下使用场景,我需要从另个工作薄中获取每个sheet页(sheet页模板在我的<span style="font-size:12px;"><span class="link_title"><a target=_blank href="http://blog.csdn.net/zutsoft/article/details/45441343">EXCEL通过VBA生成SQL,自动生成创建表结构SQL</a></span></span> 博文里给出了)
'存在指定位置的数据库表名,每次手工一页一页复制很累,所以写个脚本同步过来
Sub Write_Tablename()
  Dim x As Long '声明变量x,用来循环
  str_source = ""
  x = 0
  For x = 5 To Sheets.Count
    str_source = Trim(Sheets(3).Cells(9 + x, 5)) '获取源表名,源表名位于从第9行开始的第五列。
       If str_source <> "" Then '如果源标记不为空 
           '截取前四位和元标记+‘_’对比
               If Left(str_source, 4) = Trim(Sheets(3).Cells(11, 2)) & "_" Then  '从左边截取4位
                  str_temp = Mid(str_source, 5) '截取第5位到字符串尾
               Else
                  str_temp = str_source
               End If

               str_target = "TS_" & Trim(Sheets(3).Cells(11, 2)) & "_" & str_temp '去除空格,生成“TS_源标记_表名”格式的ts层表名
               str_mapping = LCase("m_" & Trim(Sheets(3).Cells(11, 2)) & "_ts_" & str_temp) '生成 “m_源标记_ts_表名” 格式的infamatica使用的mapping 名

               Sheets(3).Cells(9 + x, 6) = str_target
               Sheets(3).Cells(9 + x, 7) = str_mapping
               Sheets(x).Cells(7, 3) = str_source
               Sheets(x).Cells(7, 10) = str_target

       End If
  Next

 End Sub

'生成序号,图三中的序号
Sub crea
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百事悠弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值