多个Excel表的vba代码相同,是否可以把这些代码放在一个外部文件,通过调用来执行

多个Excel表的vba代码相同,是否可以把这些代码放在一个外部文件,通过调用来执行,第1张

如果只是单个文件 ,要求打开的时候才运行,把代码写到Workbook的Open事件里,打开即自动运行

如果是要对几百个文件进行相同的Sub过程 *** 作,最简单的方法是 写个VBA Sub 过程 直接依次打开几百个文件 并执行相同动作, 那几百个文件里的代码也不需要了, 只需要一个VBA 模块,就是一个Sub 过程 依次对所有文件进行 *** 作。

一部分excel工作表函数可以直接在VBA中调用如myData = ApplicationWorksheetFunctionCount(Range("A2:D5"))相当于Excel中=Count(A2:D5)的结果。另一部分与一些变化不可以直接调用如 Excel中的=IF()函数,在VBA中用IIF 函数还有一些函数 如 =row() VBA 中变为 row 属性有的函数在VBA中没有

1、点击Excel界面左下角的录制宏按钮录制宏。

2、在宏名处输入一个有意义的名称,帮助以后识别该宏的功能。本例按照默认名称命名。选择将宏录制在个人宏工作簿并点击确定按钮。

3、马上点击Excel界面左下角的停止录制宏按钮停止宏的录制。

4、按Alt+F11打开VBE界面,如下图。

5、在代码部分输入或者粘贴执行某项特定功能的代码。

6、在功能区(Ribbon)上鼠标右键,选择自定义快速访问工具栏。

7、向窗体中拖动一个“标签”和一个“按钮”,右击“按钮”,从其扩展菜单中选择“属性”项。

8、双击“获取Excel数据”按钮,在打开的代码编辑窗口中,输入以下代码。

9、双击“Sheet1”工作表,在d出的代码编辑窗口中输入如下代码。

10、返回Excel表格,激活Sheet1工作表,就可以看到窗口d出,同时点击“获取Excel数据”按钮,就可以读取Excel中的数据啦。

ThisWorkbook属性可以返回一个 Workbook 对象,该对象代表当前宏代码运行的工作簿,而Path属性可以返回文件的路径这样就可以用在Workbook_Open事件中加入下面的代码打开“报表xls”了。

Private Sub Workbook_Open()

Dim FN As String

FN = ThisWorkbookPath & "\报表xls"

If Len(Dir(FN)) = 0 Then

MsgBox "找不到文件:" & vbCrLf & FN, vbExclamation, "错误"

Else

WorkbooksOpen Filename:=ThisWorkbookPath & "\报表xls"

End If

End Sub

而要打开一个文件夹里所有的文件,就需要用到FileSystemObject 对象,下面这个例子是在一个新工作表中列出指定文件夹内所有xls文件的实例:

Sub ShowAllXlsFile()

Dim GetFile As String, GetPFN As String, GetExt As String

Dim Fso, PF, AF, FN, i, j

GetFile = ApplicationGetOpenFilename("Excel 文件 (xls), xls", , "请选择文件夹所在的任意一文件")

If CStr(GetFile) <> "False" Then

SheetsAdd

i = 0

j = 0

Set Fso = CreateObject("ScriptingFileSystemObject")

GetPF = FsoGetParentFolderName(GetFile) & "\"

Set PF = FsoGetFolder(GetPF)

Set AF = PFFiles

For Each FN In AF

j = j + 1

GetExt = FsoGetExtensionName(FN)

If GetExt = "xls" Then

i = i + 1

Cells(i, 1) = FNName

End If

Next

MsgBox "总计所有类型文件" & j & "个!" & vbCrLf & "总计Excel文件" & i & "个!"

Else

MsgBox "没有选择文件夹!"

End If

End Sub

sub

mymove()

i

=

sheetscount

workbooksopen

filename:="带路径的excel工作簿名xls"

sheets("工作表名")select

sheets("工作表名")move

after:=workbooks("当前打开的excel工作簿名xls")sheets(i)

end

sub

不打开表格取其它工作表的数据:

Sub a()

Dim wb As Workbook

Dim str, x

str = "D:\d\123xlsx"

Set wb = GetObject(str) '取得123这个文件

x = wbSheets(1)Cells(1, 1) '取得123文件A1的值

Sheets(1)Range("b1") = x '把值取出来放到新的工作表

End Sub

以上就是关于多个Excel表的vba代码相同,是否可以把这些代码放在一个外部文件,通过调用来执行全部的内容,包括:多个Excel表的vba代码相同,是否可以把这些代码放在一个外部文件,通过调用来执行、vba怎么调用其他excel工作表函数、excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9819758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存