2016-04-25 6 views
1

konnte ich die Zeilen in einer anderen Arbeitsmappe kopieren, indem Sie vordefinierte Bereiche verwendet wird. Allerdings wollte ich sicherstellen, dass nur diejenigen mit Werten kopiert werden müssen. Ich habe diesen Code wurde formuliert, aber es gibt einen Fehler -1004kopieren Zeilen bis zur letzten Zeile mit dem Wert nur auf eine andere Arbeitsmappe

Private Sub test() 

Dim WBa As Workbook, MyPathA As String 
Dim FinalRow As Long 
Dim getDBsht As Worksheet 

MyPathA = "sharepoint.com/Financial Tracker v8.xlsx" 

ThisWorkbook.Sheets("ConTracker_DB").UsedRange.ClearContents 

' Attempt to open a sharepoint file 
Set WBa = Workbooks.Open(MyPathA) 
'Set WBb = Workbooks.Open(MyPathB) 

Set getDBsht = WBa.Sheets("ConTracker_DB") 
getDBsht.UsedRange.Copy 

'error starts here 
ThisWorkbook.Sheets("ConTracker_DB").UsedRange.Paste 


Application.CutCopyMode = False 
WBa.Close 

Set WBa = Nothing 

End Sub 

AKTUALISIERT Code: Usedrange fixiert meine Kopie Zeilen mit Wert nur, aber Einfügen Fehler weiterhin noch

+1

'getDBsht.Ran ge (FinalRow) .Copy kopiert nur eine Zeile. Warum nicht einfach "getDBsht.UsedRange.Copy"? – Johanness

+0

@Johanness, das hat funktioniert! Danke :) Aber der Fehler beginnt immer noch mit dem ThisWorkbook.Sheets Block – astropringles

+0

Es gab eine Sache vor einer Weile, dass Clearing-Inhalt gelöscht auch die Einfügen-Bin. Wenn sich der Fehler auf das Einfügen bezieht, versuchen Sie, zuerst das Blatt zu löschen und dann Einfügen. Andernfalls: Sind Sie sicher, dass das Blatt in ThisWorkbook existiert (versuchen Sie es mit einer zweiten Arbeitsmappenvariablen (wie myActiveWB), stellen Sie es am Anfang ein und verwenden Sie es explizit für diesen Befehl). – Johanness

Antwort

0

Beantwortung meiner Frage :))

Grundsätzlich, wenn Sie usedRange.Copy

verwenden Sie mit Cells(1, 1).PasteSpecial Paste:=xlPasteValues

Hier finden Sie für den kompletten Code einfügen sollten, wenn Sie mit diesem:

Private Sub test() 

Dim WBa As Workbook, MyPathA As String 
Dim FinalRow As Long 
Dim getDBsht As Worksheet 

MyPathA = "sharepoint.com/Financial Tracker v8.xlsx" 

ThisWorkbook.Sheets("ConTracker_DB").UsedRange.ClearContents 

' Attempt to open a sharepoint file 
Set WBa = Workbooks.Open(MyPathA) 
'Set WBb = Workbooks.Open(MyPathB) 

Set getDBsht = WBa.Sheets("ConTracker_DB") 
getDBsht.UsedRange.Copy 


ThisWorkbook.Sheets("ConTracker_DB").Cells(1, 1).PasteSpecial Paste:=xlPasteValues 


Application.CutCopyMode = False 
WBa.Close 

Set WBa = Nothing 

End Sub 
+0

Froh, dass Sie die Antwort gefunden haben. Sie sollten es akzeptieren - es entfernt die Frage von den "unbeantworteten". – Johanness

+0

hätte es ohne dich nicht geschafft! : D Prost! @ Johannis – astropringles

0

Sie könnten die einzelnen Zellen iterieren und kopieren Sie nur diejenigen, die einen Wert haben:

Dim sourceCell as Range 
Dim targetCell as Range 
Set targetCell = ThisWorkbook.Sheets("ConTracker_DB").Range("A1"). 
For each sourceCell in Range("theNamedRangeYouWantToCopyFrom") 
'I'm not sure if you need a dynamic range to copy from, but if you don't... 
'...it's much easier to use a "named range" for that. 
    If sourceCell.Value <> "" Then 
    targetCell.Value = sourceCell.Value 
    Set targetCell = targetCell.Offset(1,0) 
    End If 
Next sourceCell 
0

Versuchen Sie, die letzte Spalte definieren Sie kopiert müssen und dann die Definition der Start- und Zielzellen im Bereich:

FinalCol = 23 '(or whatever you need) 
getDBsht.Range(getDBsht.Cells(1, 1), getDBsht.Cells(FinalRow, FinalCol)).Copy 

Beachten Sie auch, dass ich oben Spezifizierungs bin, die die Zellen im Bereich Arbeitsblatt kommen. Dies kann hilfreich sein, wenn mehrere Arbeitsmappen/Arbeitsblätter gleichzeitig geöffnet sind.

definiert das Ziel, bevor Sie mit dem Kopieren beginnen eine gute Idee ist, auch.

CopyTo = ThisWorkbook.Sheets("ConTracker_DB").Range("A1") 
+0

Hi @ebbishop Sie sehen, dass die, die ich kopiere mehrere Spalten hat .. und ich denke, ich habe ein Problem mit der Reichweite. Soll ich auch den Pasting-Bereich definieren? – astropringles

Verwandte Themen