Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过VBA访问excel,数字显示错误_Excel_Vba - Fatal编程技术网

通过VBA访问excel,数字显示错误

通过VBA访问excel,数字显示错误,excel,vba,Excel,Vba,我创建了一个小的VBA代码,用于将access中的数据导出到excel,导出时,所有数字格式在excel中显示为日期。我检查了Access数据库中的格式是否正确。你能告诉我怎样把它们显示成数字吗。所有编号的列都显示为日期,因此如果代码行检查所有列并显示正确/默认格式,那就太好了 参考我的代码 Private Sub Command4_Click() 'Defining database variable Dim dbnxair As DAO.Database 'Defining E

我创建了一个小的VBA代码,用于将access中的数据导出到excel,导出时,所有数字格式在excel中显示为日期。我检查了Access数据库中的格式是否正确。你能告诉我怎样把它们显示成数字吗。所有编号的列都显示为日期,因此如果代码行检查所有列并显示正确/默认格式,那就太好了

参考我的代码

Private Sub Command4_Click()


 'Defining database variable
  Dim dbnxair As DAO.Database
  'Defining Excel variable
   Dim excelnxair As Excel.Application
  'Defining workbook variable
  Dim wrkbooknxair As Excel.Workbook
 'Defining Worksheets
 Dim wrksheetnxair As Excel.Worksheet
'Defining recordset
 Dim recsetnxair As Recordset
'Defining Querydef
 Dim querynxair As QueryDef
 'Defining query as string
 Dim strSQL As String
 'Defining condition string
Dim strlistcondition As String


'Opening the database
 Set dbnxair = CurrentDb()

'Creating the Excel object
Set excelnxair = CreateObject("Excel.Application")
 'Opening the worksheet
  excelnxair.Visible = True

  'Creating a new workbook
 Set wrkbooknxair = excelnxair.Workbooks.Add
 wrkbooknxair.SaveAs "C:\Users\z003cnxt\Desktop\new1.xls"

  'Creating a new worksheet
 Set wrksheetnxair = excelnxair.Sheets(1)

 'Creating a query
Set querynxair = dbnxair.CreateQueryDef("")

 For Each varItem In Me!List2.ItemsSelected
   strlistcondition = strlistcondition & ",'" & Me!List2.ItemData(varItem) & "'"
Next varItem

strlistcondition = Right(strlistcondition, Len(strlistcondition) - 1)

strSQL = "SELECT * FROM [Std Table] WHERE ([Std Table].Country IN(" & strlistcondition    & "));"

'Adding Sql statement
 querynxair.SQL = strSQL



'Creating and opening the recordset
 Set recsetnxair = querynxair.OpenRecordset()

  'Copying data to excel sheet
  excelnxair.Cells.CopyFromRecordset recsetnxair


  'Adding field names in each columns
 For lvlcolumn = 0 To recsetnxair.Fields.Count - 1
   excelnxair.Cells(1, lvlcolumn + 1).Value = recsetnxair.Fields(lvlcolumn).Name
 Next

 wrksheetnxair.Cells.AutoFilter
wrksheetnxair.Cells.EntireColumn.AutoFit


  Set dbnxair = Nothing
 Set recsetnxair = Nothing
  Set querynxair = Nothing
 Set wrkbooknxair = Nothing
Set wrksheetnxair = Nothing
Set excelnxair = Nothing

For Each varItem In Me!List2.ItemsSelected
  Me!List2.Selected(varItem) = False
Next varItem


End Sub

我通过在我的代码中将所有numberformat设置为sFormat解决了我的问题。但我仍然没有找到dateformat的解决方案

问候,,
jeeva

为什么不直接使用
DoCmd.TransferSpreadsheet
?对于参数
TableName
,您可以使用
SELECT
查询。您能告诉我transferspreadsheet的确切语法吗?如果我与recordsetTransferSpreadsheet一起使用,则会出现错误transferspreadsheet对记录集不起作用。您可以使用而不是实现自己的代码。