Excel中方法‘~’作用于对象‘~’失败解决方案?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel中方法‘~’作用于对象‘~’失败解决方案?相关的知识,希望对你有一定的参考价值。

就是这种情况

1、在“我的电脑”右键属性下,单击“高级”选项卡。
2、然后在“启动和故障恢复”区域中单击“设置”。
3、在“系统启动”区域中,单击“编辑”。
4、在“记事本”中单击“编辑”,然后单击“查找”。
5、在“查找内容”字段中键入 /noexecute,然后单击“查找下一个”。
6、查找到需要的内容后,在“查找”对话框中,单击“取消”。
7、将/noexecute=OptIn或者/noexecute=OptOut或者/noexecute=AlwaysOn
更改为/noexecute=AlwaysOff追问

这个是xp系统的,win7怎么解决呢?

参考技术A 如果是第一个range出错
i
=
sheets("模特衣架库存表").range("a65536").end(xlup).row
改成
i
=
sheets("模特衣架库存表").range("a65536").end(xlup).row
如果是第二个range出错
可能是range("a
&
i:c200")不对,试试range(cells(i,1),cells(200,3))
如果还不能解决,可能是没有激活到所需工作单,第二行添一句workbooks(数据所在xls).activate

c# 解决读取Excel混合文本类型,数据读取失败的解决方法

错误重现:

-----------------------------------------------------------------------

在导入Excel读取数据时,其中的一个字段保存的值有如下格式:"2011072014","20110Aad10","25124Adfa","例子asdfadf"  这样的 混合了 "字母/数字/中文"数据, 在Excel表格中的前 8条 或 前 8+ 条数据中的 这个列中的数据都是 由纯数字组成的,如"2011072012","2011072013","2011072014",到了大于8行的时候的该列的数据组成变成了 数字+中文 + 字母的组合,这样就会出现取不到该列值的问题

错误原因:

-----------------------------------------------------------------------

Excel读取数据列的格式 是按照每一列前8个数据的类型来判断读写时的类型的。比如前8个数据有3个是字幕,5个是数字,那么这一整列都是以数字型来读的,类型最多的那么不管第8条之后是什么类型,都当作这个类型来读取,那些字母都读不了。

 

使用Microsoft.Jet.OLEDB.4.0读取数据会出现当某一字段内分别含有文本和数字的混合数据时,某一类型的数据会产生丢失。

产生这种问题的根源与Excel ISAM[3](Indexed Sequential Access Method,即索引顺序存取方法)驱动 程序的限制有关,Excel ISAM 驱动程序通过检查前几行中实际值确定一个 Excel 列的类型,然后选择能够代表其样本中大部分值的数据类型 [4]。也即Excel ISAM查找某列前几行(默认情况下是8行),把占多的类型作为其处理类型。例如如果数字占多,那么其它含有字母等文本的数据项 就会置空;相反如果文本居多,纯数字的数据项就会被置空。
  现具体分析在第1节程序代码Extended Properties项中的HDR 和IMEX所代表的含义。HDR用来设置是否将Excel表中第一行作为字段名,“YES”代表是,“NO”代表不是即也为数据内容;IMEX是用来告诉 驱动程序使用Excel文件的模式,其值有0、1、2三种,分别代表导出、导入、混合模式。

当我们设置IMEX=1时将强制混合数据转换 为文本,但仅仅这种设置并不可靠,IMEX=1只确保在某列前8行数据至少有一个是文本项的时候才起作用,它只是把查找前8行数据中数据类型占优选择的行 为作了略微的改变。例如某列前8行数据全为纯数字,那么它仍然以数字类型作为该列的数据类型,随后行里的含有文本的数据仍然变空。
  另一个改进的措施是IMEX=1与注册表 值TypeGuessRows配合使用,TypeGuessRows 值决定了ISAM 驱动程序从前几条数据采样确定数据类型,默认为“8”。可以通过 修改“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel”下的该注册表值来更 改采样行数。但是这种改进还是没有根本上解决问题,即使我们把IMEX设为“1”, TypeGuessRows设得再大,例如1000,假设数据表有 1001行,某列前1000行全为纯数字,该列的第1001行又是一个文本,ISAM驱动的这种机制还是让这列的数据变成空。

在sql server用法

SELECT *
FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0‘,
‘Data Source="E:\数据.xls";
User ID=Admin;Password=;Extended properties=‘‘Excel 8.0;HDR=YES;IMEX=1‘‘‘)

 

在项目中加入如下代码,自动修改注册表!

RegistryKey reg_TypeGuessRows = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Jet\4.0\Engines\Excel");
reg_TypeGuessRows.SetValue("TypeGuessRows", 5000);

以上是关于Excel中方法‘~’作用于对象‘~’失败解决方案?的主要内容,如果未能解决你的问题,请参考以下文章

VBA 方法range作用于对象_worksheet时失败

VB连接MySql出现:方法'`'作用于对象'`'失败

从网页上导出EXCEl表格失败,怎么解决?

VB 打开Excel 提示 对象 “Open” 方法“workbook” 失败

Excel 和 Outlook 2016 中的“对象 '_mailItem' 的方法 'body' 失败”错误

excel编程问题