Excel VBA选择文件、高容错性地打开文件
VBA选择文件
Sub SelectFile()
Dim FileName As Variant
'打开文件对话框返回的文件名,是一个全路径文件名,其值也可能是False,因此类型为Variant
Dim sFileName As String '从FileName中提取的文件名
Dim sPathName As String '从FileName中提取的路径名
Dim aFile As Variant '数组,提取文件名sFileName时使用
Dim ws As Worksheet '存储文件路径名和文件名的工作表
Set ws = Worksheets("Sheet1") '设置工作表
FileName = Application.GetOpenFilename("Excel 文件 (*.xls),*.xls")
'调用Windows打开文件对话框
If FileName <> False Then '如果未按“取消”键
aFile = Split(FileName, "\") '在全路径中,以“\”为分隔符,分成数据
sPathName = aFile(0) '取盘符
For i = 1 To UBound(aFile) - 1 '循环合成路径名
sPathName = sPathName & "\" & aFile(i)
Next
sFileName = aFile(UBound(aFile)) '数组的最后一个元素为文件名
ws.Cells(1, 2).Value = sPathName '保存路径名
ws.Cells(2, 2).Value = sFileName '保存文件名
End If
End Sub
选择打开文件后并没有真实的把它打开,然后高容错性地打开文件
Function OpenExcelFile(sPath As String, ByVal sFileName As String, bDisplay As Boolean, sPwd As String) As Integer
'打开Excel文件
'Ver 1.05
'完成时间:2007.12.01
'设计:美猴王软件工作室 www.okexcel.com.cn
'参数说明:
'sPath:文件绝对路径;sFileName:Excel文件名;bDisplay:True显示错误信息;sPwd:文件打开密码
'返回值:-1:同名文件已经打开;-2:文件不存在或密码错误;0:成功打开;1:文件已经被打开
Dim bOpen As Boolean
Dim sFullName As String
On Error Resume Next
If InStr(LCase(sFileName), ".xls") = 0 Then sFileName = sFileName & ".xls"
sFullName = Workbooks(sFileName).FullName
'检查是否已经打开同名的Excel文件
'如果有sFullName不为空
On Error GoTo 0
bOpen = False
If sFullName <> "" Then
If LCase(sFullName) = LCase(sPath & "\" & sFileName) Then
bOpen = True
'判断已经打开的同名文件是否本次需要打开的文件
OpenExcelFile = 1
'文件已经被打开
Else
If bDisplay Then
MsgBox "请首先关闭“" & sFileName & "”文件!" & Chr(13) & "不能同时打开同名文件,这是Excel的规定!", vbOKOnly + vbExclamation, "文件的打开错误"
End If
bOpen = True
OpenExcelFile = -1
'不能同时打开同名文件,这是Excel的规定
End If
End If
If Not bOpen Then
On Error GoTo errOpen
Workbooks.Open Filename:=sPath & "\" & sFileName, Password:=sPwd
On Error GoTo 0
OpenExcelFile = 0
'成功打开文件
End If
Exit Function
errOpen:
If bDisplay Then MsgBox Err.Description, vbOKOnly + vbExclamation, "文件的打开错误"
OpenExcelFile = -2
'文件不存在或密码错误
On Error GoTo 0
End Function
Excel VBA选择文件、高容错性地打开文件相关推荐
- 【常用自定义函数001】VBA高容错性地打开文件
代码: Function OpenExcelFile(sPath As String, ByVal sFileName As String, bDisplay As Boolean, sPwd As ...
- linux 调用默认程序打开文件,Excel VBA如何使用默认应用程序打开文件
我无法评论现有答案(分数不足),因此我在回答以添加信息. 从Access 2010开始,我遇到了以下语法的无提示故障: Dim URL As String URL = "http://foo ...
- 用Excel VBA选择文件、打开文件
介绍如何用VBA选择文件和用VBA打开文件. 点击打开文件会弹出一个windows文件打开对话框,在EXCEL中VBA怎么实现这个功能? Sub SelectFile() Dim FileNa ...
- Winform中实现文件另存为后并打开文件
场景 在Winform程序中点击按钮实现Excel导出,会打开对话框,文件另存为之后自动打开文件. Process.Start Method 重载 Start() 启动(或重用)此 Process ...
- shell 创建文件_vba代替鼠标打开文件夹
在 VBA造文件夹的思考 一文中介绍了如何用vba代码新建文件夹. 在用VBA操作文件和文件夹的过程中,除了新建文件夹,我们还经常需要与文件夹有个人机交互的过程,比如选择文件所在的文件夹,然后再执行一 ...
- VS2015无法打开包括文件corecrt.h 无法打开文件ucrtd.lib
VS2015无法打开包括文件"corecrt.h" 无法打开文件"ucrtd.lib" 在网上是VS2015的一个BUG,如果是选择"从父级或项目默认 ...
- C# 打开文件夹FolderBrowserDialog与打开文件OpenFileDialog浅析
最近在开发时遇到了不同文件的打开方式,然后就总结了一下,希望能帮到刷到的你 在C# 中对话框的有很多种: 1:文件对话框(FileDialog) 它又常用到两个:打开文件对话框(OpenFileDia ...
- Linux下多个进程可以同时打开同一个文件吗?文件描述符与打开文件的关系?
一:结论 1.两个进程中分别产生生成两个独立的fd 2.两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性 3.进程可以通过系统调用对文件加锁,从而实现对文件内容的保护 4.任何一个进程删 ...
- Excel/WPS表格怎么设置输入密码才能打开文件
方法/步骤 启动软件,新建 首先启动WPS软件,点击新建,然后选择表格可以新建一个表格文件,打开一张表格 文件另存为 点击文件菜单栏选择另存为,保存在电脑桌面中,重命名文件,点击加密 打开权限 在打开 ...
最新文章
- sqlyog连接服务出现的2003和1130错误问题
- 华为云FusionInsight+永洪BI共建政企用数之道,普惠千行百业
- 由点及面,专有云ABC Stack如何护航云平台安全?
- linux 文件 加密传输,服务端和客户端之文件加密传输
- linq 清除一条数据中的某个字段值_B端通用批量数据导入方案设计
- nacos初探--作为配置中心
- 总结一下这一年来的心得体会
- 【Spring】Spring DataSourceTransactionManager
- 软件测试-测试用例的经典例子
- 数据可视化API之弧线图实现
- 【机器学习基础】IV和WOE值
- vos3000配置与通讯测试(一)
- 产品隐私政策与使用条款
- 结算从业人员常用词典1.0
- html背景飘汽水气泡,HTML5网页背景气泡上升
- NYOJ 304 节能【记忆化搜索】
- modal组件 vue_Vue 2.0学习笔记:使用Vue创建Modal组件
- php占用服务器内存,php-fpm占用cpu和内存过高100% 解决办法
- 华为p10手机安装linux,matebookD安装linux系统总结
- Redis跳跃表(SkipList)
热门文章
- 嘉立创EDA-PCB产品设计操作概要
- 电气,电子的详细区分
- 长江水质的评价和预测——综合指标评价
- e^2 约等于 2.71828
- linux设置TCP接收缓存,TCP缓存设置及自调节
- 让机器读懂人类:探索问答系统和机器阅读理解
- 用代码制作五角星2021-10-22
- 哪些中年程序员适合去创业?
- PendSV中断服务函数
- Atitit 知识与学科的分类 杜威十进分类法 图书分类法已经采用二十二个大类 目录 1.1. 类知识的积累是一个从少到多的过程	1 1.2. 杜威十进分类法(Dewey Decimal Class