excelvba文件

excelvba文件,vba,excel,Vba,Excel,我有一个共享excel文件(xlsm),其中大约有10个用户进入单元格a2-x2,然后单击按钮(宏),将数据复制到下一行。 宏工作,但文件大小不断增加了很多,我不知道为什么。很抱歉,我的vba非常初级,所以我在网上查了一些代码 Sub Submit() Application.CommandBars("Reviewing").Controls("&Update File").Execute 'this should save the file and then copy the data

我有一个共享excel文件(xlsm),其中大约有10个用户进入单元格a2-x2,然后单击按钮(宏),将数据复制到下一行。 宏工作,但文件大小不断增加了很多,我不知道为什么。很抱歉,我的vba非常初级,所以我在网上查了一些代码

Sub Submit()
Application.CommandBars("Reviewing").Controls("&Update File").Execute
'this should save the file and then copy the data and paste to last row
ActiveWorkbook.Save
With ThisWorkbook.Sheets("Sheet1")
    If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
        LastRow = .Cells.Find(What:="*", _
                      After:=.Range("a5"), _
                      Lookat:=xlPart, _
                      LookIn:=xlFormulas, _
                      SearchOrder:=xlByRows, _
                      SearchDirection:=xlPrevious, _
                      MatchCase:=False).Row
    Else
        LastRow = 1
    End If
    .Cells(2, 25) = Environ("USERNAME")
    .Range("A2:Y" & LastRow).Copy
End With

'sheet to paste too
With ThisWorkbook.Sheets("Sheet1")
    If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
        LastRow = .Cells.Find(What:="*", _
                      After:=.Range("A1"), _
                      Lookat:=xlPart, _
                      LookIn:=xlFormulas, _
                      SearchOrder:=xlByRows, _
                      SearchDirection:=xlPrevious, _
                      MatchCase:=False).Row
    Else
        LastRow = 1
    End If
    .Range("A" & LastRow + 1).PasteSpecial xlPasteValues
End With
With Worksheets("Sheet1")
     .Range("B2:F2").ClearContents
     .Range("H2:Q2").ClearContents
     .Range("S2:Y2").ClearContents
End With
ActiveWorkbook.Save
End Sub
子提交()
Application.commandbar(“审阅”).Controls(“更新文件”).Execute
'这将保存文件,然后复制数据并粘贴到最后一行
活动工作簿。保存
使用此工作簿。工作表(“工作表1”)
如果Application.WorksheetFunction.CountA(.Cells)为0,则
LastRow=.Cells.Find(内容:=“*”_
之后:=.范围(“a5”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
LastRow=1
如果结束
.Cells(2,25)=环境(“用户名”)
.Range(“A2:Y”和LastRow)。复制
以
“还要粘贴的工作表
使用此工作簿。工作表(“工作表1”)
如果Application.WorksheetFunction.CountA(.Cells)为0,则
LastRow=.Cells.Find(内容:=“*”_
之后:=.范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
LastRow=1
如果结束
.Range(“A”&LastRow+1).粘贴特殊XLPaste值
以
带工作表(“表1”)
.范围(“B2:F2”).ClearContents
.范围(“H2:Q2”).清晰内容
.范围(“S2:Y2”).清晰内容
以
活动工作簿。保存
端接头

当然,如果添加数据,文件大小会不断增加。但是“持续大量增长”是一个非常模糊的定义,你能说出一个数字吗?你的档案有多大?每增加一次会增加多少?它包含多少数据行?您使用的是哪种Excel格式(xls、xlsm、xlsb)?另外需要注意的是:如果将
与工作表(“Sheet1”)
一起使用,则您的
范围(
需要以
开始,以使用
With
语句,如
.Range(
单元格(2,25)相同)
。如果不这样做,则VBA假定活动工作表可能是错误的。我现在更新了代码。在运行任何宏之前,文件大小为48kb,添加了刚刚超过100行,并且在运行宏时,每次超过5mb时,文件大小都会增加约5kb。我会检查是否所有内容都被正确记录-I tri当要求多人共享工作簿并将数据添加到下一行时,将此作为测试。只有两人使用此工作簿时,他们会覆盖其他人的数据,因为每个人都有一份共享工作簿的副本和他们自己的最后一行-保存时,它会合并工作簿并将谁的更新放在哪一行上。有吗阅读此链接以获得更好的解释:我现在向该文件添加了更多数据,并且基于7000行数据列a-Y,该文件现在在每次运行宏时增加140kb(添加一行)Darren,谢谢你的评论,但是如果你看我的宏,用户总是会进入a2-X2行,然后单击分配给宏的Submit按钮。宏首先更新工作簿并保存,然后再复制新行数据,因此数据不会被覆盖。我已经对一些用户进行了测试,结果显示rks很好。这只是文件大小我无法计算。当然,如果添加数据,文件大小会不断增加。但是“不断增加很多”是一个非常模糊的定义,你能说出一个数字吗?文件有多大?每次添加增加多少?包含多少数据行?你使用的是哪种Excel格式(xls、xlsm、xlsb)另请注意:如果您将
与工作表(“Sheet1”)
一起使用,则您的
范围(
需要从
开始,以使用
语句类似的
范围(
单元格(2,25)相同)
。如果不这样做,则VBA假定活动工作表可能是错误的。我现在更新了代码。在运行任何宏之前,文件大小为48kb,添加了刚刚超过100行,并且在运行宏时,每次超过5mb时,文件大小都会增加约5kb。我会检查是否所有内容都被正确记录-I tri当要求多人共享工作簿并将数据添加到下一行时,将此作为测试。只有两人使用此工作簿时,他们会覆盖其他人的数据,因为每个人都有一份共享工作簿的副本和他们自己的最后一行-保存时,它会合并工作簿并将谁的更新放在哪一行上。有吗阅读此链接以获得更好的解释:我现在向该文件添加了更多数据,并且基于7000行数据列a-Y,该文件现在在每次运行宏时增加140kb(添加一行)Darren,谢谢你的评论,但是如果你看我的宏,用户总是会进入a2-X2行,然后单击分配给宏的Submit按钮。宏首先更新工作簿并保存,然后再复制新行数据,因此数据不会被覆盖。我已经对一些用户进行了测试,结果显示rks很好。只是我计算不出文件的大小。