【问题标题】:How to automatically copy columns from one excel file to another excel file in different sheets如何自动将一个excel文件中的列复制到不同工作表中的另一个excel文件
【发布时间】:2015-08-20 16:06:16
【问题描述】:

我是 Visual Basic 的新手(甚至还不到一天 :)),我们将不胜感激。

我有两个 excel 文件,源文件和目标文件。源文件在不同列的第一个选项卡/工作表中充满了信息。目标文件是半空的(其余部分预先填充了默认值),需要填充与源文件相同的值(如果我们可以保留目标格式会很好),但在不同选项卡的不同列中。

谁能给我一个宏功能,可以:

(例如:)

1) 从源文件/表 1/A3 列及以下获取内容,并将其复制到目标文件/表 1/X7 列及以下

2) 从源文件/表 1/B3 列及以下获取内容,并将其复制到目标文件/表 2/X5 列及以下

3) 从源文件/表 1/C3 列及以下获取内容,并将其复制到目标文件/表 1/Y2 列及以下,同时复制到目标文件/表 2/Z4 列及以下。

所以基本上A列进入另一个文件的第一个选项卡列X,B进入第二个选项卡列X,C进入第一个和第二个选项卡,分别是Y和Z列。 (目标文件中的起始行可能每次都不同。)


如果我有基本的结构代码,我想我将能够根据我的特定问题使用文件位置、工作簿/工作表名称和列来调整它。

非常感谢您抽出宝贵时间回答我的问题并期待您的任何想法!当然,如果您需要进一步澄清某些事情,请告诉我。

干杯!
帕诺斯

P.S.1。请注意,我们希望从一个文件复制到另一个文件(而不是跨同一文件中的不同工作表!)
P.S.2。只是将列从一个excel文件复制到另一个,我不介意打开/关闭/保存工作簿自动化或任何其他自动化。

也许一个启动函数可以是?

Sub Demo() 

Dim wbSource As Workbook 
Dim wbTarget As Workbook 

‘ First open both workbooks : 
Set wbSource = Workbooks.Open(“”) ‘ <<< path to source workbook 
Set wbTarget = Workbooks.Open("") ' Workbooks.Open(" ") ' <<< path to destination workbook 

'Now, transfer values from wbSource to wbTarget: 

wbTarget.Sheets("Sheet Name?").Range("A3:A9999").Value = wbSource.Sheets("Sheet Name?").Range("X7:X9999") wbSource.Close 

End Sub

【问题讨论】:

  • 欢迎来到 SO。请参阅how to ask a question
  • 要扩展如何提问,一个好问题,你必须表明你已经做了一些研究。你觉得你具体需要什么?从理论上讲,我们应该帮助您了解它是如何工作的,但不要根据您表达的需求写出整个函数/子。希望这可以解决有关 Stack Overflow 的一些问题!
  • 嗨,大卫,感谢您的回答。
  • 我一整天都做了很多研究,但很失望,因为我找不到这个看似简单的复制粘贴功能的解决方案,我试图用我研究的一个功能来澄清,请看我的版本以上。

标签: vba excel


【解决方案1】:

这是一个非常简短的例子:

Sub panos()
  Dim r1 As Range, r2 As Range, N As Long

  Workbooks.Open "C:\TestFolder\source.xlsx"
  N = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
  Set r1 = Sheets("Sheet1").Range("A3:A" & N)

  Workbooks.Open "C:\TestFolder\dest.xlsx"
  Set r2 = Sheets("Sheet1").Range("X7")

  r1.Copy r2
End Sub

【讨论】:

  • 感谢 Gary 的学生!我会试试的!
  • Public Sub panos() 将 wb_src 调暗为工作簿 将 wb_dst 调暗为工作簿 将 ws_src 调暗为工作表 将 ws_dst 调暗为工作表 Set wb_src = Workbooks.Open("") Set wb_dst = Workbooks.Open( "") Set ws_src = wb_src.Sheets("") Set ws_dst = wb_dst.Sheets("") Dim data() As Variant Dim r_src As Range Dim r_dst As Range Set r_src = ws_src.Range("A3:A9999") 设置 r_dst = ws_dst.Range("X7:X9999") data = r_src.Value2 r_dst.Value2 = data End Sub
  • 不幸的是,Gary 的学生我无法在没有运行时错误的情况下重现您的代码,但它帮助我将它与其他一些在线资源结合起来,我终于设法得到了我想要的并将它粘贴在上面。谢谢大家!
猜你喜欢
  • 2014-08-06
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
相关资源
最近更新 更多