[VBA]读取文件常用的方法(ADODB.recordSet|ADODB.stream)(大文件读取&指定encode)

本文介绍了两种使用VBA结合ADODB组件处理大文件的方法:通过ADODB.Recordset快速搜索文件,以及使用ADODB.Stream进行读写操作。示例代码展示了如何设置指定编码,如UTF-8,以实现高效读取和写入大文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'#####serach big file (ADODB.Recordset) →it is fast#####

Sub searchLineFromText()

  Dim CN As ADODB.Connection
  Dim RS As ADODB.Recordset
  Dim rsList As Collection
  Dim tempStr As String
  Set CN = New ADODB.Connection
  Set rsList = New Collection
  CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=D:\work_forfree\20160313_for_vba_open_bigfile\;" & _
          "Extended Properties='text;HDR=NO;CharacterSet=65001'"
  'FMT=Delimited

  Set RS = CN.Execute("SELECT * FROM testfile.txt WHERE F1 LIKE '%ERROR%'")
  Do Until RS.EOF
    'Debug.Print RS.Fields(0); RS.Fields(1); RS.Fields(2)
    tempStr = RS.Fields(0)
    rsList.Add tempStr
    RS.MoveNext
  Loop
  Set RS = Nothing
  Set CN &
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14' [Microsoft][ODBC Microsoft Access 驱动程序] FROM 子句语法错误。 /index.asp,行 55;代码是:<%@LANGUAGE="VBSCRIPT"%> <!--#include file="Connections/shujuku.asp" --> <% Dim MM_editAction MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME")) If (Request.QueryString <> "") Then MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString) End If ' boolean to abort record edit Dim MM_abortEdit MM_abortEdit = false %> <% If (CStr(Request("MM_insert")) = "forml") Then If (Not MM_abortEdit) Then ' execute the insert Dim MM_editCmd Set MM_editCmd = Server.CreateObject ("ADODB.Command") MM_editCmd.ActiveConnection = MM_shujuku_STRING MM_editCmd.CommandText = "INSERT INTO [信息表] ([姓名], [性别], [手机号码], [邮箱]) VALUES (?, ?, ?, ?)" MM_editCmd.Prepared = true MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param1", 201, 1, -1, Request.Form("姓名")) ' adLongVarChar MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param2", 201, 1, -1, Request.Form("性别")) ' adLongVarChar MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param3", 201, 1, -1, Request.Form("手机号码")) ' adLongVarChar MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param4", 201, 1, -1, Request.Form("邮箱")) ' adLongVarChar MM_editCmd.Execute MM_editCmd.ActiveConnection.Close ' append the query string to the redirect URL Dim MM_editRedirectUrl MM_editRedirectUrl = "提示插入成功.html" If (Request.QueryString <> "") Then If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0) Then MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString Else MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString End If End If Response.Redirect(MM_editRedirectUrl) End If End If %> <% Dim Recordset1 Dim Recordset1_cmd Dim Recordset1_numRows Set Recordset1_cmd = Server.CreateObject ("ADODB.Command") Recordset1_cmd.ActiveConnection = MM_shujuku_STRING Recordset1_cmd.CommandText = "SELECT * FROM [信息表]" Recordset1_cmd.Prepared = true Set Recordset1 = Recordset1_cmd.Execute Recordset1_numRows = 0 %> <html> <head> <title>shouye</title> <body><form name="forml" action="<%=MM_editAction%>" method="POST" id="forml"> <p>姓名: <label for="textfield"></label> <input type="text" name="姓名" id="姓名"> </p> <p>性别: <input type="radio" name="性别" id="性别" value="男"> 男 <label for="radio"></label> <input type="radio" name="性别" id="性别" value="女"> 女 <label for="radio2"></label> </p> <p>手机号码: <label for="textfield3"></label> <input type="text" name="手机号码" id="手机号码"> </p> <p>邮箱: <label for="textfield4"></label> <input type="text" name="邮箱" id="邮箱"> </p> <p> <input type="submit" name="button" id="button" value="提交">          <a href="index.asp">取消</a></p> <p> </p> <p> </p> </form> <p>This is my first website<p> </body> </head> </html> <% Recordset1.Close() Set Recordset1 = Nothing %>
最新发布
05-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值