Dim xlApp As Object 'Excel 对象
Dim xlBook As Object '临时工作簿
Dim xlSheet As Object '临时工作表
Private Sub Command1_Click()
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("I:\2013\Book1.xlsx")
Set xlSheet = xlBook.Worksheets("BOM")
xlSheet.Copy
ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
ActiveWorkbook.Close True
xlBook.Close False
xlApp.ScreenUpdating = True
xlApp.DisplayAlerts = True
Set xlApp = Nothing
End Sub
我刚调试的时候发现执行第一次的时候没有问题,但是执行第二的时候会出错
还有就是在xlsheet.copy的时候怎么样不让xlapp显示并保存?现在每次Copy的时候就蹦出来。
13 个解决方案
#1
你是否偷懒了??
ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
ActiveWorkbook.Close True
改
xlApp.ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
xlApp.ActiveWorkbook.Close True
ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
ActiveWorkbook.Close True
改
xlApp.ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
xlApp.ActiveWorkbook.Close True
#2
原来是这样,我不懂,呵呵,还有一点:就是Copy的那一下还是会显示Excel界面,这样要怎么解决这一步
#3
其实你的代码里做了些处理, 可能没有更好的方法了,因为既然有COPY操作,也就是需要动用那个库,估计闪现那个界面是免不了的,但我的电脑几乎没有.
#4
另一种调用有什么不一样的吗?
Set xlBook = GetObject("I:\2013\Book1.xlsx")
Set xlSheet = xlBook.Sheets("BOM")
#5
不用Copy,用循环将其他不要的sheet表删除掉 ,然后另存为。
#6
'我用的是Excel 2003:
Option Explicit
Dim xlExcel As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Private Sub Command1_Click()
On Error GoTo Errhandler
CommonDialog1.Filter = "Excel(*.xls)|*.xls|AllFile(*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
Set xlExcel = New Excel.Application
xlExcel.Workbooks.Open CommonDialog1.FileName
Set xlBook = xlExcel.Workbooks(CommonDialog1.FileTitle)
Application.Visible = False
Application.DisplayAlerts = False '不提示保存
For Each xlSheet In xlBook.Worksheets
Set xlSheet = xlBook.Worksheets(xlSheet.Name)
If xlSheet.Name <> "Sheet1" Then xlSheet.Delete '只保留Sheet1表
Next
xlBook.Save
Errhandler:
xlBook.Close
xlExcel.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlExcel = Nothing
End Sub
#7
我 一般是用 GetObject , 差不多吧 ,最好添句红色语句
xlApp.Quit
Set xlApp = Nothing
xlApp.Quit
Set xlApp = Nothing
#8
这样有点不好的地方就是表中带有公式的情况,如果删除其他的表则出现很多错误
#9
是有这个问题.
那你在xlsheet.copy后面加上一行就OK了:Application.DisplayAlerts = False '不提示保存
#10
好像打开了其他Excel的时候有提示错误,在我之前的那段代码,今天在公司运行一下没有跳出Excel界面,昨天在家里一直会跳出,难道跟电脑配置有关?
#11
加上这行EXCEL不会显示界面: Application.Visible = False
#12
请问,在打开了其他的Excel的时候会提示对象没有定义,如果没有打开其他的Excel则不会出错
这个要怎么样解决?
#13
最终解决方案:
Private Sub Command2_Click()
Dim xlApp As Excel.Application
Dim MBook As Excel.Workbook
Dim MSheet As Excel.Worksheet
Dim BBook As Excel.Workbook
Dim BSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set MBook = xlApp.Workbooks.Open(路径1 & "表一.xlsx") '作为模板的表
Set BBook = xlApp.Workbooks.Open(路径2 & "表二.xlsx") '工作数据表
Set BSheet = BBook.Worksheets("Sheet1")
分类 = BSheet.Cells(1, 1)
Set MSheet = MBook.Worksheets(分类)
MSheet.Unprotect ("qwe") '取消模板的密码
BSheet.Range(BSheet.Cells(1, 9) & ":" & BSheet.Cells(1, 10)).Copy '从工作表复制数据到模板
MSheet.Range("A7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
MSheet.Range("A7").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
FilePath = App.Path & "\外协BOM" & ".xlsx"
MSheet.Copy
xlApp.ActiveWorkbook.SaveAs FileName:=FilePath '将模板的一个工作表另存为指定工作表
xlApp.ActiveWorkbook.PrintOut ActivePrinter:="Adobe PDF" '用PDF虚拟打印机打印
xlApp.ActiveWorkbook.Close True
BBook.Close False
MBook.Close False
xlApp.Visible = True
xlApp.ScreenUpdating = True
xlApp.DisplayAlerts = True
xlApp.Quit
End Sub
#1
你是否偷懒了??
ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
ActiveWorkbook.Close True
改
xlApp.ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
xlApp.ActiveWorkbook.Close True
ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
ActiveWorkbook.Close True
改
xlApp.ActiveWorkbook.SaveAs FileName:="I:\2013\哈" & ".xlsx"
xlApp.ActiveWorkbook.Close True
#2
原来是这样,我不懂,呵呵,还有一点:就是Copy的那一下还是会显示Excel界面,这样要怎么解决这一步
#3
其实你的代码里做了些处理, 可能没有更好的方法了,因为既然有COPY操作,也就是需要动用那个库,估计闪现那个界面是免不了的,但我的电脑几乎没有.
#4
另一种调用有什么不一样的吗?
Set xlBook = GetObject("I:\2013\Book1.xlsx")
Set xlSheet = xlBook.Sheets("BOM")
#5
不用Copy,用循环将其他不要的sheet表删除掉 ,然后另存为。
#6
'我用的是Excel 2003:
Option Explicit
Dim xlExcel As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Private Sub Command1_Click()
On Error GoTo Errhandler
CommonDialog1.Filter = "Excel(*.xls)|*.xls|AllFile(*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
Set xlExcel = New Excel.Application
xlExcel.Workbooks.Open CommonDialog1.FileName
Set xlBook = xlExcel.Workbooks(CommonDialog1.FileTitle)
Application.Visible = False
Application.DisplayAlerts = False '不提示保存
For Each xlSheet In xlBook.Worksheets
Set xlSheet = xlBook.Worksheets(xlSheet.Name)
If xlSheet.Name <> "Sheet1" Then xlSheet.Delete '只保留Sheet1表
Next
xlBook.Save
Errhandler:
xlBook.Close
xlExcel.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlExcel = Nothing
End Sub
#7
我 一般是用 GetObject , 差不多吧 ,最好添句红色语句
xlApp.Quit
Set xlApp = Nothing
xlApp.Quit
Set xlApp = Nothing
#8
这样有点不好的地方就是表中带有公式的情况,如果删除其他的表则出现很多错误
#9
是有这个问题.
那你在xlsheet.copy后面加上一行就OK了:Application.DisplayAlerts = False '不提示保存
#10
好像打开了其他Excel的时候有提示错误,在我之前的那段代码,今天在公司运行一下没有跳出Excel界面,昨天在家里一直会跳出,难道跟电脑配置有关?
#11
加上这行EXCEL不会显示界面: Application.Visible = False
#12
请问,在打开了其他的Excel的时候会提示对象没有定义,如果没有打开其他的Excel则不会出错
这个要怎么样解决?
#13
最终解决方案:
Private Sub Command2_Click()
Dim xlApp As Excel.Application
Dim MBook As Excel.Workbook
Dim MSheet As Excel.Worksheet
Dim BBook As Excel.Workbook
Dim BSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set MBook = xlApp.Workbooks.Open(路径1 & "表一.xlsx") '作为模板的表
Set BBook = xlApp.Workbooks.Open(路径2 & "表二.xlsx") '工作数据表
Set BSheet = BBook.Worksheets("Sheet1")
分类 = BSheet.Cells(1, 1)
Set MSheet = MBook.Worksheets(分类)
MSheet.Unprotect ("qwe") '取消模板的密码
BSheet.Range(BSheet.Cells(1, 9) & ":" & BSheet.Cells(1, 10)).Copy '从工作表复制数据到模板
MSheet.Range("A7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
MSheet.Range("A7").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
FilePath = App.Path & "\外协BOM" & ".xlsx"
MSheet.Copy
xlApp.ActiveWorkbook.SaveAs FileName:=FilePath '将模板的一个工作表另存为指定工作表
xlApp.ActiveWorkbook.PrintOut ActivePrinter:="Adobe PDF" '用PDF虚拟打印机打印
xlApp.ActiveWorkbook.Close True
BBook.Close False
MBook.Close False
xlApp.Visible = True
xlApp.ScreenUpdating = True
xlApp.DisplayAlerts = True
xlApp.Quit
End Sub