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

Is there an argument for copyfile that will change the hidden property?

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

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

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

之后,它传输适当的 table 并保存文件。

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

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

谢谢

不适用于 CopyFile-which 是一个 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

上面 Mike 的代码有效,但是我还需要执行几个步骤,所以我想为遇到此问题的任何人提供完整的代码。

首先,为了使用 FileSystemObject,您需要在 VBA 编辑器中启用它,方法是转至工具 -> 参考并启用 "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