将数据从SharePoint导入和审核到Excel电子表格

时间:2012-07-25 15:22:22

标签: excel sharepoint vba excel-vba

因此,我将数据从Sharepoint日历引入excel电子表格。有没有办法,每当我从sharepoint导入新数据时,它都会循环通过Sharepoint提供的uniqiue ID,并检查它是否已从传入的数据中删除?

那么检查针对当前系统中数据的新数据?

我认为我必须做的是导入数据,将数据存储在“临时”电子表格中,然后运行循环以将临时表的ID汇总到数据表,然后处理审计流程,然后将Temporary更新到数据表,最后删除临时表。

我需要检查两个工作表的ID列。如果ID不存在,我需要从剩余列中提取信息并将该记录导出到另一个电子表格

直到昨天才使用VBA,我被分配了这个任务,没有资源也没关于这个。我知道需要做些什么。不是如何实现它。我需要比较C!在数据到C!暂时的。如果Data中有一个单元格,那不是临时的,我需要将整行导出到Audit工作表。

有人知道哪些命令/宏对此有用吗?

” Public Sub Find_ID()

Dim old_id As Integer, new_id As Integer, oldRow As Variant, newRow As Variant
Dim old_mod As String, new_mod As String

oldRow = 2


Do While Trim(Sheets("Old Data").Range("C" & oldRow)) <> ""
    newRow = 2
    old_id = Trim(Sheets("Old Data").Range("C" & oldRow))


    Do While Trim(Sheets("New Data").Range("c" & newRow)) <> ""
        new_id = Trim(Sheets("New Data").Range("c" & newRow))
        'is new id the same as old id
            'if yes - we have a match, but now we want to compare the modified
                'if modified is a match, then we don't need to do anythying

                'if modified is not a match, we need to figure out what was changed
            'if no - then lets just go to the next line

        newRow = newRow + 1
    Loop


    oldRow = oldRow + 1


Loop'

1 个答案:

答案 0 :(得分:0)

@floppityflip

如果你想从另一个工作表中的一个工作表中搜索某些东西(因为我想它们的顺序不完全相同),你可以使用find函数,并把它放到一个循环中。


像这样:

Sub Find()
'
' Find Macro
'

'
    Dim i As Integer
    i = 1
    Dim comparingVariable As String

    Do

        Sheets("Sheet1").Select           'YOUR FIRST SHEET

        Range("A" & i).Select

        comparingVariable = ActiveCell    'SET VARIABLE EQUAL TO ACTIVE CELL

        Sheets("Sheet2").Select

        On Error Resume Next              'IN CASE YOU DON'T FIND WHAT YOU'RE LOOKING FOR

        Cells.Find(What:=comparingVariable, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate                                        'PUT VARIABLE INTO FIND FUNCTION

        If Err.Number <> 0 Then                                                     'IF THERE WAS AN ERROR (WASN'T FOUND) HILIGHT CELL RED IN SHEET 1

            Sheets("Sheet1").Select
            ActiveCell.Interior.ColorIndex = 3

        End If


        i = i + 1               'ADDING TO ITERATOR

    Loop Until ActiveCell = ""

    Sheets("Sheet1").Select

End Sub

将此数据添加到Excel文档,然后使用我在excel宏中发布的代码:


表1: 1 2 3 4 450 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Sheet 2中: 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 五 4 3 2 1


-Sheet 1有1 - 25按升序排列,而表2有1 - 25按降序排列,除了我在那里添加450以检查它是否捕获了它找不到的东西。

- 根据代码,如果在sheet2中找不到sheet1上的数字,那么这个数字将是红色的(我认为应该澄清)。

希望这有帮助!