在一个EXCEL文件中如何用VBA将数据写入另一个EXCLE文件中

时间:2021-12-30 21:00:30
我现在想将我目前的数据汇总,做一些处理,再将此数据写入另一个文件中。也就是做一个报表给别人。
请各位帮忙。

13 个解决方案

#1


在线等中,很帮忙,分数不够可再给,只要能解决问题,还有就是如何用VBA打开已存在的EXCLE文件.

#2


Workbooks.Open ("c:\test.xls")

#3


dim exlA as new Excel.Application
dim exlB as new Excel.Application
dim WsheetA as Excel.Worksheets
dim WsheetB as Excel.Worksheets
exlA.Workbooks.open "第一个excel路径.xls" '打开excel文件,可以用变量
set WsheetA = exlA.ActiveWorkbooks.WorkSheets(1).Select  
exlB.Workbooks.open "第二个excel路径.xls" '打开excel文件,可以用变量
set WsheetB = exlB.ActiveWorkbooks.WorkSheets(1).Select  

  WsheetB.cells(1,1)=WsheetA.cells(1,1) '把第一个excel文件的第一个单元格的值写到第二个excel文件的第一个单元格
...
  WsheetB.Rang("B1")= WsheetA.Rang("D2")= '把第一个excel文件的D2单元格的值写到第二个excel文件的B1单元格
....

’关闭释放内存。
exlA.quit Save:=True '保存excelA
exlB.quit  Save:=True '保存excelB
set exlA=nothing
set exlB=nothing

#4


arden1019(暮眠),多谢你,我可以用你的方法打开,但如何读取打开文件的内容呢?

#5


楼上的楼上已经告诉你了。

#6


我创建了个窗体,在按妞的单击后面复制你给的代码,改了"第一个excel路径.xls"、"第二个excel路径.xls"为我的xls文件路径,编译通过
运行时候有错。
提示是set WsheetA = exlA.ActiveWorkbooks.WorkSheets(1).Select有错!!

#7


请问,如何将一个excel的sheet1中的内容copy到另一个excel文件的sheet1中去,而不将VBA程序也同时copy过去呢?
谢谢!

#8


Private Sub CommandButton1_Click()

    Dim exlA As New Excel.Application
    


    exlA.Workbooks.Open "G:\test\testready.xls" '打开excel文件,可以用变量
           
   
            For J = 4 To exlA.ActiveSheet.UsedRange.Rows.Count
            
                Worksheets("sheet1").Cells(J, 1).Value = exlA.Worksheets("sheet2").Cells(J, 1).Value
               
               
            Next
            
    exlA.Quit
    Set exlA = Nothing
        
End Sub

这样就把testready.xls文件里面的sheet2的内容复制到了文件的sheet1中,从第4行到exlA.ActiveSheet.UsedRange.Rows.Count,检验过了没有错.

#9


我现在需要解决的是

如何可以将多个工作表的内容按前后顺序复制到同一个工作表中?

希望一起考虑,高手指点.

#10


不好意思,
把.select 去掉。

#11


"多个工作表",那可以用循环呀。
Dim exlA As New Excel.Application
dim Paths(10) as string
paths(0)="testready.xls"
paths(1)="testready1.xls"
paths(2)="testready2.xls"
...
for i = 0 to 10
  exlA.Workbooks.Open "G:\test\" & paths(i)  '打开excel文件,可以用变量       
  For J = 4 To exlA.ActiveSheet.UsedRange.Rows.Count
    Worksheets("sheet1").Cells(J, 1).Value = exlA.Worksheets("sheet2").Cells(J, 1).Value
  Next
  exlA.Quit
next 
Set exlA = Nothing        
End Sub

#12


楼上方法笨,我的方法是用sheet的“移动或复制工作表”,你可以先用宏录制
再将代码改为可动态制定文件
这样快

#13


本来就是在excel中,还要定义一个 excel对象,此方法有问题

#1


在线等中,很帮忙,分数不够可再给,只要能解决问题,还有就是如何用VBA打开已存在的EXCLE文件.

#2


Workbooks.Open ("c:\test.xls")

#3


dim exlA as new Excel.Application
dim exlB as new Excel.Application
dim WsheetA as Excel.Worksheets
dim WsheetB as Excel.Worksheets
exlA.Workbooks.open "第一个excel路径.xls" '打开excel文件,可以用变量
set WsheetA = exlA.ActiveWorkbooks.WorkSheets(1).Select  
exlB.Workbooks.open "第二个excel路径.xls" '打开excel文件,可以用变量
set WsheetB = exlB.ActiveWorkbooks.WorkSheets(1).Select  

  WsheetB.cells(1,1)=WsheetA.cells(1,1) '把第一个excel文件的第一个单元格的值写到第二个excel文件的第一个单元格
...
  WsheetB.Rang("B1")= WsheetA.Rang("D2")= '把第一个excel文件的D2单元格的值写到第二个excel文件的B1单元格
....

’关闭释放内存。
exlA.quit Save:=True '保存excelA
exlB.quit  Save:=True '保存excelB
set exlA=nothing
set exlB=nothing

#4


arden1019(暮眠),多谢你,我可以用你的方法打开,但如何读取打开文件的内容呢?

#5


楼上的楼上已经告诉你了。

#6


我创建了个窗体,在按妞的单击后面复制你给的代码,改了"第一个excel路径.xls"、"第二个excel路径.xls"为我的xls文件路径,编译通过
运行时候有错。
提示是set WsheetA = exlA.ActiveWorkbooks.WorkSheets(1).Select有错!!

#7


请问,如何将一个excel的sheet1中的内容copy到另一个excel文件的sheet1中去,而不将VBA程序也同时copy过去呢?
谢谢!

#8


Private Sub CommandButton1_Click()

    Dim exlA As New Excel.Application
    


    exlA.Workbooks.Open "G:\test\testready.xls" '打开excel文件,可以用变量
           
   
            For J = 4 To exlA.ActiveSheet.UsedRange.Rows.Count
            
                Worksheets("sheet1").Cells(J, 1).Value = exlA.Worksheets("sheet2").Cells(J, 1).Value
               
               
            Next
            
    exlA.Quit
    Set exlA = Nothing
        
End Sub

这样就把testready.xls文件里面的sheet2的内容复制到了文件的sheet1中,从第4行到exlA.ActiveSheet.UsedRange.Rows.Count,检验过了没有错.

#9


我现在需要解决的是

如何可以将多个工作表的内容按前后顺序复制到同一个工作表中?

希望一起考虑,高手指点.

#10


不好意思,
把.select 去掉。

#11


"多个工作表",那可以用循环呀。
Dim exlA As New Excel.Application
dim Paths(10) as string
paths(0)="testready.xls"
paths(1)="testready1.xls"
paths(2)="testready2.xls"
...
for i = 0 to 10
  exlA.Workbooks.Open "G:\test\" & paths(i)  '打开excel文件,可以用变量       
  For J = 4 To exlA.ActiveSheet.UsedRange.Rows.Count
    Worksheets("sheet1").Cells(J, 1).Value = exlA.Worksheets("sheet2").Cells(J, 1).Value
  Next
  exlA.Quit
next 
Set exlA = Nothing        
End Sub

#12


楼上方法笨,我的方法是用sheet的“移动或复制工作表”,你可以先用宏录制
再将代码改为可动态制定文件
这样快

#13


本来就是在excel中,还要定义一个 excel对象,此方法有问题