在VB.net里调用excel程序的时候的几个问题
如果调用了EXCEL,包括application,workbook,worksheet对象。调用结束后,是不是必须要有除了app.quit(),还要app=nothing...
如果调用了EXCEL,包括application, workbook, worksheet对象。调用结束后,是不是必须要有除了app.quit(),还要app=nothing, workbook=nothing, worksheet=nothing?否则是不是excel的进程总存在。
在其中设置单元格的类型(文本,数字等),如何直接设置一列,range()是否能实现?
用cells.num……local(忘记怎么拼写了)设置的时候各种格式都用什么来表示,有没有预定义的类型表示呢?
最后问问,是否是其他的所有操作都可以通过excel里面录制宏的方法,查看到各种设置的方法,是否都通用?
当不想用A,B,C……表示列,是否都可以用数字来表示? 展开
在其中设置单元格的类型(文本,数字等),如何直接设置一列,range()是否能实现?
用cells.num……local(忘记怎么拼写了)设置的时候各种格式都用什么来表示,有没有预定义的类型表示呢?
最后问问,是否是其他的所有操作都可以通过excel里面录制宏的方法,查看到各种设置的方法,是否都通用?
当不想用A,B,C……表示列,是否都可以用数字来表示? 展开
4个回答
展开全部
如果调用了EXCEL,包括application, workbook, worksheet对象。调用结束后,是不是必须要有除了app.quit(),还要app=nothing, workbook=nothing, worksheet=nothing?否则是不是excel的进程总存在。
------------------------------------------------------
不用肯定不行,用了未必都行,有的时候EXCEL。EXE死活都在运行
在其中设置单元格的类型(文本,数字等),如何直接设置一列,range()是否能实现?
------------------------------------------------------
全选一列,再设置单元格,录制宏看一下脚本
用cells.num……local(忘记怎么拼写了)设置的时候各种格式都用什么来表示,有没有预定义的类型表示呢?
----------------------------------------------
不知道
最后问问,是否是其他的所有操作都可以通过excel里面录制宏的方法,查看到各种设置的方法,是否都通用?
-----------------------------------
基本都可以实现
当不想用A,B,C……表示列,是否都可以用数字来表示?
--------------------------------------
可以,RANGE里的参数可以是数字
------------------------------------------------------
不用肯定不行,用了未必都行,有的时候EXCEL。EXE死活都在运行
在其中设置单元格的类型(文本,数字等),如何直接设置一列,range()是否能实现?
------------------------------------------------------
全选一列,再设置单元格,录制宏看一下脚本
用cells.num……local(忘记怎么拼写了)设置的时候各种格式都用什么来表示,有没有预定义的类型表示呢?
----------------------------------------------
不知道
最后问问,是否是其他的所有操作都可以通过excel里面录制宏的方法,查看到各种设置的方法,是否都通用?
-----------------------------------
基本都可以实现
当不想用A,B,C……表示列,是否都可以用数字来表示?
--------------------------------------
可以,RANGE里的参数可以是数字
展开全部
你上面的程序出错后会直接退出的。
解决方法是在主程序装载时检测系统是否安装了EXCEL.
代码如下:
Private Declare Function RegOpenKey Lib _
"advapi32" Alias "RegOpenKeyA" (ByVal hKey _
As Long, ByVal lpSubKey As String, _
phkResult As Long) As Long
Private Declare Function RegQueryValueEx _
Lib "advapi32" Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpValueName As _
String, lpReserved As Long, lpType As _
Long, lpData As Any, lpcbData As Long) _
As Long
Private Declare Function RegCloseKey& Lib _
"advapi32" (ByVal hKey&)
Private Const REG_SZ = 1
Private Const REG_EXPAND_SZ = 2
Private Const ERROR_SUCCESS = 0
Private Const HKEY_CLASSES_ROOT = &H80000000
Dim Msg As String
Public Function GetRegString(hKey As Long, _
strSubKey As String, strValueName As _
String) As String
Dim strSetting As String
Dim lngDataLen As Long
Dim lngRes As Long
If RegOpenKey(hKey, strSubKey, _
lngRes) = ERROR_SUCCESS Then
strSetting = Space(255)
lngDataLen = Len(strSetting)
If RegQueryValueEx(lngRes, _
strValueName, ByVal 0, _
REG_EXPAND_SZ, ByVal strSetting, _
lngDataLen) = ERROR_SUCCESS Then
If lngDataLen > 1 Then
GetRegString = Left(strSetting, lngDataLen - 1)
End If
End If
If RegCloseKey(lngRes) <> ERROR_SUCCESS Then
MsgBox "RegCloseKey Failed: " & _
strSubKey, vbCritical
End If
End If
End Function
Public Function FileExists(sFileName$) As Boolean
On Error Resume Next
FileExists = IIf(Dir(Trim(sFileName)) <> "", _
True, False)
End Function
Public Function IsAppPresent(strSubKey$, _
strValueName$) As Boolean
IsAppPresent = CBool(Len(GetRegString(HKEY_CLASSES_ROOT, _
strSubKey, strValueName)))
End Function
Private Sub Form_Load()
If IsAppPresent("Excel.Sheet\CurVer", "") = False Then
MsgBox "抱歉,您的系统中未安装Excel,本程序将不能正常运行!"
End If
End Sub
你补充问题中所说的现象是不会出现的。在主程序中只是个出现个提示。
解决方法是在主程序装载时检测系统是否安装了EXCEL.
代码如下:
Private Declare Function RegOpenKey Lib _
"advapi32" Alias "RegOpenKeyA" (ByVal hKey _
As Long, ByVal lpSubKey As String, _
phkResult As Long) As Long
Private Declare Function RegQueryValueEx _
Lib "advapi32" Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpValueName As _
String, lpReserved As Long, lpType As _
Long, lpData As Any, lpcbData As Long) _
As Long
Private Declare Function RegCloseKey& Lib _
"advapi32" (ByVal hKey&)
Private Const REG_SZ = 1
Private Const REG_EXPAND_SZ = 2
Private Const ERROR_SUCCESS = 0
Private Const HKEY_CLASSES_ROOT = &H80000000
Dim Msg As String
Public Function GetRegString(hKey As Long, _
strSubKey As String, strValueName As _
String) As String
Dim strSetting As String
Dim lngDataLen As Long
Dim lngRes As Long
If RegOpenKey(hKey, strSubKey, _
lngRes) = ERROR_SUCCESS Then
strSetting = Space(255)
lngDataLen = Len(strSetting)
If RegQueryValueEx(lngRes, _
strValueName, ByVal 0, _
REG_EXPAND_SZ, ByVal strSetting, _
lngDataLen) = ERROR_SUCCESS Then
If lngDataLen > 1 Then
GetRegString = Left(strSetting, lngDataLen - 1)
End If
End If
If RegCloseKey(lngRes) <> ERROR_SUCCESS Then
MsgBox "RegCloseKey Failed: " & _
strSubKey, vbCritical
End If
End If
End Function
Public Function FileExists(sFileName$) As Boolean
On Error Resume Next
FileExists = IIf(Dir(Trim(sFileName)) <> "", _
True, False)
End Function
Public Function IsAppPresent(strSubKey$, _
strValueName$) As Boolean
IsAppPresent = CBool(Len(GetRegString(HKEY_CLASSES_ROOT, _
strSubKey, strValueName)))
End Function
Private Sub Form_Load()
If IsAppPresent("Excel.Sheet\CurVer", "") = False Then
MsgBox "抱歉,您的系统中未安装Excel,本程序将不能正常运行!"
End If
End Sub
你补充问题中所说的现象是不会出现的。在主程序中只是个出现个提示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Office 的支持不是很好,经常会出错的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
vb.net没用过,vb6.0的话可以用getobject这种方法,你可以改改试试,看能不能用
Dim xlApp As Object
Set xlApp = GetObject(ExcelFileName).Application '获取Excel对象
Dim xlApp As Object
Set xlApp = GetObject(ExcelFileName).Application '获取Excel对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询