Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2191|回复: 4

[已解决]求助论坛老师写一段代码,跨工作簿打开文件。

[复制链接]
发表于 2012-12-16 18:06 | 显示全部楼层 |阅读模式
本帖最后由 yslvictor 于 2012-12-16 18:08 编辑

在book1所在的文件夹中可能有book2(在同一文件夹中查找并打开book2),在book1中运行vba代码:
目的:打开book2,复制book2中sheet2的A1:C1数据,粘贴到book1的sheet1的B2:D2中。
条件:如果book2是打开状态,则直接进行复制粘贴操作;

         如果book2是关闭状态,则打开后进行复制粘贴操作;
         如果book2不存在,则提示“book2不存在”直接后退出vba(不需要选择路径查找)。
Sub 打开复制()
'在这里添加上述条件的代码
   Range("A1:C1").Select
    Selection.Copy
    Windows("Book1.xls").Activate
    Range("B2").Select
    ActiveSheet.Paste
End Sub
打开复制.rar (2.79 KB, 下载次数: 12)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-12-16 19:56 | 显示全部楼层
  1. Sub 按钮1_单击()
  2.     Dim Wbname$, wb$
  3.     Wbname = "Book2.xls"
  4.     wb = ThisWorkbook.Path & "" & Wbname
  5.     If Len(Dir(wb, vbNormal)) = 0 Then MsgBox Wbname & " 不存在": Exit Sub
  6.     Application.ScreenUpdating = False
  7.     On Error Resume Next
  8.     If Workbooks(wb) Is Nothing Then
  9.         Workbooks.Open wb
  10.     End If
  11.     With Workbooks(Wbname)
  12.         .Worksheets("sheet2").Range("a1:c1").Copy ThisWorkbook.Worksheets("sheet1").Range("b2")
  13.         .Close False
  14.     End With
  15.     Application.ScreenUpdating = False
  16. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-16 19:59 | 显示全部楼层    本楼为最佳答案   
  1. Sub 按钮1_单击()
  2.     Dim Wbname$, wb$
  3.     Wbname = "Book2.xls"    '工作簿名
  4.     wb = ThisWorkbook.Path & "" & Wbname   '完整的工作簿名
  5.     If Len(Dir(wb, vbNormal)) = 0 Then MsgBox Wbname & " 不存在": Exit Sub  '检测是否存在BOOK2工作簿
  6.     Application.ScreenUpdating = False  '关闭屏幕刷新
  7.     On Error Resume Next                '忽略错误
  8.     If Workbooks(wb) Is Nothing Then    '检测BOOK2是否已经打开
  9.         Workbooks.Open wb               '打开BOOK2
  10.     End If
  11.    
  12.     With Workbooks(Wbname)
  13.         '复制BOOK2中SHEET2的A1:C1到BOOK1的SHEET1的B2
  14.         .Worksheets("sheet2").Range("a1:c1").Copy ThisWorkbook.Worksheets("sheet1").Range("b2")
  15.         .Close False    '关闭(不保存)
  16.     End With
  17.     Application.ScreenUpdating = False  '打开屏幕刷新
  18. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-16 20:23 | 显示全部楼层
  1. Sub dd()
  2.     Dim na
  3.     Dim ipath As String
  4.     Dim str As String
  5.     Dim filename
  6.     ipath = ThisWorkbook.Path & "/"
  7.     filename = dir(ipath & "*.xls")
  8.     Do
  9.         na = na & filename
  10.         filename = dir
  11.     Loop Until filename = ""

  12.     If InStr(na, "Book2.xls") = 0 Then
  13.         MsgBox "book2不存在"
  14.         Exit Sub
  15.     Else
  16.         Workbooks.Open ipath & "Book2.xls"
  17.         ActiveWorkbook.Sheets("sheet2").Range("a1:c1").Copy ThisWorkbook.Sheets(1).Range("b2:d2")
  18.     End If

  19. End Sub
复制代码
我也练下手
回复

使用道具 举报

 楼主| 发表于 2012-12-16 23:42 | 显示全部楼层
谢谢班级管理员老师,解释的很详细,遇到问题有很多热心的论坛老师帮助解决,真是特别的高兴。哈哈!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 04:49 , Processed in 0.349190 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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