excel:Dim xDoc As DOMDocument处报错“用户定义类型未定义”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel:Dim xDoc As DOMDocument处报错“用户定义类型未定义”相关的知识,希望对你有一定的参考价值。

在旧电脑excel2007上可用,在另外一台2007上不能用,在office365上不能用。。。

1:读取。 1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序: Dim xlApp As Excel.Application '定义EXCEL类 Dim xlBook As Excel.Workbook '定义工件簿类 Dim xlsheet As Excel.Worksheet '定义工作表类 Private Sub Command1_Click() '打开EXCEL过程 If Dir("D:\temp\excel.bz") = "" Then '判断EXCEL是否打开 Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类 xlApp.Visible = True '设置EXCEL可见 Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls") '打开EXCEL工作簿 Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表 xlsheet.Activate '激活工作表 xlsheet.Cells(1, 1) = "abc" '给单元格1行驶列赋值 xlBook.RunAutoMacros (xlAutoOpen) 运行EXCEL中的启动宏 Else MsgBox ("EXCEL已打开") End If End Sub Private Sub Command2_Click() If Dir("D:\temp\excel.bz") > "" Then '由VB关闭EXCEL xlBook.RunAutoMacros (xlAutoClose) '执行EXCEL关闭宏 xlBook.Close (True) '关闭EXCEL工作簿 xlApp.Quit '关闭EXCEL End If Set xlApp = Nothing '释放EXCEL对象 End End Sub 2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为"bb.xls"的EXCEL文件。 3、在"bb.xls"中打开Visual Basic编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘: Sub auto_open() Open "d:\temp\excel.bz" For Output As #1 '写标志文件 Close #1 End Sub Sub auto_close() Kill "d:\temp\excel.bz" '删除标志文件 End Sub 4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。 2:写入。 Excel导入sql: '引用ADO(Microsoft ActiveX Data Objects 2.X Library) Private Sub Command2_Click() Dim cn As New ADODB.Connection cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=123;Initial Catalog=dataBase001;Data Source=mySERVICE" cn.CursorLocation = adUseClient cn.Open cn.Execute "select * into table4 from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=Yes;database=d:\temp\bb.xls;','select * from [Sheet1$]')" cn.Close Set cn=Nothing End Sub 参考技术A

    DOMDocument不是软件自带的类型,是自定义类型。

    你得先有这个类型,才能定义这个类型。

参考技术B DOMDocument改成DOMDocument60

excel怎样把空格里,自动添加上序列号

Sub 空格纵向编号()
Dim rng As Range, rng1 As Range, rng2 As Range, Num As Double, nc As Double, nr As Double, i As Double, j As Double
Set rng1 = Range("a1").End(xlToRight)
Set rng2 = Range(Range("a1"), rng1)
nc = rng2.Columns.Count
nr = ActiveSheet.UsedRange.Rows.Count
For i = 1 To nc
    If Cells(1, i) = 1 Then
        For j = 2 To nr
            If Cells(j, i) = "" And Application.WorksheetFunction.IsNumber(Cells(j - 1, i)) = True Then
                Cells(j, i) = Cells(j - 1, i) + 1
            Else
                If Cells(j, i) = "" And Application.WorksheetFunction.IsNumber(Cells(j - 1, i)) = False Then
                    Cells(j, i) = 1
                End If
            End If
        Next
    End If
Next
End Sub

欢迎追问,满意请采纳哦。

使用方法:按Alt+F11打开VBE界面,插入,模块,复制粘贴以上代码,关闭当前VBE界面,按Alt+F8,执行代码就OK啦。你把表格保存为xls或者xlsm格式,以后都只要Alt+F8一下就好了。

参考技术A 把问题说清楚些,表格中的所有空白单元格按1,2,3.......的序号一直添加下去?追问

追答

按Alt+F11,在工作表对应的窗口复制代码:
Sub 空格自动编号()
Dim RowNum As Double, ColNum As Double, Num As Double, Num1 As Double
RowNum = ActiveSheet.UsedRange.Rows.Count
ColNum = ActiveSheet.UsedRange.Columns.Count
For i = 2 To ColNum
Num = 0
Num1 = 1
If Cells(1, i) = 1 Then
Num = 1
Num1 = 2
End If
For j = Num1 To RowNum
If Cells(j, i).Value = "" Then
Num = Num + 1
Cells(j, i) = Num
Else
Cells(j, i) = Cells(j, i)
Num = 0
End If
Next j
Next i
End Sub
这是所有空白单元格都会自动编号的!!
你上传个excel文件的话,可以做的更好
回到工作表按ALt+F8 运行那个代码

参考技术B 没看懂B列是什么意思,是不是都是一千以内的数字呀?留邮箱或者QQ发表追问

我要的效果就是,B列里那样的,都是一千以内的数字

追答

我已经实现了,要表的话留QQ或者邮箱呀

———————分割线实现过程———————————

原表如下

新增辅助表

辅助表函数如下:

A2单元格公式:=IF(Sheet1!A2="","",Sheet1!A2)

B2单元格公式:=IF($A2="","",IFERROR(IF(Sheet1!B2="",Sheet4!B1+1,Sheet1!B2),1))

往下一拉,往右一拖就可以了。

形成原表的公式还复杂些

———————原表实现过程分割线———————————

原表B2单元格:=IF($A2="","",IF(ROUNDDOWN($A2/100,0)=B$1,TEXT(INT(ABS(B$1)),"[dbnum2]"),""))


原表L2单元格:=IF($A2="","",IF(MOD(ROUNDDOWN($A2/10,0),10)=L$1,TEXT(INT(ABS(L$1)),"[dbnum2]"),""))


原表V2单元格:=IF($A2="","",IF(MOD($A2,10)=V$1,TEXT(INT(ABS(V$1)),"[dbnum2]"),""))


三个单元格各种下拉右拉,复制粘贴第一行换成1就OK啦

以上是关于excel:Dim xDoc As DOMDocument处报错“用户定义类型未定义”的主要内容,如果未能解决你的问题,请参考以下文章

excel vba将公式转为数值

用VBA筛选日期区间

excel怎样把空格里,自动添加上序列号

在excel中使用VBA如何同一个工作簿下工作表内的数据移到另一个工作表指定位置请大神指点

EXCEL 文本框控件点击文字变很小,失去焦点后又回复正常,这怎么解决?

在excel中如何使用vba实现将sql的数据快速写入excel