Sub VBA_Read_External_Workbook()
'''''Define Object for Target Workbook
Dim Target_Workbook As Workbook
Dim Source_Workbook As Workbook
Dim Target_Path As String
'''''Assign the Workbook File Name along with its Path
'''''Change path of the Target File name
Target_Path = "C:\Users\User\Desktop\Excel VBA\Working Sample Folder\MAY 2017 Summary- Atlas work.xlsx"
Set Target_Workbook = Workbooks.Open(Target_Path)
Set Source_Workbook = ThisWorkbook
'''''With Target_Workbook object now, it is possible to pull any data from it
'''''Read Data from Target File
Target_Data = Target_Workbook.Sheets(1).Range("A1:B3")
Source_Workbook.Sheets(2).Range("A1:B3") = Target_Data
'''''Update Target File
Source_data = Source_Workbook.Sheets(1).Range("A1:B3")
Target_Workbook.Sheets(1).Range("A1:B3") = Source_data
'''''Close Target Workbook
Source_Workbook.Save
Target_Workbook.Save
Target_Workbook.Close False
'''''Process Completed
MsgBox "Task Completed"
End Sub我一直在修改我在这个网站上找到的代码,用它来复制特定格式的特定数据。我需要一些指导,就是添加一个循环来获取将放在文件夹中的文件中的数据。需要读取的文件
所以我的问题
我尝试谷歌一些VBA代码,但答案非常模糊。
感谢从你的经历中得到的任何信息。
发布于 2017-06-02 07:39:54
1)基本上,我已经设置了需要复制和粘贴到目标文件上的特定数据范围。但是,与其继续更改目标路径,还有什么方法可以让循环自动跳转到下一个工作簿并获取这些值呢?
这会让你开始
Dim MyFolder As String
Dim StrFile As String
Dim flName As String
'~~> Change this to the relevant folder
MyFolder = "c:\MyFolder\"
StrFile = Dir(MyFolder & "*.xls*")
'~~> Loop through all excel files in the folder
Do While Len(StrFile) > 0
flName = MyFolder & StrFile
'~~> Open the workbook
Set wb = Workbooks.Open(flName)
'
'~~> Rest of your code
'
wb.Close (False)
StrFile = Dir
Loop2)我发现,使用这种方法传输数据时,它不传递数据性质,例如,如果是源文件的时间格式,则当VBA执行和更新目标文件时,该值不是相同的格式,而且都是以一般格式粘贴的。
代码直接设置值,因此格式不会被复制。您需要.Copy和.Pastespecial,而不是直接设置值。记录一个宏以查看.Copy和.Pastespecial是如何工作的。或者读下去
3)是否可以循环更新,将自动跳转到下一行以粘贴数据?
找到最后一行,然后复制粘贴到该行。请查看下面的链接以找到最后一行。
https://stackoverflow.com/questions/44323124
复制相似问题