分享成果,随喜正能量】过你自己想要的生活。不违法、不害人,自食其力、自得其乐,就挺好。 拒绝任何人控制你的生活,当然包括父母。他们有他们的人生,你有你的。 。

《VBA经典应用69例》,是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容是教程的应用10:以阅读模式打开工作簿

表格找不到阅读模式(以阅读模式打开工作簿)(1)

应用10 如何利用VBA打开文件

打开文件是我们日常工作的一项重基本的操作,打开文件的目的一般情况下有两种,一是阅读、提取数据,二是追加保存数据。这些过程利用VBA都是可以实现的。我们这讲的学习任务就是掌握如何利用VBA打开文件。

3 以"仅阅读"模式打开 Excel 工作簿,并尝试写入

实例2:以"仅阅读"模式打开文件,以避免误操作

我们看下面的实例,这个实例中我们将打开上面的文件“打开文件.xlsx",但是,打开的模式是“仅阅读”模式。我们看下面的代码:

Sub mynzB()

'声明变量

Dim pathname

Dim wb As Workbook

'赋值

pathname = ThisWorkbook.Path & "\打开文件.xlsx"

'使用open语句打开文件并将其分配给wb对象,以便在代码中进一步使用它。

Set wb = Workbooks.Open(Filename:=pathname, ReadOnly:=True)

'在“只读模式”下打开文件后尝试写入。

wb.Sheets(1).Cells(1, 1).Value = "VBA"

End Sub

代码截图:

表格找不到阅读模式(以阅读模式打开工作簿)(2)

代码的解读:在上述代码中,我们打开文件的模式是:ReadOnly:=True 此时文件虽然被打开,但是却是只读的,如果写入内容后,无法保存原文件,只能以副本的模式保存,从而保护了原文件。

代码的运行结果:

表格找不到阅读模式(以阅读模式打开工作簿)(3)

我们看到由于文件的“只读”的,虽然也写入了内容,但无法保存。

4 打开文本文件,使用打开功能和文件编号读取其内容

实例3:打开文本文件,读取其内容

这个实例中,我们会看到打开一个文本文件,然后将其内容输出到的当前工作表中。下面看代码:

Sub mynzC()

'声明变量

Dim int_txtfile As Integer

Dim str_file_Path As String

Dim str_File_Content As string

'赋值

str_file_Path = ThisWorkbook.Path & "\打开文件.txt"

' 查找FreeFile函数要使用的下一个可用文件号

int_txtfile = FreeFile

'打开文件

Open str_file_Path For Input As int_txtfile

'文件的内容存储在变量中

FileLength = LOF(int_txtfile)

str_File_Content = InputB(FileLength, int_txtfile)

'转换编码后放到工作表中

Sheets(1).Cells(1, 1).Value = StrConv(str_File_Content, vbUnicode)

' 关闭文件

Close int_txtfile

End Sub

代码截图:

表格找不到阅读模式(以阅读模式打开工作簿)(4)

代码解读:1)Open str_file_Path For Input As int_txtfile

这句代码的意义是以Input方式打开str_file_Path,打开文件的编号是int_txtfile。

2)FileLength = LOF(int_txtfile)

这句代码是获得文件的长度。这里要特别注意LOF 函数,这个函数返回一个Long , 表示使用Open语句打开的文件的大小,特别注意,这个大小是以字节为单位的

3)str_File_Content = InputB(FileLength, int_txtfile)

这句代码是获得整个文件的内容,注意这里使用的是InputB(FileLength, int_txtfile)

Input 函数:从以Input或Binary模式打开的文件中返回包含字符的String。

语法:Input(number, [#]filenumber)

参数:

① number必需。 指定要返回字符个数的任意有效的数值表达式。

② filenumber 必需。 任何有效的文件编号。

由于我们在代码中FileLength数值是以字节为单位的文件大小,所以在提取整个文件内容时我们用了InputB函数而非Input函数。

4) Sheets(1).Cells(1, 1).Value = StrConv(str_File_Content, vbUnicode)

以上代码将提取到的文件内容放到工作表中,这里利用了 StrConv()函数将非Unicode字符(包括汉字)转换为Unicode字符。关于这个函数,我在此详细地说明一下。

语法:StrConv(string, conversion, [ LCID ])

参数:

① string 必需。 要转换的字符串表达式。

② conversion 必需。 Integer。 指定要执行的转换的类型的值的总和。

③ LCID 可选。 LocaleID(如果与系统 LocaleID 不同)。(系统 LocaleID 是默认设置)

Conversion参数可以有以下的值:

1) vbUpperCase 1 将字符串转换为大写字符。

2) vbLowerCase 2 将字符串转换为小写字符。

3) vbProperCase 3 将字符串中每个单词的第一个字母转换为大写。

4) vbWide 4 将字符串中的窄 (单字节) 字符转换为宽 (双字节) 字符。

5) vbNarrow 8 将字符串中的宽 (双字节) 字符转换为窄 (单字节) 字符。

6) vbKatakana 16 将字符串中的平假名字符转换为片假名字符。

7) vbHiragana 32 将字符串中的片假名字符转换为平假名字符。

8) vbUnicode 64 使用系统的默认代码页将字符串转换为Unicode。(在 Macintosh 上不可用)。

9) vbFromUnicode 128将字符串从Unicode转换为系统的默认代码页。(在 Macintosh 上不可用)

代码的运行结果:

表格找不到阅读模式(以阅读模式打开工作簿)(5)

[待续]

本讲内容参考程序文件:应用010.xlsm

表格找不到阅读模式(以阅读模式打开工作簿)(6)

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

表格找不到阅读模式(以阅读模式打开工作簿)(7)

表格找不到阅读模式(以阅读模式打开工作簿)(8)

表格找不到阅读模式(以阅读模式打开工作簿)(9)

分享成果,随喜正能量】如果有人因为你拒绝被他控制而受到冒犯、伤害,那是他的事,与你无关。既成事实,无法改变,就不去计较。 ​​。

,