Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

能不能不自动打开EXCEL表

我心飞扬  发表于:2009-02-02 18:00:42  
复制

我想将查询导入指定的EXCL表,得到大肚鸭老兄帮助,帮我设计了如下模块,(对不起,我不能上传附件),

Option Compare Database

'---------------------------------------------------------------------------------------
' Procedure : QueryToExcel
' DateTime  : 2008-12-2 00:02
' Author      : Henry D. Sy
' Purpose    : strQueryName 查询名(表名)
'                   xlsName 工作簿名
'                   strShtName 工作表名
'                   需要引用Microsoft Excel 11.0 Object Library
'---------------------------------------------------------------------------------------
'
Sub QueryToExcel(ByVal strQueryName As String, ByVal xlsName As String, ByVal _
                                                                        strShtName As String)
' Send the Query results to Excel
' for further analysis

    Dim rs As ADODB.Recordset
    Dim objXL As Excel.Application
    Dim objWs As Excel.Workbook
    Dim fld As ADODB.Field
    Dim intCol As Integer
    Dim intRow As Integer

    Set rs = New ADODB.Recordset

    ' Get the desired data into a recordset
    rs.Open strQueryName, CurrentProject.Connection

    ' Launch Excel
    Set objXL = New Excel.Application
    ' Open a  worksheet
    '    Set objWs = objXL.Workbooks.Open(CurrentProject.Path & "\" & xlsName & _
         ".xls")
    If Mid(xlsName, 2, 2) <> ":\" Then xlsName = CurrentProject.Path & "\" & xlsName & ".xls"
   
    Set objWs = objXL.Workbooks.Open(xlsName)

    objWs.Worksheets(strShtName).Activate

    ' Copy the data
    ' First the field names
    For intCol = 0 To rs.Fields.Count - 1
        Set fld = rs.Fields(intCol)
        objWs.Worksheets(strShtName).Cells(1, intCol + 1) = fld.Name
    Next intCol
    ' Now the actual data
    intRow = 2
    Do Until rs.EOF
        For intCol = 0 To rs.Fields.Count - 1
            objWs.Worksheets(strShtName).Cells(intRow, intCol + 1) = _
            rs.Fields(intCol).Value
        Next intCol
        rs.MoveNext
        intRow = intRow + 1
    Loop

    ' Make the worksheet visible
    objXL.Visible = True
    rs.Close
    Set rs = Nothing
End Sub
我在窗体中设置按钮:

Private Sub Command12_Click()
QueryToExcel "[分界站1 查询]", "D:\查询结果.xls", "Sheet3"

End Sub

可是我发现使用Command12,虽然能将数据导入D:\查询结果.xls", "Sheet3,但也会自动打开D:\查询结果.xls", "Sheet3,

我希望自动运行D:\查询结果.xls", "Sheet1

不知道怎么改,谢谢!

点击下载此附件

 

Top
ACMAIN.CHM 发表于:2009-02-02 18:27:21

 

 

Private Sub Command12_Click()
 QueryToExcel "[分界站1 查询]", "D:\查询结果.xls", "Sheet3"
 Shell "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE ""D:\查询结果.xls"""
End Sub

 



我心飞扬 发表于:2009-02-02 18:56:16
好象,不行,还是自动打开D:\查询结果.xls的Sheet3表

ACMAIN.CHM 发表于:2009-02-02 19:38:28

那你想打开什么?

 

请准确描述你的要求。



我心飞扬 发表于:2009-02-02 21:35:34

我想将查询结果导入D:\查询结果.xls的第三个表,也就是[Sheet3],我在D:\查询结果.xls的第一个表也就是[Sheet1]内做了一个比较复杂的表,数据引用的是[Sheet3],所以我希望看到是[Sheet1].

现在我一使用Command12按钮,它自动打开的是[Sheet3],我想要么什么也别打开,要么自动打开[Sheet],



我心飞扬 发表于:2009-02-02 21:36:14

我想将查询结果导入D:\查询结果.xls的第三个表,也就是[Sheet3],我在D:\查询结果.xls的第一个表也就是[Sheet1]内做了一个比较复杂的表,数据引用的是[Sheet3],所以我希望看到是[Sheet1].

现在我一使用Command12按钮,它自动打开的是[Sheet3],我想要么什么也别打开,要么自动打开[Sheet1],



ACMAIN.CHM 发表于:2009-02-02 22:07:50

 

 

    ' Make the worksheet visible
    objWs.Worksheets("sheet1").Activate 'add this line to activate the sheet1
    objXL.Visible = True
    rs.Close
    Set rs = Nothing
End Sub



我心飞扬 发表于:2009-02-03 14:54:24
太好了,谢谢!,现在可以打开[sheet1],如果我什么表也不想打开,我只想导出数据,该怎么改,谢谢!

sosopain 发表于:2009-02-03 16:27:09

ACMAIN0CHM 的

 

 objXL.Visible = True

这句是表示显示excel

 

另外.还是要学会读代码.否则容易出问题..



ACMAIN.CHM 发表于:2009-02-03 20:39:15

太好了,谢谢!,现在可以打开[sheet1],如果我什么表也不想打开,我只想导出数据,该怎么改,谢谢!

 

   

    
    ' Make the worksheet visible
    'objWs.Worksheets("sheet1").Activate 'add this line to activate the sheet1
    'objXL.Visible = True
    objWs.Worksheets("sheet1").Save
    objXL.Quit 
    rs.Close
    Set rs = Nothing
End Sub


我心飞扬 发表于:2009-02-04 21:38:18
    Dim fld As ADODB.Field
    Dim intCol As Integer
    Dim intRow As Integer

    Set rs = New ADODB.Recordset

    ' Get the desired data into a recordset
    rs.Open strQueryName, CurrentProject.Connection     提示这一句有问题,是什么意思?

    ' Launch Excel
    Set objXL = New Excel.Application
    ' Open a  worksheet
    '    Set objWs = objXL.Workbooks.Open(CurrentProject.Path & "\" & xlsName & _
         ".xls")
    If Mid(xlsName, 2, 2) <> ":\" Then xlsName = CurrentProject.Path & "\" & xlsName & ".xls"
   
    Set objWs = objXL.Workbooks.Open(xlsName)



sosopain 发表于:2009-02-05 00:56:37

意思是系统在告诉你这句话无法执行,有问题,

 

。。。

 

检查你的 strQueryName



我心飞扬 发表于:2009-02-05 19:38:37

Dim fld As ADODB.Field
    Dim intCol As Integer
    Dim intRow As Integer
    Set rs = New ADODB.Recordset

    ' Get the desired data into a recordset
    rs.Open strQueryName, CurrentProject.Connection     提示这一句有问题,是什么意思?

    ' Launch Excel
    Set objXL = New Excel.Application
    ' Open a  worksheet
    '    Set objWs = objXL.Workbooks.Open(CurrentProject.Path & "\" & xlsName & _
         ".xls")
    If Mid(xlsName, 2, 2) <> ":\" Then xlsName = CurrentProject.Path & "\" & xlsName & ".xls"
   
    Set objWs = objXL.Workbooks.Open(xlsName)

我出现的提示框显示:
运行时错误‘-2147217900(80040e14)’:
无效的SQL语句;期待‘DELETE’、‘INSERT’、‘PROCEDURE’、‘SELECT’、或‘UPDATE’



我心飞扬 发表于:2009-02-06 20:59:57
怎么没人给点提示

我心飞扬 发表于:2009-02-06 21:31:37

最新上传了附件,请高手帮我改改!



竹笛 发表于:2009-02-06 23:23:25
总记录:15篇  页次:1/1 9 1 :