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 9 上更改隐藏属性时 UIStackView 不会动画