2016-07-04 5 views
0

良い日には、フォルダに約125のスプレッドシートがあり、すべてのスプレッドシートから別のワークブックに各ファイルごとに1つのシートに貼り付けたすべてのデータを統合します。私はフォルダ内のファイルをループしていますが、実際の値ではなく数式を貼り付けています。どのように私は以下のコードでこれを行うことができますか?私はサイトを検索し、それがうまく動作するように見えるものはエラーを引き起こします。これについてのどんな助けも大いに感謝されるでしょう。例えば値はファイルvbaにループを貼り付けます

Sub LoopThroughFilesInFolder() 
Dim mainwb As Workbook 
Dim wb As Workbook 
Dim i As Integer 

Set mainwb = ThisWorkbook 
mainwb.Activate 
Sheets("Engine").Select 
Range("a2:c500").ClearComments 

Set FileSystemObj = CreateObject("Scripting.FileSystemObject") 
Set FolderObj = FileSystemObj.GetFolder("C:\Desktop\Vessel folder 2016") 'Use path of the folder 

For Each fileobj In FolderObj.Files 'loop through the files 

If fileobj.Name <> "Bronco.xlsm" And fileobj.Name <> "~$Bronco.xlsm" And  (FileSystemObj.GetExtensionName(fileobj.Path) = "xlsx" Or FileSystemObj.GetExtensionName(fileobj.Path) = "xlsm") Then 

Application.DisplayAlerts = False 
Set wb = Workbooks.Open(fileobj.Path) 

'copy the results from the just opened wb 
wb.Worksheets("ZenGarden").Select 
lastcell = Range("a2:EQ5").SpecialCells(xlCellTypeLastCell).Address 
Range("a2:" & lastcell).Select 
Selection.Copy 

'go to the mainworkbook and paste data 
mainwb.Activate 
Sheets("Engine").Select 
If Range("a2").Value = "" Then 
Range("a2").Select 
Else 
Range("a1").End(xlDown).Offset(1, 0).Select 
End If 
ActiveSheet.Paste 

wb.Activate 
wb.Save 
wb.Close 
mainwb.Activate 

End If 



Next fileobj 



End Sub 

答えて

0

使用Range.PasteSpecial xlPasteValues、:

'Copy the range into Clipboard 
wb.Sheets(1).Range("A4").CurrentRegion.Copy 
'Setup target range to paste Clipboard values 
Dim targetRange As Range 
Set targetRange = targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Offset(1, 0) 
'Paste Values into target range 
targetRange.PasteSpecial xlPasteValues 

は、だからあなたの場合には、それは同じよう何かになります:

'copy the results from the just opened wb 
wb.Worksheets("ZenGarden").Select 
lastcell = Range("a2:EQ5").SpecialCells(xlCellTypeLastCell).Address 
Range("a2:" & lastcell).Select 
Selection.Copy 

'go to the mainworkbook and paste data 
mainwb.Activate 
Dim targetSheet as Sheet 
Set targetSheet = Sheets("Engine") 
Dim targetRange As Range 
Set targetRange = targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Offset(1, 0) 
'Paste Values into target range 
targetRange.PasteSpecial xlPasteValues 
+0

にすばやく答えジェレミーのために多くをありがとうございました!あなたのコードをVBAに入れると、次の行にエラーが返されます:Set targetRange = targetSheet.Cells(targetSheet.Rows.Count、1).End(xlUp).Offset(1、0) –

+0

こんにちはAndy、そこにそれぞれの答えの隣にホロのチェックボックスがあり、それはあなたにいくつかのポイントを与え、あなたの質問が答えられたことを皆に知らせる。 –

+0

これは初心者の方に申し訳ありませんが、送信した信号にコードをどこに接続するのかわかりません。 –

関連する問題