是否有 VBA 代码来查看 Enterprise Project 2013 文件在打开之前是否已签出?

2024-02-09

试图帮助我们的 Project 2013 用户使用一些 VBA 代码,但我们似乎无法找到答案来查找是否使用 VBA 在我们的 PWA 服务器上检出 Project 2013 文件。它们基本上有一个项目列表,设置为单个项目文件中的任务,VBA 代码循环遍历任务列表以运行 FileOpenEx,进行一些更改,然后关闭它。但是,需要能够在对列表中的每个项目运行 FileOpenEx 之前检查项目文件是否已检出。这是我想要的示例,但它并没有完全达到我想要的效果。

SelectBeginning
While ActiveCell.CellColor <> pjBlack
   fname = "<>\" & ActiveCell.Task.Name
   justname = ActiveCell.Task.Name

   On Error Resume Next
   If Application.Projects.CanCheckOut(fname) Then '<--This does not work correctly, not checking Enterprise Projects?
       FileOpenEx Name:=fname, ReadOnly=false
       'Do Some stuff
       FileCloseEx Save:=pjSave, CheckIn:=True
       FileSave
   Else
      MsgBox (justname & " can not be checked out")
   End If

   SelectCell Row:=1
Wend

如果有人有更好的解决方案、检查此问题的简单方法或确定企业项目是否通过 VBA 代码签出的其他解决方法,请告诉我。谢谢!


我们创建了一个适合规划者的解决方法,但我们必须以任何一种方式打开文件。这样做是以只读模式打开文件,然后尝试在没有警报的情况下检查它。之后,如果我将其签出(这意味着没有其他人签出),它将设置 j=0 并保存,然后继续进行下一个项目。如果其他人签出了它,那么它将转到“错误处理程序”,它告诉项目关闭而不保存,并将文件名保存在稍后返回的字符串中。

SelectBeginning
While ActiveCell.CellColor <> pjBlack
   fname = "<>\" & ActiveCell.Task.Name
   justname = ActiveCell.Task.Name
   FileOpenEx Name:=fname, ReadOnly=true
   Set ProjToOpen = Application.Projects.Application.ActiveProject
   j = 1
   Application.DisplayAlerts = False
   ProjToOpen.Checkout Project
   Application.DisplayAlerts = True

   If Not Application.IsCheckedOut(ProjToOpen.Name) Then
      GoTo errorhandler
   End If

   'Perform actions here

   j = 0
   FileCloseEx Save:=pjSave, CheckIn:=True
   FileSave
errorhandler: 
   If Not j = 0 Then
      ReDim Preserve skippedfiles(0 to skipped) As String
      skippedfiles(skipped) = justname
      skipped = skipped + 1
      ProjToOpen.Application.FileCloseEx Save:=pjDoNotSave
      GoTo GoToNextProj
   End If

GoToNextProj:
   SelectCell Row:=1

Wend
msgstring = Join(skippedfiles(), vbCr)

MsgBox "Here are the files that were already checked out and therefore not changed: " & vbCr & msgstring
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有 VBA 代码来查看 Enterprise Project 2013 文件在打开之前是否已签出? 的相关文章

  • 双击事件 - 多个范围

    我正在寻找为双击事件在多个范围内进行编码的最佳方法 Private Sub Worksheet BeforeDoubleClick ByVal Target As Range Cancel As Boolean If Not Interse
  • 用于将 MS Word 表导出到 Excel 工作表的宏

    我有一个包含许多表格的word文档 有谁知道如何编写宏将此类表导出到不同的 Excel 工作表 答案摘自 http www mrexcel com forum showthread php t 36875 http www mrexcel
  • VBA 代码中的 Excel 公式

    所以 在 Sheet1 中 我有一些名称的基础 它看起来像这样 在 Sheet2 中 我正在使用 Sheet1 中的这些名称 我这样做的方式是在 A 列中输入代码值 在 B 列中输入名称 在 C 列中输入姓氏 看起来像这样 我已经用公式完成
  • 如何以编程方式从 Excel 中的 VBA 宏中删除数字签名?

    有没有办法以编程方式从 Excel 工作表的 VBA 宏中删除数字签名 即相当于进入 VBA 编辑器 转到 工具 菜单 gt 数字签名 并单击 删除 的代码 有趣的问题 出于安全原因 它故意不属于 Excel 对象模型的一部分 可以从证书存
  • 使用 PDFMAKER 将多封电子邮件保存为 pdf

    我是 VBA 的新手 但我用 SAS 编写了一些程序 用汇编程序 大型机和 PC Word Perfect 宏 编写了一些程序 用 Java HTML 和其他东西编写了一些程序 我所做的是 当我遇到问题并且我认为我可以对其进行编程时 我会在
  • Range.End() 困惑

    我有一个关于 VBA 中 Range End 属性的一般性问题 我已经阅读了有关该房产的信息here http msdn microsoft com en us library bb221181 aspx 但我还是很困惑 例子 With w
  • 需要在Excel中合并3列

    我有 3 列 A B C 我需要合并这 3 列 并且我已经应用了 forumala A1 B1 C1输出为 E 列 我需要输出为 D 列 下面的公式将达到您想要的结果 TEXTJOIN TRUE A1 C1 Textjoin 的工作方式类似
  • Excel VBA - 如何逐行读取csv文件而不是整个文件

    这是我需要读取的 csv 文件内容 header header header header header header value value value value value value value value value 我在网上找到
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • Excel VBA 导出到文本文件。需要删除空行

    我有一个工作簿 使用以下脚本将其导出到文本文件 它工作正常 但是当我打开文本文件时 末尾总是有一个空行 这导致我在生成此文本文件后运行的另一个脚本出现问题 有关如何从导出中删除空行的任何帮助 Code Sub Rectangle1 Clic
  • OpenArgs 为空问题

    我正在使用OpenArgs使用时发送值的参数DoCmd OpenForm DoCmd OpenForm frmSetOther acNormal acFormAdd acDialog value 然后我用Me OpenArgs在打开的表格内
  • Excel VBA 过滤和复制粘贴数据

    给定一个数据集 假设有 10 列 在 A 列中我有日期 在 B 列中我有 我想仅过滤 A 列 2014 年的数据 B 列 ActiveSheet Range A 1 AR 1617 AutoFilter Field 5 Operator x
  • VBA根据单元格的值是否为零显示/隐藏行

    我有一个 Excel 工作表 我想根据另一个单元格中的值隐藏或取消隐藏某些行 简而言之 整个事情应该取决于单元格中的值C2 D2 E2 If C2 is blank我想rows 31 to 40被隐藏 如果是的话不为空 他们需要是visib
  • Confluence:使用 VBA 更新现有页面

    我尝试使用 VBA 更新 Confluence 页面 我的想法是使用REST API加载页面内容 修改内容然后上传修改后的版本 这是我的代码 Private Sub TestRESTApi Dim uname As String uname
  • Word通过vba宏删除tabe列出现错误

    我想将excel中的数据复制到word表中 然后从表中删除一些列 我可以将数据复制到表中 但是当我删除列时会出现错误 无法访问此集合中的各个列 因为该表具有混合的单元格宽度 我的代码 Public Tbl1 As Table Sub cal
  • 无法摆脱脚本中的硬编码延迟

    我用 vba 结合 selenium 编写了一个脚本来解析网页中可用的所有公司名称 该网页启用了延迟加载方法 因此每个滚动中只有 20 个链接可见 如果我滚动 2 次 则可见链接数为 40 个 依此类推 该网页中有 1000 个可用链接 我
  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15
  • 当使用公式生成超链接时,VBA 打开 Excel 超链接不起作用

    使用公式生成的 Excel 超链接似乎存在错误 我使用的是 Excel 2010 我有一个电子表格 其中的单元格包含 URL 我的目标是执行以下两件事 将这些单元格变成超链接 创建一个键盘快捷键来打开这些超链接 这样我就不必使用鼠标了 为了
  • Excel VBA - 添加自定义数字格式

    我有一个在 Excel 外部生成的文件 其中包含许多百分比 所有这些百分比都有一位小数 当导入到 Excel 中时 Excel 会在百分比中添加第二位小数 这似乎是 Excel 中百分比的某种默认格式 它只是添加了一个 0 我想将所有两位小
  • Excel 2013 数据透视表不会更改当前页面,除非手动导航到

    我们有一小段 VBA 代码 多年来一直完美运行 本质上是 Me PivotTables APivot PivotFields AField CurrentPage Some text 这种方法一直有效 直到 Excel 2013 该行将失败

随机推荐