CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

关于excel自动删除数据的问题

楼主joewoo()2004-09-03 01:29:56 在 VB / 数据库(包含打印,安装,报表) 提问

现有excel表sheet1,表中有一个9X1700的矩阵,矩阵中的元素为1至5中的整数。我想把一行全是“5”的行自动找出并删除,请问有什么方法?  
  请把具体步骤写出,如果要用VBA,请把语句写出来。本人懂VB编程,但从未研究过VBA,不清楚两者间的不同。 问题点数:0、回复次数:7Top

1 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-09-03 05:46:44 得分 0

'用ADO   来处理   Excel   数据  
  '工程-〉引用Microsoft   ActiveX   Data   Objects   2.x   Library    
  Option   Explicit  
          Public   mCnnString   As   String  
   
  Private   Sub   Form_Load()  
          mCnnString   =   "Provider=Microsoft.Jet.OLEDB.4.0;"   &   "Data   Source=   "   &   App.Path   &   "\Book1.xls;"   &   "Extended   Properties=""Excel   8.0;HDR=Yes;"";"  
  End   Sub  
   
  Private   Sub   Command1_Click()  
          Dim   mCon   As   New   ADODB.Connection  
          Dim   mRst   As   New   ADODB.Recordset  
          Dim   mField(8)   As   String  
          Dim   i   As   Integer  
          mCon.CursorLocation   =   adUseClient  
          mCon.Open   mCnnString  
          mRst.Open   "Select   *   From   [Sheet1$]",   mCnnString,   adOpenKeyset,   adLockOptimistic,   adCmdText  
          For   i   =   0   To   mRst.Fields.Count   -   1  
                  mField(i)   =   mRst.Fields.Item(i).Name  
          Next   i  
          mCon.Execute   "Update   [Sheet1$]   Set   "   &   mField(0)   &   "   =   Null   ,"   &   mField(1)   &   "   =   Null   ,"   &   mField(2)   &   "   =   Null   ,"   &   mField(3)   &   "   =   Null   ,"   &   mField(4)   &   "   =   Null   ,"   &   mField(5)   &   "   =   Null   ,"   &   mField(6)   &   "   =   Null   ,"   &   mField(7)   &   "   =   Null   ,"   &   mField(8)   &   "   =   Null   "   &   "Where   "   &   mField(0)   &   "=   5   And   "   &   mField(1)   &   "=   5   And   "   &   mField(2)   &   "=   5   And   "   &   mField(3)   &   "=   5   And   "   &   mField(4)   &   "=   5   And   "   &   mField(5)   &   "=   5   And   "   &   mField(6)   &   "=   5   And   "   &   mField(7)   &   "=   5   And   "   &   mField(8)   &   "=   5   "  
          Set   mRst   =   Nothing  
          Set   mCon   =   Nothing  
  End   Sub  
  Top

2 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-09-03 05:46:59 得分 0

上面的方法是假定你Sheet1中只有9X1700矩阵的数据  
   
  这种方式不能把链接的Excel表中每行数据像记录一样整行删除,只能把符合条件(都是5)的行各字段赋值为空。  
   
  若果楼主想要彻底除去,我的想法是把excel导出到access中删除后再导会excel,不过此法很烦琐。  
  Top

3 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-09-05 05:45:02 得分 0

另一种方法,是可彻底删除的,引用Excel对象库,非Excel宏形式  
  Top

4 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-09-05 05:45:25 得分 0

'工程->引用Microsoft   Excel   x.0   Object   Library  
  Private   Sub   Command1_Click()  
  Dim   mFind,   FirstAddress  
  Dim   mCount   As   Integer  
  Dim   mRemRow  
  Dim   mSaveFind()   As   Long  
  Dim   mContRow   As   Long  
  Dim   i   As   Long  
   
  Dim   mRange   As   Range  
  Set   xlApp   =   CreateObject("Excel.Application")   '创建EXCEL应用类  
          xlApp.Visible   =   True   '设置EXCEL可见  
          Set   xlBook   =   xlApp.Workbooks.Open(App.Path   &   "\Book1.xls")   '打开EXCEL工作簿  
          Set   xlsheet   =   xlBook.Worksheets(1)   '打开EXCEL工作表  
          xlsheet.Activate   '激活工作表  
   
          xlsheet.Range("A2:I15").Select  
          With   xlsheet.Range("A2:I15")  
          Set   mFind   =   xlsheet.Cells.Find(What:=5,   After:=ActiveCell,   LookIn:=xlValues,   LookAt:=xlPart,   SearchOrder:=xlByRows,   SearchDirection:=xlNext,   MatchCase:=False,   MatchByte:=True)  
                  If   Not   mFind   Is   Nothing   Then  
                          mCount   =   1  
                          mContRow   =   0  
                          mRemRow   =   mFind.Row  
                          FirstAddress   =   mFind.Address  
                          Do  
                                  If   mRemRow   =   mFind.Row   And   mCount   <   8   Then  
                                          mCount   =   mCount   +   1  
                                  Else  
                                          If   mRemRow   =   mFind.Row   And   mCount   =   8   Then  
                                                  ReDim   Preserve   mSaveFind(mContRow)  
                                                  mSaveFind(mContRow)   =   mFind.Row  
                                                  mContRow   =   mContRow   +   1  
                                          Else  
                                                  If   mRemRow   <>   mFind.Row   Then  
                                                          mCount   =   1  
                                                          mRemRow   =   mFind.Row  
                                                  End   If  
                                          End   If  
                                  End   If  
                                  Set   mFind   =   .FindNext(mFind)  
                          Loop   While   mFind.Address   <>   FirstAddress  
                  End   If  
          End   With  
   
          If   mContRow   <>   0   Then  
                  Worksheets("sheet1").Activate  
                  Set   mRange   =   Range("A"   &   CStr(mSaveFind(0))   &   ":"   &   "I"   &   CStr(mSaveFind(0)))  
                  For   i   =   1   To   UBound(mSaveFind())  
                          Set   mRange   =   Union(mRange,   Range("A"   &   CStr(mSaveFind(i))   &   ":"   &   "I"   &   CStr(mSaveFind(i))))  
                  Next   i  
                  mRange.Select  
                  Selection.Delete   Shift:=xlUp  
          End   If  
          xlBook.Close   (True)   '关闭EXCEL工作簿  
            xlApp.Quit   '关闭EXCEL  
          Set   xlApp   =   Nothing   '释放EXCEL对象  
  End   Sub  
  Top

5 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-09-05 05:45:49 得分 0

UpTop

6 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-09-05 05:45:58 得分 0

UpTop

7 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-09-05 05:46:07 得分 0

UpTop

相关问题

  • 关于自动删除数据库
  • 自动删除表中数据,用什么办法最好?
  • 在删除移行数据后 如何重置自动编号
  • OleDb操作excel的问题:怎么用oledb删除excel中的数据,急啊!
  • 数据库删除???
  • 删除DataGrid数据
  • 数据的删除!!!!
  • 请教ORACLE数据库中删除表数据后,数据库表空间已使用会自动减少吗??
  • 高手,请问怎么用vb删除excel中的一行数据
  • 数据导入excel,但不能删除某一列或某一行

关键词

  • excel
  • microsoft
  • mfield
  • mfind
  • msavefind
  • mrange
  • mcnnstring
  • mrst
  • 删除
  • mcon

得分解答快速导航

  • 帖主:joewoo

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo