一个论坛上的会员有如下的要求:如图需要把当前路径中的财务、采购、工厂、计划、人士等工作簿的“出勤明细”工作表的记录复制汇总在“加班汇总表”工作簿中的“加班原因汇总”工作表中,并需要取出各部门的名称,希望批量使用VBA完成?很久没有玩VBA了,今晚手痒,写了这样一个程序:
A:ALT F11>>>插入模块>>>模块中输入以下代码:
excel用出生日期来计算年龄的两个自定义函数
如果要用出生日期来计算年龄,可以用自定义函数来完成。在VBA编辑器中单击菜单“插入→模块”,并将下面的代码放入其中,以下两段代码都是按虚岁计算的,任选一种即可。 方法一: Function Age(BirthDate As Date)Select Case Month(Date)Ca
EXCEL如何使用VBA汇总当前路径下的工作簿的相应的工作表?
Sub test()
Dim WB As Workbook, WS As Worksheet, FN$, Rng As Range, k As Long
Application.ScreenUpdating = False
FN = Dir(ThisWorkbook.Path & "\*.xls*")
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Do While FN <> ""
If FN <> ThisWorkbook.Name Then
Set WB = GetObject(ThisWorkbook.Path & "" & FN)
With WB
For Each WS In .Worksheets
If WS.Name Like "*出勤明细*" Then
With WS
i = .Cells(Rows.Count, 2).End(xlUp).Row
.Range("A2:D" & i).Copy
Set Rng = ThisWorkbook.Worksheets("加班原因汇总").Cells(ThisWorkbook.Worksheets("加班原因汇总").Rows.Count, 2).End(xlUp).Offset(1, 0)
With Rng
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteAll
End With
ThisWorkbook.Worksheets("加班原因汇总").Cells(ThisWorkbook.Worksheets("加班原因汇总").Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(i – 1, 1) = Left(WB.Name, Len(WB.Name) – 4)
Application.CutCopyMode = False
End With
End If
Next WS
End With
WB.Close False
End If
FN = Dir
Loop
Application.AutomationSecurity = msoAutomationSecurityByUI
End Sub
用VBA判断指定的excel工作簿是否打开
如果要判断一个指定的工作簿是否打开,可以将下面的VBA代码放入标准模块中,然后在子过程中进行调用。 Function IsWkbOpened(sWkbName As String) As Boolean‘如果目标工作簿已打开则返回TRUE,否则返回FALSEDim i As Long For i = Wor