Access交流中心

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

请求解决输出数据到EXCEL时不能多次使用的问题【重谢】

大豆  发表于:2010-07-14 01:27:28  
复制

点击下载此附件

 

我这里使用的是ACCESS 2007。

 

问题点:

1.复制一个EXCEL文件。

2.打开该文件,复制3个SHEET。

第一次完全成功

 

3.将打开的EXCEL文件关闭

4.再次重复步骤1的过程,就会出错,必须退出ACCESS,

  而且,任务管理器中有时会出现一个未关闭的EXCEL进程,

  必须将该进程关闭,重新启动ACCESS文件,才能正常运行。

 

求解决方法,能够解决的可以协商价格,必不食言。

困扰我很长时间了,实在没有精力摸索了。

 

 

 

 

Top
杨晓峰 发表于:2010-07-14 15:25:39

点击下载此附件

 

有的没有安装ACCESS 2007,所以再上传一个包含ACCESS 2003的。



大豆 发表于:2010-07-17 01:41:29

估计这个问题是由Office本身的缺陷造成的。也就是说在一个EXCEL内用COPY命令反复拷贝SHEET,就会出现工作表驻留内存不能正常释放的问题。
如果用workbooks.add()就不会有这个问题,不过这样增加的是一个空的SHEET,如果是要拷贝模版,只能打开一个workbooks,让后将某个SHEET反复拷贝到另一个WORKBOOK中去,这样不会有问题。

 

Dim ExcelApp As Excel.Application
Dim wbSourceBook, wbTargetBook As Workbook
Dim wsSource, wsTarget As Worksheet
Dim xlsPath As String
   
xlsPath = CurrentProject.Path + "\TEST.xls"

Set ExcelApp = New Excel.Application
Set wbSourceBook = ExcelApp.Workbooks.Open(xlsPath)
Set wbTargetBook = ExcelApp.Workbooks.Add()

ExcelApp.Visible = True

'Application.SheetsInNewWorkbook = 1
'Application.ScreenUpdating = False
Set wsSource = wbSourceBook.Sheets("sheet1")


Dim i
For i = 1 To 3

wsSource.Copy After:=wbTargetBook.Sheets(wbTargetBook.Sheets.Count)
Set wsTarget = wbTargetBook.Sheets(wbTargetBook.Sheets.Count)


Next

wbTargetBook.Sheets("sheet1").Delete
wbTargetBook.Sheets("sheet2").Delete
wbTargetBook.Sheets("sheet3").Delete

'wb.Save
wbSourceBook.Close

Set wsSource = Nothing
Set wbSourceBook = Nothing
Set ExcelApp = Nothing


End Sub

Private Sub Command0_DblClick(Cancel As Integer)


    Dim wbSourceBook, wbTargetBook As Workbook
    Dim wsSource As Worksheet, wsTarget As Worksheet

    '(1) Create a new workbook and copy the template worksheet to this new book
    Application.SheetsInNewWorkbook = 1
    Set wbTargetBook = Workbooks.Add()
    Application.ScreenUpdating = False
    Set wsSource = ThisWorkbook.Sheets("MyTemplate")
    wsSource.Copy After:=wbTargetBook.Sheets(wbTargetBook.Sheets.Count)
    Set wsTarget = wbTargetBook.Sheets(wbTargetBook.Sheets.Count)

    '(2) Populate the worksheet of the new workbook.
    With wsTarget
        .Visible = xlSheetVisible
        .Activate
        .Range("A1") = "My Heading Text"
        .Range("A2") = Format$(Now, "dd-mm-yy")
        .Range("A3") = "My Other Data"
        ....
    End With

    '(3) Save the newly created workbook
    Application.DisplayAlerts = False
    wbTargetBook.SaveAs "C:\Temp\TargetWorkbookName.xlsx"
    '(4) and then close it
    wbTargetBook.Saved = True
    wbTargetBook.Close
   
    '(5) Launch a new instance of Excel and open the saved workbook
    Set appExcel = New Excel.Application
    appExcel.Workbooks.Open ("C:\Temp\TargetWorkbookName.xlsx")
    appExcel.Visible = True



总记录:2篇  页次:1/1 9 1 :