注册 登录
编程论坛 VB6论坛

用VB向Excel前插入工作表没错但在后面插入工作表就出错(代码在贴内)

shi781203 发布于 2016-06-20 12:53, 2817 次点击
Option Explicit
Dim VBExcel As excel.Application
Dim VBExcel_Book As excel.Workbook
Dim VBExcel_sheet As excel.Worksheet
Dim MyFile As Object
Dim FileName As String

Private Sub Command1_Click()
Dim sht2285 As Boolean, i As Integer
sht2285 = False

For i = 1 To VBExcel.Sheets.Count
   If VBExcel.Sheets(i).Name = "插入" Then sht2285 = True
Next

If Not sht2285 Then
   【代码1能通过编译,但运行时出错,请高手指点指点】VBExcel.Sheets.Add after:=Sheets(Sheets.Count) '在工作表后加入一个工作表
   【代码2能够顺利运行】VBExcel.Sheets.Add    '在工作表前加入一个工作表
           VBExcel.ActiveSheet.Name = "插入"
End If
End Sub

Private Sub Command2_Click()    '修改指定工作表名按扭
    VBExcel_Book.Sheets("Sheet2").Name = "修改工作表名"
End Sub

Private Sub Form_Load()
    Set MyFile = CreateObject("Scripting.FileSystemObject")
    Set VBExcel = CreateObject("Excel.Application")
    FileName = App.Path & "\新创建.XLS"

If MyFile.FileExists(FileName) = False Then
    With VBExcel
        .Workbooks.Add
         With ActiveWorkbook
            .SaveAs FileName
            .Close
         End With
        .Quit
    End With
End If
   
    '设置Excel为不可见
    VBExcel.Visible = False
    Set VBExcel_Book = VBExcel.Workbooks.Open(FileName)

End Sub

Private Sub Form_Unload(Cancel As Integer)
'关闭Excel文件
Set VBExcel_sheet = Nothing
VBExcel.ActiveWorkbook.Close savechanges:=True '保存对EXCELL进行更改。
Set VBExcel_Book = Nothing
VBExcel.Quit
Set VBExcel = Nothing
End Sub
4 回复
#2
xiangyue05102016-06-20 14:40
按照你的说法报错应该是在这里(话说,那里出现问题贴哪段就好,不要贴太多了。太多了别人不乐意看的)
程序代码:
Private Sub Command1_Click()
Dim sht2285 As Boolean, i As Integer
sht2285 = False

For i = 1 To VBExcel.Sheets.Count
   If VBExcel.Sheets(i).Name = "插入" Then sht2285 = True
Next

If Not sht2285 Then
   【代码1能通过编译,但运行时出错,请高手指点指点】VBExcel.Sheets.Add after:=Sheets(Sheets.Count) '在工作表后加入一个工作表
   【代码2能够顺利运行】VBExcel.Sheets.Add    '在工作表前加入一个工作表
           VBExcel.ActiveSheet.Name = "插入"
End If
End Sub

我这里没有VB,我改成VBA的代码是可以正常运行的。而且根据你的代码是先后插再前插的,前插的表改名
难道VB里会不一样? 那只能期待有VB的替你测试了。
#3
shi7812032016-06-20 16:34
回复 2楼 xiangyue0510
你的回答好像没有答一样,代码是本人进行测试的时候所写的,一字不漏的粘贴过来的,只要把代码复制到VB中就能很快的进行测试!
#4
xiangyue05102016-06-20 17:34
不是说了么,VBA下代码没有问题。按理说VBA中的代码到VB基本不会有什么问题。而且百度上也有类似的代码可以用的。
也可能在VB下有问题,但是我没有装VB,因为WIN10不支持VB6,等有VB的人给你调试下。
另外,你自己也可以加中断好好的看一下,说不定自己就找到原因了。

别人给你测试了就可以了,至少证明那一小段代码本身没有问题。搞的好像别人欠你什么似的。反正我不会给你专门装个系统和VB的。
#5
lxlyhu2016-07-05 20:03
Sub test()
     Dim sht2285 As Boolean, i As Integer, VBExcel
     Set VBExcel = Application
     sht2285 = False
     For i = 1 To VBExcel.Sheets.Count
        If VBExcel.Sheets(i).Name = "插入" Then sht2285 = True
     Next
   
     If Not sht2285 Then
        VBExcel.Sheets.Add after:=Sheets(Sheets.Count) '在工作表后加入一个工作表——————代码没有问题,可以执行
        VBExcel.ActiveSheet.Name = "插入"
    End If
 End Sub

1