copyfile 的参数是不是会更改隐藏属性?

Posted

技术标签:

【中文标题】copyfile 的参数是不是会更改隐藏属性?【英文标题】:Is there an argument for copyfile that will change the hidden property?copyfile 的参数是否会更改隐藏属性? 【发布时间】:2019-10-04 02:01:15 【问题描述】:

我有一个将数据写入复制的 Excel 模板的数据库。该模板被隐藏以防止最终用户篡改它,但最终结果也被隐藏。保存新文件时有没有办法改变隐藏属性?

目前,数据库复制模板并重命名。

fso.CopyFile "C:\Upload\Rebate_Upload_Files\Standard Form (Template) 
protected.xlsx", "C:\Upload\Rebate_Upload_Files\Rebate Contract " & 
Contract_Number & " " & Date$ & ".xlsx"

之后,它会传输相应的表并保存文件。

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, 
"export_table", "C:\Upload\Rebate_Upload_Files\Rebate Contract " & 
Contract_Number & " " & Date$ & ".xlsx", False, "A12:L65000"

这个过程工作正常,除了最终文件也被隐藏了,我希望它是一个普通文件。

谢谢

【问题讨论】:

【参考方案1】:

不适用于 CopyFile - 它是一种 FileSystemObject 方法,但有一个用于 File 对象的方法。我们将在副本完成后对其进行更新。

为简单起见,我已将您的文件输出路径替换为字符串变量。

originalFileName = "yourStartingFile"
copyFileName = "yourCopiedFile"

set fso.CopyFile OriginalFileName, CopyFileName
 --after copying, get file that was copied
 --set attributes value of file to 0. 0 = Normal, 2 = Hidden
f = fso.GetFile(copyFileName)
f.attributes = 0

更多详情请阅读。

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/file-object

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/attributes-property

【讨论】:

成功了!我必须将其更改为“Set F = fso.GetFile(copyFileName)”,否则会引发 Object Required 错误。【参考方案2】:

上面 Mike 的代码可以运行,但是我需要执行更多步骤,所以我想为遇到此问题的任何人提供完整的代码。

首先,为了使用 FileSystemObject,您需要在 VBA 编辑器中启用它,方法是转到 Tools->References 并启用“Microsoft Scripting Runtime”。然后,使用下面的代码,您可以复制一个隐藏文件并将新文件(通过 f.Attributes)设置为不隐藏:

' SourceFile is the full path name to my original file
' FileNAme is the full path name to my new file
Dim fso As Scripting.FileSystemObject
Dim f As File
Set fso = New Scripting.FileSystemObject
Call fso.CopyFile(SourceFile, FileName, False) ' Set to true to overwrite
Set f = fso.GetFile(FileName)
f.Attributes = 0

【讨论】:

以上是关于copyfile 的参数是不是会更改隐藏属性?的主要内容,如果未能解决你的问题,请参考以下文章

IOS、UIView、检测子视图隐藏状态变化

隐藏属性不能在动画块内更改

在 iOS 9 上更改隐藏属性时 UIStackView 不会动画

我可以创建一个运行代码隐藏方法的自定义属性吗?

Linux 20180412 隐藏权限lsattr_chattr等

显示/隐藏片段并以编程方式更改可见性属性