我一直在寻找一个解决方案并在这个问题上讨论我的大脑和论坛一段时间,我想我可能会问社区。请原谅解释的长度,我想尽可能详细地说明。
IT部门让我调查这个问题 - 我们在Windows 7中运行Access 2010的系统上使用Access宏,该系统旨在允许在报告中的多个列中输入并将.csv文件导出到同一目录作为.accdb文件运行。该宏是在运行Windows 7的计算机上的Access 2010中创建的。随着办公室开始更新计算机,IT部门意识到运行Windows 8.1和Access 2013的计算机无法有效运行宏。出现错误,没有导出文件。
在我自己的笔记本电脑上安装相同版本的Windows 8.1和Access 2013后,我诊断出宏在工具/参考中出现MISSING:AUTHZAX.DLL时出错,并且在执行此操作后运行宏后,导出该文件正确地存储在 我的 系统中。
但是,在运行Windows 8.1和Access 2013的新 office 计算机上使用相同的工作文件时,宏根本不会导出文件。没有错误,我无法在事件查看器中找到任何带有相应时间戳的内容。只是没有档案。
我尝试同时使用sendtocsv
和docmd.transfertext acexportdelim
无济于事。我也试过输入路径而不是使用命令" FPath"。
我应该尝试使用另一组命令吗?
或者,是否可能有网络设置或某些Windows安全设置可能会禁用或阻止此宏正确导出文件? 我对任何建议都持开放态度。
请注意,下面的代码是我家用笔记本电脑上的最终工作代码。评论报价中的代码已预留用于可选用途。
以下是导出部分的代码:
Private Sub Form_Open(Cancel As Integer)
Dim FName As String
Dim FPath As String
Dim OldFile As String
Dim TQName As String
Dim Dt As String
Dim TM As String
Dim token() As String
Me.LFinish.Visible = False
FPath = CurrentProject.Path
On Error Resume Next
'MkDir FPath
'Remove old csv file
' OldFile = FPath & "\690_OTPMNTIU.csv"
' If Len(Dir$(OldFile)) > 0 Then
' SetAttr OldFile, vbNormal
' Kill OldFile
' End If
TM = Time()
token() = Split(TM, ":", 3)
TM = token(0) & "_" & token(1) & "_" & Left(token(2), 2) & Right(token(2), 2)
Dt = Date
Dt = Right(Dt, 4) & Left(Dt, 2) & Mid(Dt, 4, 2)
TQName = "QExpPayment"
On Error Resume Next
FName = FPath & "\690_OTPMTIU_" & Dt & "_" & TM & ".csv"
'DoCmd.TransferText acExportDelim, "D:\Lily\Schema.ini", TQName, FName
SendToCSV (FName)
MsgBox ("Click OK to continue...")
Me.LFinish.Visible = True
End Sub
如果有帮助,下面是代码的其余部分(如上面VBE中的代码所示):
Option Compare Database
Option Explicit
Private Sub Form_Close()
Call Zap("TPayment")
End Sub
Private Sub Form_Load()
DoCmd.MoveSize 1.1 * 1440, 500, 5 * 1440, 4 * 1440
DoCmd.DeleteObject acTable, "zPayment"
DoCmd.CopyObject , "zPayment", acTable, "TPayment"
End Sub
如果您对尝试或提出问题有任何建议,请告知。