如何用vba实现选择打开一个excel并复制里面的数据

 我来答
灯小逸
2012-04-17 · 超过11用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:20.6万
展开全部
新建一个工作簿,命名为“当前宏”然后在sheet1里面第一行输入标题行(你先把你要打开的表格的第一行复制过来就可以了,然后关掉),视图->宏->录制宏,然后随便点一下,然后再点击停止录制宏,然后,视图->宏->查看宏,进入刚刚建立的宏,把下面的宏复制进去全部替换掉原来的,然后运行就可以了,记得把“当前宏”这个EXCEL表放到你想打开的所有EXCEL表当前目录下哦,然后会自动打开所有的EXCEL,并且自动复制第二行开始的所有内容到“当前宏”的第一张工作簿中

Sub 打开excel表格()
Dim myPath$, myFile$, AK As Workbook
Dim k
Application.ScreenUpdating = False '冻结屏幕,以防屏幕抖动
workdir = ActiveWorkbook.Path
k = 0

myFile = Dir(workdir & "\*.xls") '只要是2003版的EXCEL表格都会自动打开
Do While myFile <> "" '当指定路径中有文件时进行循环
Set AK = Workbooks.Open(workdir & myFile) '打开符合要求的文件
Call Macro1(myFile) '此处调用下面的那个子过程,就是复制表格里头的东西
myFile = Dir '找寻下一个*.xls文件
Loop
Windows("当前宏.xls").Activate
ActiveWorkbook.Save
Application.ScreenUpdating = True '冻结屏幕,此类语句一般成对使用
End Sub

Sub Macro1(file As String)

Application.StatusBar = "正复制在EXCEL文件"& file &"里的内容......"
Windows(file).Activate
sheets(1).select
h=range("a63000").end(xlup).row
l=range("a1").end(xltoright).column
range(cells(2,1),cells(h,l)).select
selection.copy
Windows("当前宏.xls").Activate
h=range("a63000").end(xlup).row
sheets(1).cells(h+1,1).select
ActiveSheet.Paste
Windows(file).Activate
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True

End Sub
鱼木混猪哟
高粉答主

2015-12-06 · 专注Office,尤其Excel和VBA
鱼木混猪哟
采纳数:6078 获赞数:33681

向TA提问 私信TA
展开全部
假设打开的文件是D盘123文件夹中的1.xls文件,并将sheet1中的内容,复制到当前Excel文件的sheet1工作表中,以下是代码及其解释:

Sub main()
Workbooks.Open Filename:="D:\123\1.xls" '通过Open的方法打开Excel文件,Filename即打开的文件名,必须包含完整的路径和完整的工作名
ActiveWorkbook.Sheets(1).Cells.Copy ThisWorkbook.Sheets(1).Cells '这里包含了复制和粘贴,Copy前面的是要复制的对象,而后面是要粘贴的目的区域,Cells是表示对整个工作表的内容进行复制
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinaboyzyq
2012-04-12 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3142万
展开全部
Sub Macro1()
Workbooks.Open Filename:="E:\111\111.xls"
Range("A4:D43").Copy
Windows("Book1").SelectedSheets("sheet1").Paste
End Sub
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lybwr8
2012-04-12 · TA获得超过159个赞
知道小有建树答主
回答量:247
采纳率:52%
帮助的人:52.4万
展开全部
将下面的代码作相应的修改:
Dim wkbk As Workbook '定义一个工作薄
Dim myFileName As String, x As Integer, rw As Integer '定义要读取的文件路径
'rw = ThisWorkbook.Sheets("设计书记录").UsedRange.Rows.Count + 1
rw = ThisWorkbook.Sheets("设计书记录").[W65536].End(xlUp).Row + 1
myFileName = Application.GetOpenFilename("Excel2003 (*.xls), *.xls") '浏览本地CSV文件

If myFileName = "False" Then '如果按取消那么弹出对话框

MsgBox "请选择文件!", vbInformation, "取消"

Else

Set wkbk = Workbooks.Open(myFileName) '先打开要复制的文件
On Error Resume Next
If Sheets("设计书记录").Range("B2").Text <> "设计单位" Then

wkbk.Close False

MsgBox "文件错误,请重新选择!", vbInformation, "取消"

Else
Dim d As Integer
d = wkbk.Sheets("设计书记录").[W65536].End(xlUp).Row

With wkbk.Sheets("设计书记录")
.Range("AO4:AO" & d) = "未发证"
' x = .UsedRange.Rows.Count
x = .[W65536].End(xlUp).Row

.Range("A4:bb" & x).Copy Destination:=ThisWorkbook.Sheets("设计书记录").Range("A" & rw)

End With
wkbk.Close False '关闭打开的文件
End If
End If
追问
请问如何用vba实现选择打开一个EXCE文件,并把这个该文件的Sheet1中的A1:Q30复制到当前工作表中,然后关
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式