Sql VBA在数据库同步后保留信息

Sql VBA在数据库同步后保留信息,sql,excel,vba,Sql,Excel,Vba,所以,在一个工作簿中,我有两个工作表:一个是一个充满了链接到SQL数据库的想法的表,另一个是从该表中选择的某些想法 从数据库表中,我想将符合特定条件的想法复制到第二个表中。在那里,用户会给他们一些数字排名 Idea 1 0 4 5 3 8 Idea 2 7 5 1 5 4 Idea 3 1 2 8 8 2 在一个包含按钮的时钟上,我想更新数据库表,并将任何新想法复制到评分表中,这样它可能类似于以下内容 I

所以,在一个工作簿中,我有两个工作表:一个是一个充满了链接到SQL数据库的想法的表,另一个是从该表中选择的某些想法

从数据库表中,我想将符合特定条件的想法复制到第二个表中。在那里,用户会给他们一些数字排名

Idea 1    0    4    5    3    8
Idea 2    7    5    1    5    4
Idea 3    1    2    8    8    2
在一个包含按钮的时钟上,我想更新数据库表,并将任何新想法复制到评分表中,这样它可能类似于以下内容

Idea 1    0    4    5    3    8
Idea 2    7    5    1    5    4
Idea 3    1    2    8    8    2
New Idea1  
New Idea2  
我怎样才能完成这个复制?我无法想象一种不覆盖已经包含的收视率的方法

密码 用于将所有ID号复制到评级表的代码

Sub CopyFilter()

Dim rng As Range
Dim rng2 As Range

With ActiveSheet.AutoFilter.Range
    On Error Resume Next
        Set rng2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
            .SpecialCells(xlCellTypeVisible)
    On Error GoTo 0
End With

If rng2 Is Nothing Then
    MsgBox "No data to copy"
Else
    Set rng = Worksheets("Ideas").ListObjects("IdeasTable"). _
        ListColumns(1).DataBodyRange
    rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy
    
    Worksheets("WFNs").Range("B5").PasteSpecial Paste:=xlPasteFormulas, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    
End If
   
ActiveSheet.ShowAllData
Worksheets("WFNs").Activate

End Sub

您需要做的是,保存有关插入内容的信息。 首先,声明如下所示的全局变量:

Dim startRow as Long
在您的sub中:

If startRow = 0 Then
    startRow = 1 
End If 

With ActiveSheet.AutoFilter.Range
    On Error Resume Next
        Set rng2 = .Offset(startRow, 0).Resize(.Rows.Count - 1, 1) _
            .SpecialCells(xlCellTypeVisible)
    On Error GoTo 0
End With
不总是复制整个范围,而是只复制新条目。 现在已经有了起始行,您可以在if中使用该行在旧日期之后粘贴数据:

Else
    Set rng = Worksheets("Ideas").ListObjects("IdeasTable"). _
        ListColumns(1).DataBodyRange
    rng.Offset(startRow, 0).Resize(rng.Rows.Count - 1).Copy

    Worksheets("WFNs").Range("B" & (startRow + 4)).PasteSpecial Paste:=xlPasteFormulas, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    startRow = rng.Rows.Count - 1
End If

我只是换了几行,里面有startRow。未经测试

到目前为止你试过什么?为什么你认为旧的想法会被改写?我对VBA很陌生,我能想象的唯一方法是对源表进行排序,只留下所需的条目,然后将它们复制到排序表中。如果已有想法,它们将被覆盖,因为我不能保证它们的顺序相同,或者新想法将出现在列表的末尾。您是否尝试过一些可以发布的代码?您可以仅从表中选择新项目,也可以将旧项目保存在变量中,并将旧项目与新项目进行比较。我如何仅复制新行?您的描述太笼统了。提供一些代码,以便我们有一个起点。如果您有更多问题,请提问: