2017-02-14 7 views
0

Ich versuche, Informationen aus einer Arbeitsmappe in eine andere vorhandene Arbeitsmappe zu kopieren, aber die falsche Information wird hinzugefügt.VBA Kopieren von einer Arbeitsmappe in eine andere Arbeitsmappe

Sub Set_Open_ExistingWorkbook() 
Dim UserRoleWkb As Workbook, ConfigWkb As Workbook, UserRoleWkst As Worksheet, ConfigWkst As Worksheet 
Set UserRoleWkb = Workbooks.Open("C:\Users\cs\Desktop\Ar.xlsx") 
**Set ConfigWkb = ActiveWorkbook** 
Set UserRoleWkst = UserRoleWkb.Sheets("RS Users") 
**Set ConfigWkst = ActiveWorkbook.ActiveSheet** 

Dim i As Integer, j As Integer 
j = 10 'user role 
For i = 8 To 16 'config 
    If ConfigWkst.Cells(i, 2).Value <> "" Then 
     UserRoleWkst.Cells(j, 2).Value = ConfigWkst.Cells(i, 2).Value 
     j = j + 1 
    End If 
Next i 

End Sub 

Der Teil des Codes mit dem ** um es herum ist das Problem. Wenn ich das ActiveWorkbook und ActiveSheeet aufruft, greift es auf die Informationen aus dem UserRoleWkst (Arbeitsblatt) und nicht auf das, was ich wollte: Configwkst.

ich dies versucht haben, aber Fehler auf der ConfigWkst Linie zu erhalten und der Code wird nicht ausgeführt:

Sub Set_Open_ExistingWorkbook() 
Dim UserRoleWkb As Workbook, ConfigWkb As Workbook, UserRoleWkst As Worksheet, ConfigWkst As Worksheet 
Set UserRoleWkb = Workbooks.Open("C:\Users\cs\Desktop\Ar.xlsx") 
**Set ConfigWkb = ActiveWorkbook** 
Set UserRoleWkst = UserRoleWkb.Sheets("RS Users") 
**Set ConfigWkst = ConfigWkb.Sheets("Users") 

Dim i As Integer, j As Integer 
j = 10 'user role 
For i = 8 To 16 'config 
    If ConfigWkst.Cells(i, 2).Value <> "" Then 
     UserRoleWkst.Cells(j, 2).Value = ConfigWkst.Cells(i, 2).Value 
     j = j + 1 
    End If 
Next i 

End Sub 

Jede Hilfe ist willkommen. Vielen Dank!

Antwort

1

Sobald Sie eine andere Arbeitsmappe öffnen dann das wird die Active werden, so dass Sie, dass der Bezug erhalten müssen, bevor UserRoleWkb Öffnen

Set ConfigWkb = ActiveWorkbook 
Set ConfigWkst = ConfigWkb.ActiveSheet 

Set UserRoleWkb = Workbooks.Open("C:\Users\cs\Desktop\Ar.xlsx") 
Set UserRoleWkst = UserRoleWkb.Sheets("RS Users") 
Verwandte Themen