如果只是单个文件 ,要求打开的时候才运行,把代码写到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实现调用另一个工作簿中的数据怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)