2017-12-12 16 views
0

(初心者のVBAコーダーがここにあります) 誰もが同じワークシート形式の複数のクローズドブックから複数の特定のセルデータを抽出する方法を知っていますか?複数のクローズされたExcelワークブックからデータを抽出して、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 
...私は役立つだろう望んだが、それは私が必要なものと比較してあまりにも多くの点で不足しているコードです。クローズドソースワークブックではなく、クローズドソース内に特別に配置されたセルは優れていません。また、特定の配置されたセルのデータを宛先の異なるシートに貼り付けることもできません。

+0

インポートをループして、Tempという名前の新しいシートにデータを追加してそこから特定のセルを抽出してみましょうあなたのマスターに追加して、Temp Sheetを削除して、次のファイルにループスルーしますか? – Xabier

+0

インポートするすべてのファイルのリストがありますか?または同じフォルダ(ディレクトリ)にグループ化されていますか? – Xabier

+0

特定のセルをコピーするには、Excelファイルを開く必要があります(これはバックグラウンドで非表示にすることができ、読み込み専用です。Googleでこれを行うためのチュートリアルがいくつかあります)。しかし、元のExcelファイルを開くことなく、これを解決する機会はほとんどありません。 –

答えて

0

範囲やいくつかの時間をコピーしたい場合があるように、要件を完全に理解することは非常に困難です。正しい方向を指すように、私の答えは、あなたが望むセル/範囲を参照することができるようにするには、関連するシートをマスターワークブックに追加してください。

(データを取得してからワークシートを削除すると、マスターは突然サイズが大きくなりません):

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 
+0

ありがとうございました!万が一、シート全体ではなく、クローズド・エクセルから一連のデータしか抽出できないコードについては、ご存じですか? – GLY

+0

コピーするワークシートの指定された範囲をコピーするために私の答えにコード行を追加しました。あなたのお役に立てれば、私の回答を回答としてマークできますか? – Xabier

関連する問題