繁体   English   中英

Excel 宏 - 基于单元格引用另存为 - 带签名

[英]Excel Macro - Save As Based on Cell Reference - With Signatures

似乎它应该足够简单,我知道,但是一些小并发症让这真的令人沮丧。

我正在使用的 vba 是这样的:

Dim Path As String
Dim filename As String
Path = "C:\Users\Documents\General\Clients\IQA Sampling Plans\"
filename = "IQA-" & Range("D2")
ActiveWorkbook.SaveAs filename:=Path & filename & ".xlsx", FileFormat:=51

但是,出现了几个问题:

  1. 我收到 400 错误。 我怀疑这可能与我正在运行的 Power 查询的数量有关,尽管在此之前我有一些代码应该会破坏所有链接。 虽然它并没有伤害任何东西,宏仍然会做它应该做的事情,只是很烦人。
  2. 它将它保存为新文档,在新位置,并给它一个新名称,但是当我关闭它时,它坚持让我再次保存。 不过,我可以选择“不保存”,这很好。 之所以如此痛苦的真正原因是因为我有数字签名字段,在将 Excel 保存为它可以使用的格式(即不是 xltm)之前无法使用它。 所以我必须先运行这个宏,然后才能使用它们,但后来我尝试使用它们,它现在仍然无法识别它是一种合适的文件格式。 很明显,它保存在新文件夹中,但只有在我关闭它并再次打开它之后它才会注册它,并且我可以使用签名字段。 然后必须选择“不保存”,这会倍加烦人。 我尝试在宏中构建“关闭”和“打开”功能,但在完成这一位之后,400 错误发生,并且没有其他代码行运行。

所以我不确定问题是否在于我:

  1. 试图从模板另存为,
  2. 使用签名文件,
  3. 使用电源查询,
  4. 上述所有的,
  5. 或者我的代码只是废话。

有任何想法吗?

更新:我正在玩并添加了一些:

Application.ScreenUpdating = False
Application.DisplayAlerts = False

(在代码的末尾带有相应的 Trues 显而易见)。

我意识到我只是删除了他查询的表格,而不是查询本身,所以我添加了这些。

ActiveWorkbook.Queries("Query1").Delete
ActiveWorkbook.Queries("Query2").Delete

在一个美好的时刻,一切都按原样进行。 宏运行了,它给我留下了一个新的重命名文件,我能够对其进行签名。

它工作了大约两次,然后没有特别的原因,400 错误又回来了。 所以我确定这是我问题的根源。

现在它又回到了运行非常顺利的宏,最后出现 400 错误,然后当我尝试关闭它时,它迫使我进行另存为。 它拒绝相信我已经完成了它,并更改了文件格式。

再次更新:还有另一种可能性。 我的 OneDrive 一直存在真正的问题,每次我尝试打开新创建的文件时都会要求我登录。 可能是因为我有几个帐户正在运行。 这可能是一个奇怪的冲突,因为我没有正确登录到我当时试图将其保存到的 onedrive。 它仍然出现在 OneDrive 文件夹中。 但这可能与它有关。 一整天都让我头疼。

破解了!!! 绝对是 OneDrive 的问题。

我最终在这里得到了答案: https ://answers.microsoft.com/en-us/msoffice/forum/all/cached-credentials-have-expired-please-sign-in/13144055-8916-4e6e-9a0a-6e276bb565db

正如第一个答案所建议的那样,我删除了我的凭据。 但没有运气。 取消选中“使用 Office 同步我打开的文件”确实起到了作用。

只是意味着我正在牺牲协作处理我的文件的能力,这仍然不理想,但朝着正确的方向迈出了一步。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM