单击某个按钮后,某些行正在从一个工作表复制到另一个工作表但我收到错误:
此工作簿包含指向可能不安全的一个或多个外部来源的链接 如果您信任这些链接,请更新它们以获取最新数据。否则,您可以继续使用您拥有的数据 [更新] [不要更新] [帮助]
我试过点击更新& 不要更新,但不是以任何一种方式复制数据。
我将一个单元格的值放到wbLocationPath:
Set wbLocationPath = WSheet.Range("A2")
While wbLocationPath.Value <> ""
If IsWorkBookOpen(wbLocationPath.Value) Then
For Each wks In Workbooks
If (wks.Path & "\" & wks.Name) = wbLocationPath Then
Set wb = wks
Exit For
End If
Next wks
Else
Set wb = Application.Workbooks.Open(wbLocationPath.Value, ReadOnly:=False)
End If
所以在调试过程中我遇到了设置wb值的错误。
wbLocationPath.value
将A2中的路径设为c\users\me\desktop\project\XYZ.xlsx
。
IsWorkBookOpen(wbLocationPath.Value)返回false,因此控件会出现在出错的其他部分。
我在贴上价值方面没有任何问题。我的代码适用于其他数千个文件路径,但它不适用于某些文件路径。 我有一些文件夹,我从每个文件夹中复制了每个文件的数据。将问题记录在特定文件夹中(&#34; FOOD ADD&#34;)某些特定文件。 因为我有一些文件名,如&#34; 10024125(01-0RD)&#34;所以这些类型的文件的数据复制,但文件名为&#34; 10016818(03-1RD)FOOD ADD&#34;不是复制&amp;通过我提到的错误。
答案 0 :(得分:0)
如果您打开工作簿并且它来自受信任位置(请参阅Excel选项►信任中心►信任中心设置►受信任位置),那么使用“粘贴特殊值”值时应该没有问题,因为您只关心使用值,而不是原始公式。但是,直接价值转移可能足以绕过警告。还有一些隐式单元格父工作表引用应该明确。
with tmpSheet
lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
Set rng = .Range(.Cells(1, 1), .Cells(lastrow, 1)) '<~~ note all parts belong to tmpSheet
end with
with pasteSheet
For Each c In rng.Cells
If c = "ABC" Then
'the following is an alternative method of direct value transfer
.Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(1, columns.count) = _
c.Resize(1, columns.count).Value
End If
Next c
end with
请注意,当您定义 rng 时。父工作表对于.Range
是明确的,而不是构成范围的.Cells
。此外,直接值传输是一种在没有剪贴板的情况下获取值的更有效方法。
答案 1 :(得分:0)
我强烈怀疑IsWorkBookOpen不期望您发送它的完整路径和工作簿名称。如果它只是期待Workbook.Name property,那么当您发送Workbook.FullName property时,您永远不会得到匹配。
Function IsWorkBookOpen2(sWS As String)
Dim b As Long
For b = 1 To Workbooks.Count
'Debug.Print Workbooks(b).FullName
If lcase(Workbooks(b).FullName) = lcase(sWS) Then _
Exit For
Next b
IsWorkBookOpen2 = CBool(b <= Workbooks.Count)
End Function
此替换例程对打开的工作簿的完整路径和文件名(又名Workbook.FullName property)执行不区分大小写的比较,并将其存储到WSheet.Range("A2")
中存储的值。
请注意,它名为IsWorkBookOpen2
,而不是IsWorkBookOpen
。
答案 2 :(得分:0)
实际上VBA代码没有问题。问题出在excel文件中。 excel是&#34;链接WorkSheet&#34;即它被链接到任何服务器,以便在您想要打开时更新excel中的值。因此,您可以从&#34;数据&#34;更改链接属性。菜单选择&#34; EditLink&#34;。
我们可以根据您的要求更改提示属性。
请参阅MS支持的以下解决方案以禁止显示消息: