Question : Exporting Access table to Excel using VBA

Hi,

As the final command in a For-Next loop I want to export the table I've just made into Excel (and thus export a series of tables into the same Excel file as the loop prgresses).

However, I get the errors message

'run time error 7871 the table name you entered doesn't follow Microsoft Office Access object-naming rules'

How can I export a series of tables to Excel as part of my code?
Code Snippet:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
Sub SelectRainDays()
 
Dim mySQL As String
Dim mySQL2 As String
 
Dim d60 As Variant
d60 = "Between #1/1/1960# And #12/31/1969#"
Dim d70 As Variant
d70 = "Between #1/1/1970# And #12/31/1979#"
Dim d80 As Variant
d80 = "Between #1/1/1980# And #12/31/1989#"
Dim d90 As Variant
d90 = "Between #1/1/1990# And #12/31/1999#"
Dim d00 As Variant
d00 = "Between #1/1/2000# And #12/31/2009#"
 
Dim Dat As Variant
 
Dat = Array(d60, d70) 
 
For counter2 = LBound(Dat) To UBound(Dat)
 
        Dim x As Variant
         
        x = Array(0.2, 1)
        
        For counter = LBound(x) To UBound(x)
         
        'Selects all occasions where precip> x and dates are variable
        
            mySQL = "SELECT WADRAIN_distinct.src_id, WADRAIN_distinct.prcp_amt, WADRAIN_distinct.ob_date"
            mySQL = mySQL & " INTO [temp]"
            mySQL = mySQL & " FROM WADRAIN_distinct"
            mySQL = mySQL & " WHERE WADRAIN_distinct.prcp_amt >=" & x(counter)
            mySQL = mySQL & " AND WADRAIN_distinct.ob_date " & Dat(counter2)
        
        'Counts number of wet days
            mySQL2 = "SELECT [temp].src_id, Count([temp].prcp_amt)"
            mySQL2 = mySQL2 & " AS CountOfprcp_amt"
            mySQL2 = mySQL2 & " INTO [" & Replace(x(counter), ".", "_") & "_" & Replace(Dat(counter2), "Between ", "") & "]"
            mySQL2 = mySQL2 & " FROM temp"
            mySQL2 = mySQL2 & " GROUP BY [temp].src_id"
                      
           DoCmd.SetWarnings False
           DoCmd.RunSQL mySQL
           DoCmd.RunSQL mySQL2
        
            'This give the errors message 'run time error 7871 the table name you entered doesn't follow Microsoft Office Access object-naming rules'
           'DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, mySQL2, "C:\Documents and Settings\ferranti\My Documents\WetDays.xls", True
           
           'I don't think Output to works in this situations because it seems the table hasn't yet been created
           'DoCmd.OutputTo acTable, mySQL2, "MicrosoftExcelBiff8(*.xls)", "C:\Documents and Settings\ferranti\My Documents\WetDays", False, "", 0
        
        Next counter
   
Next counter2
 
   DoCmd.DeleteObject acTable, "temp"
   DoCmd.SetWarnings True
 
End Sub

Answer : Exporting Access table to Excel using VBA

dim varTableName as string

varTableName=Replace(x(counter), ".", "_") & "_" & Replace(Dat(counter2), "Between ", "")


use varTableName  in your export line
Random Solutions  
 
programming4us programming4us