热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VBAforExcel(五)

VBAforExcel(五)本文涉及的内容VBA中的输入输出合并某文件夹下所有工作簿思路授之以鱼不如授之以渔,看过之前两篇你大概会控制工作簿了,这篇直接教你一般遇到问题我们该怎么做
VBA for Excel (五)

本文涉及的内容

  • VBA中的输入输出

  • 合并某文件夹下所有工作簿

思路

授之以鱼不如授之以渔,看过之前两篇你大概会控制工作簿了,这篇直接教你一般遇到问题我们该怎么做。本片的核心是实现某文件夹下所有工作簿的合并。

我们需要按文件、表、区域的思路进行问题的拆解

《VBA for Excel (五)》

思路如上:程序的流程图如下

《VBA for Excel (五)》

遍历工作表语法,在二篇。语法如下:

For each object in objects
[statements]
[Exit For]
Next

遍历工作部需要用到for循环,由于不清楚具体多少个文件,需要吧endnum只设置到足够大,当最后一个时需要退出,需要用到:

For counter = startnum To endnum [Step step]
[statements]
[Exit For]
Next
'if语句
if condition then
statements
end if

遍历工作簿

接下来是匹配文件名需要用到Dir函数,语法如下

Dir("路径\"&"*.xls*")

*是通配符,可以代表出换行外任意个字符,以上语法找出路径下所有后缀是xls打头的文件

还有一个?代表出换行外一个字符。其他的建议了解一下VBA正则。回归正题

Dir可以不带参数,他会继承你上一次的参数,你用一次就够了,以后运行不带参数的会查到下一个文件名。关闭文件后Dir()指向下一个就可以循环遍历所有文件了。

具体思路如下

Fname = Dir(StrPath & "*.xls*")
For i = 1 To 999
Workbooks.open
Workbook.Close False
Fname = Dir()
If Fname = "" Then Exit For
Next

输入与输出

输入MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])

部分说明
prompt对话框中显示的消息。 最大长度约为 1024 个字符,具体取决于所使用的字符的宽度。
buttons用于指定要显示按钮的数量和类型、要使用的图标样式、默认按钮的标识和消息框的形式的值之和。 如果省略,则 buttons 的默认值为 0。
title对话框标题栏中显示的字符串表达式。 如果省略 title,则标题栏中将显示应用程序名称。

button参数

vbOKOnly0仅显示“确定”按钮。
vbOKCancel1显示“确定”和“取消”按钮。
vbAbortRetryIgnore2显示“中止”、“重试”和“忽略”按钮。
vbYesNoCancel3显示“”、“”和“取消”按钮。
vbYesNo4显示“”和“”按钮。
vbRetryCancel5显示“重试”和“取消”按钮。
vbCritical16显示“关键消息”图标。
vbQuestion32显示“警告查询”图标。
vbExclamation48显示“警告消息”图标。
vbInformation64显示“信息消息”图标。
vbDefaultButton10第一个按钮是默认按钮。
vbDefaultButton2256第二个按钮是默认按钮。
vbDefaultButton3512第三个按钮是默认按钮。
vbApplicationModal0应用程序模式;用户在继续在当前应用程序中工作前必须响应消息框。
vbSystemModal4096系统模式;在用户响应消息框前,所有应用程序都挂起。

第一组值 (0-5) 表示对话框中显示的按钮的数量和类型;第二组值(16、32、48、64)表示图标样式;第三组值(0、256、512)用于确定默认按钮;第四组值(0、4096)用于确定消息框的形式。 添加数字以创建最终 buttons 参数值时,只是用每个组中的其中一个数值。

返回值

ConstantValueButton
vbOK1OK
vbCancel2Cancel
vbAbort3Abort
vbRetry4Retry
vbIgnore5Ignore
vbYes6Yes
vbNo7No

正好对应上面button参数第一组值的5种情况中内含的所有键值

MsgBox "File Save Error", _
vbAbortRetryIgnore+vbExclamation+vbDefaultButton2, "File Save Error"
MsgBox message, vbInformation

InputBox (Prompt, [Title], [Default], [Left], [Top], [HelpFile], [HelpContextID], [Type])

名称说明
Prompt要在对话框中显示的消息。最大长度为 255 个字符
Title输入框的标题。默认:“输入”。
Default输入的默认值。

再写两个

inputbox "请输入内容","这个是标题","这个是默认值"

没有其他知识点了,希望你不看代码能根据思路和流程图敲出来加油。

一下是我的例子

Sub Join_Books()
Dim StrPath$, Fname$
Dim Twb As Workbook, Cwb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Cwb = ActiveWorkbook
StrPath = InputBox("请输入路径") & "\"
If StrPath = "" Then Exit Sub
Fname = Dir(StrPath & "*.xls*")
For i = 1 To 999
Set Twb = Workbooks.Open(StrPath & Fname)
For Each sht In Twb.Sheets
If sht.Visible = xlSheetVisible Then
sht.Copy , Cwb.Sheets(Cwb.Sheets.Count)
End If
Next
Twb.Close False
Fname = Dir()
If Fname = "" Then Exit For
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

不是按照上面思路来的直接贴的本人目前再用的版本,把一些函数补了补就贴过来了,自己再看看这个,看看能不能提供些新思路。

Sub Join_Books()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim sht As Worksheet
Dim Twb As Workbook, Cwb As Workbook
Set Cwb = ActiveWorkbook
File_name = Application.GetOpenFilename("Excel文件(*.xlsx;*.xls),*.xlsx;*.xls", , "选择文件", , True)
If TypeName(File_name) = "Boolean" Then Exit Sub
For i = 1 To UBound(File_name)
Set Twb = Workbooks.Open(File_name(i))
For Each sht In Twb.Sheets
If sht.Visible = xlSheetVisible Then
sht.Copy , Cwb.Sheets(Cwb.Sheets.Count)
End If
Next
Twb.Close False
Next
If Application.CountA(Sheets(1).UsedRange.Cells) = 0 Then Sheets(1).Delete
MsgBox "共合并" & i - 1 & "个文件,当前文件表共" & Sheets.Count & "张表"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

这个例子没有用到区域,有些遗憾。不过用上也简单,具体参考上一篇,加上表和工作簿具体对象就行了。这篇完了VBA基础就没了。希望这五篇你有所收获,拜拜了您馁。


推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • enterimagedescriptionhere ... [详细]
  • IamusingaUserForminExceltomovecontentfromtextbox1tofirstemptyrowonsheet2.Belowc ... [详细]
  • IhavedatainmultipleDataworksheetsthatwanttocombineintoSummaryworksheet.Whenuserupdat ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
author-avatar
小佡人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有