Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: yizhih

[已解决]请教工作簿间复制数据

[复制链接]
发表于 2013-5-7 10:01 | 显示全部楼层
你每次复制时,原有数据是要清除还是扣留?
回复

使用道具 举报

 楼主| 发表于 2013-5-7 11:46 | 显示全部楼层
hwc2ycy 发表于 2013-5-7 09:54
啥叫B2开始的第2行,B4么?

“B2开始的第二行”就是第二行,开始从B2单元格.
回复

使用道具 举报

 楼主| 发表于 2013-5-7 11:47 | 显示全部楼层
hwc2ycy 发表于 2013-5-7 10:01
你每次复制时,原有数据是要清除还是扣留?

原有的数据要清除。
谢谢!
回复

使用道具 举报

发表于 2013-5-7 11:55 | 显示全部楼层
原有的既然清除,那基本上每次全是B2单元格了。
回复

使用道具 举报

发表于 2013-5-7 12:00 | 显示全部楼层
  1. Sub 按钮2_Click()
  2.     Dim wbDst As Workbook
  3.     Dim lCol As Long
  4.     Dim lShtNumber As Long
  5.     On Error GoTo ErrorHandler

  6.     Application.ScreenUpdating = False
  7.     Application.DisplayAlerts = False
  8.     Set wbDst = GetObject(ThisWorkbook.Path & Application.PathSeparator & "工作簿2.xls")

  9.     With Worksheets("sheet10")
  10.         Debug.Print "sheet10"
  11.         For lCol = 84 To 99 Step 3
  12.             lShtNumber = lShtNumber + 1
  13.             Debug.Print lCol, lShtNumber, lShtNumber + 12
  14.             With wbDst
  15.                 .Worksheets("sheet" & lShtNumber).UsedRange.Clear
  16.                 .Worksheets("sheet" & lShtNumber + 12).UsedRange.Clear
  17.             End With
  18.             .Range(.Cells(3, lCol), .Cells(3, lCol).End(xlDown)).Copy
  19.             With wbDst
  20.                 .Worksheets("sheet" & lShtNumber).Cells(2, 2).PasteSpecial Transpose:=True
  21.                 .Worksheets("sheet" & lShtNumber + 12).Cells(2, 2).PasteSpecial Transpose:=True
  22.             End With
  23.             Application.CutCopyMode = False
  24.         Next
  25.     End With

  26.     lShtNumber = 7
  27.     With Worksheets("sheet18")
  28.         Debug.Print "sheet18"
  29.         For lCol = 84 To 99 Step 3
  30.             Debug.Print lCol, lShtNumber, lShtNumber + 6
  31.             With wbDst
  32.                 .Worksheets("sheet" & lShtNumber).UsedRange.Clear
  33.                 .Worksheets("sheet" & lShtNumber + 6).UsedRange.Clear
  34.             End With
  35.             .Range(.Cells(3, lCol), .Cells(3, lCol).End(xlDown)).Copy
  36.             With wbDst
  37.                 .Worksheets("sheet" & lShtNumber).Cells(2, 2).PasteSpecial Transpose:=True
  38.                 .Worksheets("sheet" & lShtNumber + 6).Cells(3, 2).PasteSpecial Transpose:=True
  39.             End With
  40.             lShtNumber = lShtNumber + 1
  41.             Application.CutCopyMode = False
  42.         Next
  43.     End With
  44.     Application.ScreenUpdating = True
  45.     MsgBox "复制完成"
  46.     wbDst.Close True
  47.     Exit Sub

  48. ErrorHandler:
  49.     MsgBox Err.Number & vbCrLf & _
  50.            Err.Description
  51. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
yizhih + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-5-7 12:17 | 显示全部楼层
hwc2ycy 发表于 2013-5-7 12:00

工作簿2的Sheet1-12对了,但是工作簿2的Sheet13-18只写入了工作簿1的Sheet18的数据(这个正确),但是没有写入工作簿1的Sheet10的数据,这个数据写在工作簿2的Sheet13-18的第二行,从B2开始。
谢谢!
例如工作簿2的Sheet13
3.JPG
回复

使用道具 举报

发表于 2013-5-7 12:41 | 显示全部楼层    本楼为最佳答案   
  1. Sub 按钮2_Click()
  2.     Dim wbDst As Workbook
  3.     Dim lCol As Long
  4.     Dim lShtNumber As Long
  5.     On Error GoTo ErrorHandler

  6.     Application.ScreenUpdating = False
  7.     Application.DisplayAlerts = False
  8.     Set wbDst = GetObject(ThisWorkbook.Path & Application.PathSeparator & "工作簿2.xls")

  9.     With Worksheets("sheet10")
  10.         Debug.Print "sheet10"
  11.         For lCol = 84 To 99 Step 3
  12.             lShtNumber = lShtNumber + 1
  13.             'Debug.Print lCol, lShtNumber, lShtNumber + 12
  14.             With wbDst
  15.                 .Worksheets("sheet" & lShtNumber).UsedRange.Clear
  16.                 .Worksheets("sheet" & lShtNumber + 12).UsedRange.Clear
  17.             End With
  18.             .Range(.Cells(3, lCol), .Cells(3, lCol).End(xlDown)).Copy
  19.             With wbDst
  20.                 .Worksheets("sheet" & lShtNumber).Cells(2, 2).PasteSpecial Transpose:=True
  21.                 .Worksheets("sheet" & lShtNumber + 12).Cells(2, 2).PasteSpecial Transpose:=True
  22.             End With
  23.             Application.CutCopyMode = False
  24.         Next
  25.     End With

  26.     lShtNumber = 7
  27.     With Worksheets("sheet18")
  28.         'Debug.Print "sheet18"
  29.         For lCol = 84 To 99 Step 3
  30.             'Debug.Print lCol, lShtNumber, lShtNumber + 6
  31.             With wbDst
  32.                 .Worksheets("sheet" & lShtNumber).UsedRange.Clear
  33.                 '.Worksheets("sheet" & lShtNumber + 6).UsedRange.Clear
  34.             End With
  35.             .Range(.Cells(3, lCol), .Cells(3, lCol).End(xlDown)).Copy
  36.             With wbDst
  37.                 .Worksheets("sheet" & lShtNumber).Cells(2, 2).PasteSpecial Transpose:=True
  38.                 .Worksheets("sheet" & lShtNumber + 6).Cells(3, 2).PasteSpecial Transpose:=True
  39.             End With
  40.             lShtNumber = lShtNumber + 1
  41.             Application.CutCopyMode = False
  42.         Next
  43.     End With
  44.    
  45.     Application.ScreenUpdating = True
  46.     MsgBox "复制完成"
  47.     Application.DisplayAlerts = False
  48.     wbDst.Close True
  49.     Application.DisplayAlerts = True
  50.     Exit Sub

  51. ErrorHandler:
  52.     MsgBox Err.Number & vbCrLf & _
  53.            Err.Description
  54. End Sub
复制代码
第二次清除多余了,所以没有了,

评分

参与人数 1 +1 收起 理由
yizhih + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-5-7 12:49 | 显示全部楼层
hwc2ycy 发表于 2013-5-7 12:41
第二次清除多余了,所以没有了,

万分感谢 hwc2ycy 老师,您写的非常好,很正确。再次感谢您。
回复

使用道具 举报

发表于 2013-5-7 12:53 | 显示全部楼层
惭愧啊,到现在才理解清了你的意图,{:3812:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-6 16:29 , Processed in 0.323524 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表