Как извлечь данные из нескольких закрытых книг Excel для размещения в отдельной книге на разных листах через VBA?
(Здесь начинающий VBA-кодер!) Кто-нибудь знает, как извлечь несколько конкретных данных ячейки из нескольких закрытых книг, имеющих одинаковый формат листа?
В настоящее время мне поручено скопировать очень специфические данные из определенных ячеек из множества разных и новых (но одного формата) источников и перенести их в другую группу конкретных ячеек в существующем мастер-листе с разными рабочими листами.
Это код, который я хотел бы помочь, но в нем слишком много недостатков по сравнению с тем, что мне нужно...
Sub Importsheet()
Dim Importsheet As Worksheet
'import worksheet from a closed workbook
Sheets.Add Type:= _
'e.g. directory below
"C:\Users\Loli\Desktop\Testing1.xlsx"
End Sub
Этот код помогает мне получить листы из книги с закрытым исходным кодом, но не специально размещенные ячейки в Excel с закрытым исходным кодом. Он также не может вставлять данные в специально размещенные ячейки на разных листах в целевом Excel.
1 ответ
Очень сложно полностью понять ваши требования, так как иногда кажется, что вы хотите скопировать диапазон, а иногда - одну ячейку, поэтому, чтобы указать вам правильное направление, мой ответ только показывает, как открыть и скопировать соответствующий лист в ваш мастер книга, чтобы иметь возможность ссылаться на ячейку / диапазоны, которые вы хотите
(Я хотел бы, как только вы получите ваши данные, затем удалите рабочую таблицу, чтобы ваш мастер не стал внезапно огромным по размеру):
Sub ImportSheet()
Dim sImportFile As String, sFile As String
Dim sThisBk As Workbook
Dim vfilename As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set sThisBk = ActiveWorkbook
sImportFile = Application.GetOpenFilename( _
FileFilter:="Microsoft Excel Workbooks, *.xls; *.xlsx", Title:="Open Workbook") 'open dialog to choose the file you want, you can change this to loop through a folder if they are all in there.
If sImportFile = "False" Then 'check if a file was selected before importing
MsgBox "No File Selected!"
Exit Sub
Else
vfilename = Split(sImportFile, "\")
sFile = vfilename(UBound(vfilename))
Application.Workbooks.Open Filename:=sImportFile 'open the selected file
Set wbBk = Workbooks(sFile)
With wbBk
If SheetExists("Raw_Data") Then ' you should change this to the date, you can do this easily by using a variable such as if SheetExists(variableDate) then, where variableDate = "12/12/2017" or something similar
Set wsSht = .Sheets("Raw_Data")
wsSht.Copy before:=sThisBk.Sheets("Sheet1") 'copy the worksheet into your master
'WsSht.range("A1:B2").copy Destination:=sThisBk.Sheets("Temp").Range("A1").paste xlpastevalues 'use this to copy a specified range in this case A1:B2 to a sheet in master workbook called Temp A1
Else
MsgBox "There is no sheet with name :Raw_Data in:" & vbCr & .Name
End If
wbBk.Close SaveChanges:=False
End With
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Function SheetExists(sWSName As String) As Boolean
Dim ws As Worksheet
On Error Resume Next
Set ws = Worksheets(sWSName)
If Not ws Is Nothing Then SheetExists = True
End Function