|
本帖最后由 呵和合 于 2023-6-14 11:40 编辑
简单说下需求,每天有一个表格通过vba在几个系统导出的表格中提出数据,然后将更新后的工作薄追加到另一个表格最后的工作薄后面,新的工作薄以日期开头,我之前做的很多,复制工作薄时用下面这段代码都没有问题,唯独新作了一个这段代码运行时就会出现“方法select作用于对象range时失败”这个提示,复制代码如下- Set wb = Workbooks.Open("Y:\23年粽子每日报表\粽子销量.xlsx")
- Dim xx1 As String
- xx1 = Year(Now()) & "." & Month(Now()) & "." & Day(Now() - 1)
- wb.Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = xx1 & "散粽销量"
- ThisWorkbook.Sheets("单日散粽销量").Activate
- Cells.Select
- Selection.Copy
- '保持列宽粘贴
- wb.Sheets(xx1).Activate
- Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False
- Range("A1").Select
- ActiveSheet.Paste
- wb.Close
复制代码 原表的这4个工作薄是需要复制的:
,
复制后的报表之中一个格式这样:
,另一个跟这个一样,但是问题是在测试复制一个工作薄时就报错了,其它文件也有类似操作同样代码就不会报错,这个不仅报错,而且假如录制宏进行复制操作,在运行宏时同样出现这个提示,研究了一上午都不知道原因,最后换了种方式才实现,但是我还是想知道这是为什么。换的代码如下:
- a = ActiveWorkbook.Name
- Dim xx1 As String
- xx1 = Year(Now()) & "." & Month(Now() - 1) & "." & Day(Now() - 2)
- xx2 = Year(Now()) & "." & Month(Now() - 1) & "." & Day(Now() - 1)
- Set wb = Workbooks.Open("Y:\23年粽子每日报表\粽子销量.xlsx")
- Dim biaodan()
- biaodan = Array("单日礼盒销量", "单日散粽销量")
- For Each bd In biaodan
- Windows(a).Activate
- Sheets(bd).Copy after:=wb.Sheets(xx1 & "礼盒销量")
- Next
- wb.Sheets("单日散粽销量").Name = xx2 & "散粽销量"
- wb.Sheets("单日礼盒销量").Name = xx2 & "礼盒销量"
- ActiveWorkbook.Save
- ActiveWorkbook.Close
复制代码 |
|