用于检入excel文件的vbscript

时间:2013-06-21 01:42:19

标签: excel sharepoint vbscript

我正在尝试编写一个vbscript,以便能够检出存储在sharepoint服务器上的excel文件。

目前我可以从SharePoint 2010: Link to open Excel file in edit-mode mode

查看该文件

但是,我正在尝试重新检查文件但无法检查。我已按http://msdn.microsoft.com/en-us/library/office/ff194456%28v=office.14%29.aspx搜索并尝试了结帐功能,但无法完成。

目前我的代码是

Sub CheckInFile

    Dim ExcelApp, ExcelSheet, ExcelBook
    Dim myURL

    myURL = "http://server/Site/excel.xlsx"

    Set ExcelApp = CreateObject("Excel.Application")                        

    If (ExcelApp.WorkBooks.CanCheckIn(myURL) = True) Then
        msgbox ("here")
        ExcelApp.WorkBooks.Open (myURL)
        ExcelApp.Application.WorkBooks.CheckIn myURL

        ExcelApp.ActiveWorkbook.Close
        ' Quit Excel.
        ExcelApp.Quit
        ' Clean Up
        Set ExcelApp= Nothing
    End If

End Sub

然而,脚本在if语句处停止并失败,而不是执行。是否有类似的vbscript函数来检查文件?

3 个答案:

答案 0 :(得分:1)

我为此苦苦挣扎,花了很多时间寻找在我的特定环境中工作的解决方案。以下是我需要满足的标准:

  • 使用vbscript文件从我的计算机执行该过程
  • 遍历~200 excel电子表格列表
  • 查看每个文件
  • 进行各种条件更新并保存
  • 更新完成后再次检入文件。

以下是未来任何人的替代解决方案,像我一样,尝试了建议的方法,但它没有用。这是经过测试和运作的:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objExcel = CreateObject("Excel.Application") 

objExcel.Visible = True
objExcel.DisplayAlerts = False

Dim MyVar ' so popup alerts narrate the process
          ' and help explain what is happening
          ' for those who want to see it step
          ' by step
Dim docPath
docPath = "\\your server\sites\Docs\sharepoint spreadsheet.xlsx"
' I believe this can be any document path

Set objWorkbook = objExcel.Workbooks.Open(docPath)

cco = objExcel.Workbooks.CanCheckOut(docPath)

MyVar = MsgBox ("can check out? " & cco, 0) 
' -----------------------------------------------------
' this shows "False" every time. I still do not know how 
' to get this to work, but thought it would be valuable
' to include for explanation
' -----------------------------------------------------

objExcel.Workbooks.CheckOut(docPath)
' -----------------------------------------------------
' this SUCCEEDS every time...as long as you have
' the ability to check out the document manually
' -----------------------------------------------------

MyVar = MsgBox ("Update cell", 0)
With objExcel.ActiveWorkbook.Worksheets(1)
    objExcel.Cells( 1, 1 ).Value = "test value"
End With

MyVar = MsgBox ("Save the file", 0)
objWorkbook.Save

MyVar = MsgBox ("check in the file", 0)

objWorkbook.CheckIn
' -----------------------------------------------------
' This actually checks in the active document and *closes 
' it* You don't have to have a separate command to close
' the file, e.g.
'   objWorkbook.Close 
' THIS WILL FAIL.
' -----------------------------------------------------

Set objWorkbook = Nothing

答案 1 :(得分:0)

试试这个:

Dim ExcelApp, ExcelSheet, ExcelBook
    Dim myURL = "http://server/Site/excel.xlsx"
    Set ExcelApp = CreateObject("Excel.Application")                        
    ExcelApp.WorkBooks.Open (myURL)
    If (ExcelApp.ActiveWorkbook.CanCheckIn = True) Then
        ExcelApp.Application.WorkBooks(myURL).CheckIn 
        ExcelApp.ActiveWorkbook.Close
        ' Quit Excel.
        ExcelApp.Quit
        ' Clean Up
        Set ExcelApp= Nothing
    End If

答案 2 :(得分:0)

只需更改以下几行代码即可:

ExcelApp.Visible = True
ExcelApp.DisplayAlerts = False

谢谢!

 Dim oExcel
 Dim strFileName
 Set oExcel = CreateObject("Excel.Application")
 oExcel.Visible = True
 oExcel.DisplayAlerts = False
 strFileName = "view_2019.xlsm"

'Checkin
 If oExcel.Workbooks(strFileName).CanCheckIn = True Then
   oExcel.Workbooks(strFileName).CheckIn SaveChanges=True,Comments="Updated"
   MsgBox strFileName  & " has been checked in."
 Else
   MsgBox "This file cannot be checked in at this time. Please try again later."
 End If
 set oExcel = nothing