Sharepoint 2010 Excel vba根据条件删除Excel中的重复列

Sharepoint 2010 Excel vba根据条件删除Excel中的重复列,sharepoint-2010,excel,vba,Sharepoint 2010,Excel,Vba,我找到了这个链接 人们已成功使用它将SharePoint 2010列表项自动导出到Excel 2010。我能够使用SharePoint数据获取Excel工作表。问题是我的SharePoint列表中已经有ID作为字段。vba代码自动生成ID(自动增量)并将其添加到excel文件中。现在我的excel中有两个ID字段名。我想摆脱excel vba自动生成的ID,只从SharePoint列表中获取字段名(ID是其中之一)。我该怎么做?谢谢 Sub TestMacro() Dim objMyList

我找到了这个链接 人们已成功使用它将SharePoint 2010列表项自动导出到Excel 2010。我能够使用SharePoint数据获取Excel工作表。问题是我的SharePoint列表中已经有ID作为字段。vba代码自动生成ID(自动增量)并将其添加到excel文件中。现在我的excel中有两个ID字段名。我想摆脱excel vba自动生成的ID,只从SharePoint列表中获取字段名(ID是其中之一)。我该怎么做?谢谢

Sub TestMacro() 
Dim objMyList As ListObject 
Dim objWksheet As Worksheet 
Dim strSPServer As String 
Const SERVER As String = "http://abcd/" 
Const LISTNAME As String = "{A486016E-80B2-44C3-8B4A-8394574B9430}" 
Const VIEWNAME As String = "" 
' The SharePoint server URL pointing to 
' the SharePoint list to import into Excel. 
strSPServer = "http://" & SERVER & "/_vti_bin" 
' Add a new worksheet to the active workbook. 
Set objWksheet = Worksheets.Add 
' Add a list range to the newly created worksheet 
' and populated it with the data from the SharePoint list. 
    Set objMyList = objWksheet.ListObjects.Add(xlSrcExternal, _ Array(strSPServer,    LISTNAME, VIEWNAME),  
True, , Range("a1")) 
Set objMyList = Nothing 
Set objWksheet = Nothing 
End Sub

我正在做与您所做的类似的事情,并添加了以下代码行:

Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
Application.DisplayAlerts = True
.RefreshAll刷新表中的数据,刷新后会删除该列。我目前仍在试图找出原因,但它确实解决了摆脱该专栏的问题


编辑:我知道这是在回答3年前的一个问题,但我认为这可能会帮助那些偶然发现这个问题的人。

我正在做一些类似于您所做的事情,我添加了以下代码行:

Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
Application.DisplayAlerts = True
.RefreshAll刷新表中的数据,刷新后会删除该列。我目前仍在试图找出原因,但它确实解决了摆脱该专栏的问题


编辑:我知道这是在回答3年前的一个问题,但我认为这可能会帮助那些偶然发现这个问题的人。

objWksheet.Columns(x)。删除
其中x是不需要的列号。根据Tim的建议,删除objMyList.ListColumns(x)。删除,其中x是表列的名称或索引。不过,我很好奇vba中该列添加到了哪里。我没有看到任何代码可以这样做。谢谢你们两位的建议。现在我的excel工作表是这样的:A、B、C、D、E、F、G等列。A1的值是由excel生成的ID,并且是自动递增的。B1的值也是ID,它是我的SharePoint 2010列表中的一个字段。我不太确定在下面给出的行中x的值应该放什么:objWksheet.Columns(x).Delete和objMyList.ListColumns(x).Delete。我试着用A代替x,但无论哪种情况,它都显示了错误“应用程序定义的错误或对象定义的错误”。如何在Excel 2010中找到A列的索引?第一列使用数字1。这两个例子都是正确的。如果你不了解columns属性,那么首先尝试使用帮助文件,然后尝试google,最后在在线论坛上询问。通过这种方式,您可以更快地获得所需的信息,并在此过程中学习。如何使用column属性:
objWksheet.Columns(x).Delete
其中x是不需要的列号,基于Tim的建议,objMyList.ListColumns(x).Delete,其中x是表列的名称或索引。不过,我很好奇vba中该列添加到了哪里。我没有看到任何代码可以这样做。谢谢你们两位的建议。现在我的excel工作表是这样的:A、B、C、D、E、F、G等列。A1的值是由excel生成的ID,并且是自动递增的。B1的值也是ID,它是我的SharePoint 2010列表中的一个字段。我不太确定在下面给出的行中x的值应该放什么:objWksheet.Columns(x).Delete和objMyList.ListColumns(x).Delete。我试着用A代替x,但无论哪种情况,它都显示了错误“应用程序定义的错误或对象定义的错误”。如何在Excel 2010中找到A列的索引?第一列使用数字1。这两个例子都是正确的。如果你不了解columns属性,那么首先尝试使用帮助文件,然后尝试google,最后在在线论坛上询问。通过这种方式,您可以更快地获得所需的信息,并在此过程中学习。如何使用列属性: