Код VBA для вставки и замены одного Wb на другой - PullRequest
0 голосов
/ 27 января 2020

У меня есть 2 файла Excel. Один шаблон, который вы заполняете, и одна база данных. Код, который я написал, копирует данные из шаблона wb и вставляет их в базу данных wb. Я хочу сделать это перед вставкой, чтобы проверить, совпадают ли некоторые значения (значения из шаблона и значения из последней строки из базы данных. Это мой код до сих пор. Я новичок в VBA, я Я использовал для кодирования с java, поэтому я не очень осведомлен о том, как здесь делать.

Sub DONE()
Dim dataFrom As Range
Dim dataTo As Range
Dim dataBase As Workbook
Dim deleted As Range

'First attempt

Dim nameInWbRng As Range
Dim nameInWb As String
Dim nameInDBRNG As Range
Dim nameInDB As String
Dim dayInWbRng As Range
Dim dayInWb As Date
Dim dayInDbRng As Range
Dim dayInDb As Date
Dim activityInWbRng As Range
Dim activityInWb As String
Dim activityInDbRng As Range
Dim activityInDb As String
Dim destinationInWbRng As Range
Dim destinationInWb As String
Dim destinationInDBRng As Range
Dim destinationInDB As String

Set nameInWbRng = Sheets("Sheet1").Range("E2")
nameInWb = nameInWbRng.Value

Set dayInWbRng = Sheets("Sheet1").Range("B2")
dayInWb = dayInWbRng.Value

Set activityInWbRng = Sheets("Sheet1").Range("C2")
activityInWb = acivityInWbRng.Value

Set destinationInWbRng = Sheets("Sheet1").Range("D2")
destinationInWb = destinationInWbRng.Value

'end

Range("E2").Value = Application.UserName

Application.ScreenUpdating = True

Set dataFrom = Sheets("Sheet1").Range("A2:G2")
Set dataBase = Workbooks.Open("C:\Users\katya.atanasova\Desktop\Iskren\Iskren v1.2\DB.xlsx")
With dataBase.Sheets("Sheet1")

    Set nameInDBRNG = .Range("E" & Rows.Count).End(xlUp)
    nameInDB = nameInWbRng.Value

    Set dayInDbRng = .Range("B" & Rows.Count).End(xlUp)
    dayInDb = dayInWbRng.Value

    Set activityInDbRng = .Range("C" & Rows.Count).End(xlUp)
    activityInDb = acivityInWbRng.Value

    Set destinationInDBRng = .Range("D" & Rows.Count).End(xlUp)
    destinationInDB = destinationInWbRng.Value

    If nameInDB = nameInWb Then
    If dayInDb = dayInWb Then
    If acitivityInDb = activityInWb Then
    If destinationInDB = destinationInWb Then
    dataFrom.Copy
    Set dataTo = .Range("A" & Rows.Count).End(xlUp).Offset(1)
    dataTo.Replace
    Else


    dataFrom.Copy

    Set dataTo = .Range("A" & Rows.Count).End(xlUp).Offset(1)

    dataTo.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True


End With

dataBase.Close SaveChanges:=True
Set deleted = Sheets("Sheet1").Range("F2")
deleted.ClearContents



Application.ScreenUpdating = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...