求助:用VB把数据导EXCEL中问题,(实时错误 '1004' 对象 'Range' 的方法 '_Global' 失败)

xiaoxijushi 2011-04-10 04:26:05
用VB把数据导入EXCEL问题,(实时错误 '1004' 对象 'Range' 的方法 '_Global' 失败)学习别人的代码遇到的问题代码如下:
Private Sub Command1_Click()

Dim iRow, iCol, iRowCount, iColCount As Integer
Dim sSource, sDestination, sRange As String
Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim ExcelSheet As Excel.Worksheet

sSource = App.Path & "\缴费表打印模板.xls"
sDestination = App.Path & "\temp.xls"

FileCopy sSource, sDestination
'将模板文件拷贝到一个临时文件
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False
'隐藏Excel应用程序窗口
ExcelApp.Caption = "缴费情况表打印"
Set ExcelBook = ExcelApp.Workbooks.Open(sDestination)
Set ExcelSheet = ExcelBook.Worksheets(1)
With Adodc1.Recordset
.MoveLast
If .RecordCount < 1 Then
MsgBox ("Error 没有记录!")
Exit Sub
End If
iRowCount = .RecordCount '记录总数
iColCount = .Fields.Count '字段总数
If iRowCount > 2 Then
ExcelSheet.Range("A6").Select
For iRow = iRowCount To 3 Step -1 '递减循环,step步长-1
'模板中已有两行
ExcelApp.Selection.EntireRow.Insert
Next
sRange = "E5:E" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("E5").Select
Selection.AutoFill Destination:=Range(sRange), Type:=x1FillDefault
sRange = "F5:F" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("F5").Select
Selection.AutoFill Destination:=Range(sRange), Type:=xlFillDefault

sRange = "G5:G" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("G5").Select
Selection.AutoFill Destination:=Range(sRange), Type:=xlFillDefault

End If
.MoveFirst
For iRow = 1 To iRowCount
For iCol = 1 To iColCount
ExcelSheet.Cells(iRow + 4, iCol).Value = .Fields(iCol - 1)
Next
If Not .EOF Then .MoveNext
Next
End With

ExcelApp.Visible = True

Set ExcelSheet = Nothing
Set ExcelBook = Nothing
Set ExcelApp = Nothing
MsgBox ("导出成功!")
End Sub
第一次运行时一切正常,但按CTRL+ALT+DEL,仍可在关闭程序窗口看见EXCEL,
第二次运行时出现:实时错误 '1004' 对象 'Range' 的方法 '_Global' 失败
调试时提示程序中红色语句有问题
该如何解决?谢谢。
...全文
943 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
喜雨漫天飞 2011-11-02
  • 打赏
  • 举报
回复
你可以设置切换断点调试,看看问题具体出现在哪个位置
diablota 2011-10-31
  • 打赏
  • 举报
回复
li163 有效,顶~~~~~~~~~~~~~
li163 2011-04-14
  • 打赏
  • 举报
回复
sRange = "E5:E" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("E5").Select
Selection.AutoFill Destination:=Range(sRange), Type:=x1FillDefault
********************

try


ExcelSheet.Range("E5").AutoFill Destination:=Range(sRange), Type:=x1FillDefault
Billy 2011-04-13
  • 打赏
  • 举报
回复
ExcelSheet.Range("E5").AutoFill ...
jieweibin 2011-04-13
  • 打赏
  • 举报
回复
sRange x1FillDefault 这两个常量赋一下值试试,具体值网上查一下
king06 2011-04-13
  • 打赏
  • 举报
回复
Selection.AutoFill Destination:=ExcelSheet.Range(sRange), Type:=x1FillDefault
clear_zero 2011-04-13
  • 打赏
  • 举报
回复
Selection.AutoFill Destination:=Range(sRange), Type:=xlFillDefault

你这个range是哪个sheet里面的?


Selection.AutoFill Destination:=ExcelSheet.Range(sRange), Type:=xlFillDefault
这样试试看
xiaoxijushi 2011-04-13
  • 打赏
  • 举报
回复
呵呵 我是半路出家 毕设? 好像离我已经很远了!
dbcontrols 2011-04-13
  • 打赏
  • 举报
回复
原来是一点都不会,全靠让别人给你调试好啊?我看还是死心吧
平时不努力,毕设干着急。
xiaoxijushi 2011-04-13
  • 打赏
  • 举报
回复
我又试了下 还是不行呀!唉。。。。。
jieweibin 2011-04-13
  • 打赏
  • 举报
回复

.....
ExcelBook.sheets(1).Activate '加这句激活一下就行,工作表1或2,自己根据实际而定,或输入 表名
ExcelSheet.Range("A6").Select
For iRow = iRowCount To 3 Step -1 '递减循环,step步长-1
'模板中已有两行
ExcelApp.Selection.EntireRow.Insert
Next
sRange = "E5:E" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("E5").Select
Selection.AutoFill Destination:=Range(sRange), Type:=x1FillDefault

.......
xiaoxijushi 2011-04-12
  • 打赏
  • 举报
回复
是的 还是那行报错!不知道怎么回事?
goosen 2011-04-11
  • 打赏
  • 举报
回复
还是那行吗?
xiaoxijushi 2011-04-11
  • 打赏
  • 举报
回复
谢谢6楼,我试了下,还会报同样的错误!
7楼可否说的详细些 呵呵 我不是很清楚 谢谢
bigbillybear 2011-04-11
  • 打赏
  • 举报
回复
建议用在EXCEL里使用宏录制自己制作代码,挺方便的
goosen 2011-04-10
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim iRow, iCol, iRowCount, iColCount As Integer
Dim sSource, sDestination, sRange As String
Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim ExcelSheet As Excel.Worksheet

sSource = App.Path & "\缴费表打印模板.xls"
sDestination = App.Path & "\temp.xls"

FileCopy sSource, sDestination
'将模板文件拷贝到一个临时文件
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False
'隐藏Excel应用程序窗口
ExcelApp.Caption = "缴费情况表打印"
Set ExcelBook = ExcelApp.Workbooks.Open(sDestination)
Set ExcelSheet = ExcelBook.Worksheets(1)
With Adodc1.Recordset
.MoveLast
If .RecordCount < 1 Then
MsgBox ("Error 没有记录!")
Exit Sub
End If
iRowCount = .RecordCount '记录总数
iColCount = .Fields.Count '字段总数
If iRowCount > 2 Then
ExcelSheet.Range("A6").Select
For iRow = iRowCount To 3 Step -1 '递减循环,step步长-1
'模板中已有两行
ExcelApp.Selection.EntireRow.Insert
Next
sRange = "E5:E" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("E5").Select
ExcelApp.Selection.AutoFill Destination:=Range(sRange), Type:=x1FillDefault
sRange = "F5:F" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("F5").Select
ExcelApp.Selection.AutoFill Destination:=Range(sRange), Type:=xlFillDefault

sRange = "G5:G" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("G5").Select
ExcelApp.Selection.AutoFill Destination:=Range(sRange), Type:=xlFillDefault

End If
.MoveFirst
For iRow = 1 To iRowCount
For iCol = 1 To iColCount
ExcelSheet.Cells(iRow + 4, iCol).Value = .Fields(iCol - 1)
Next
If Not .EOF Then .MoveNext
Next
End With

ExcelApp.Visible = True

Set ExcelSheet = Nothing
Set ExcelBook = Nothing
Set ExcelApp = Nothing
MsgBox ("导出成功!")
End Sub
goosen 2011-04-10
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim ExcelApp As New Excel.Application
Dim ExcelBook As New Excel.Workbook
Dim ExcelSheet As New Excel.Worksheet


Dim iRow, iCol, iRowCount, iColCount As Integer
Dim sSource, sDestination, sRange As String
Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim ExcelSheet As Excel.Worksheet

sSource = App.Path & "\缴费表打印模板.xls"
sDestination = App.Path & "\temp.xls"

FileCopy sSource, sDestination
'将模板文件拷贝到一个临时文件
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False
'隐藏Excel应用程序窗口
ExcelApp.Caption = "缴费情况表打印"
Set ExcelBook = ExcelApp.Workbooks.Open(sDestination)
Set ExcelSheet = ExcelBook.Worksheets(1)
With Adodc1.Recordset
.MoveLast
If .RecordCount < 1 Then
MsgBox ("Error 没有记录!")
Exit Sub
End If
iRowCount = .RecordCount '记录总数
iColCount = .Fields.Count '字段总数
If iRowCount > 2 Then
ExcelSheet.Range("A6").Select
For iRow = iRowCount To 3 Step -1 '递减循环,step步长-1
'模板中已有两行
ExcelApp.Selection.EntireRow.Insert
Next
sRange = "E5:E" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("E5").Select
ExcelApp.Selection.AutoFill Destination:=Range(sRange), Type:=x1FillDefault
sRange = "F5:F" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("F5").Select
ExcelApp.Selection.AutoFill Destination:=Range(sRange), Type:=xlFillDefault

sRange = "G5:G" & LTrim(Str(iRowCount + 4))
ExcelSheet.Range("G5").Select
ExcelApp.Selection.AutoFill Destination:=Range(sRange), Type:=xlFillDefault

End If
.MoveFirst
For iRow = 1 To iRowCount
For iCol = 1 To iColCount
ExcelSheet.Cells(iRow + 4, iCol).Value = .Fields(iCol - 1)
Next
If Not .EOF Then .MoveNext
Next
End With

ExcelApp.Visible = True

Set ExcelSheet = Nothing
Set ExcelBook = Nothing
Set ExcelApp = Nothing
MsgBox ("导出成功!")
End Sub
xiaoxijushi 2011-04-10
  • 打赏
  • 举报
回复
虽然可以多次单击,但是E5,F5,G5单元格的公式不能被复制到以后的单元格里了
dbcontrols 2011-04-10
  • 打赏
  • 举报
回复
把发红那行去掉试试
xiaoxijushi 2011-04-10
  • 打赏
  • 举报
回复
我试了下,还是不行!是不是还有别的地方需要修改呀??急!!
加载更多回复(1)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧