问题描述
最重要的是,代码是用Word VBA编辑器编写的,并且是从Word .docm文件中获取的。
从这个Word .docm文件中,我正在连接到用作客户端数据库的Excel文件(使用ADODB连接),并且正在从该文件(工作表名称=“数据”)中读取整个工作表到动态数组,稍后将进行搜索。
Option Explicit
Private Sub UseADOSelect()
Dim connection As New ADODB.connection
Dim recSet As New ADODB.Recordset 'All the results of the query are placed in a record set;
Dim exclapp As Excel.Application
Dim exclWorkbk As Excel.Workbook
Dim mySheet As Excel.Worksheet
Dim wordDoc As Word.Document
Dim cntCntrl As ContentControl
Dim strPESELfromWord As String
Dim strQuery As String
Dim intWiersz As Integer
Dim intRemainder As Integer
Dim intRow As Integer
Dim arraySize As Long 'prevIoUsly was integer = -32,768 to 32,767
Dim strSexDigit As String
Dim strArray() As String 'Dim strArray() As Long 'Dim strArray() As String
Dim i As Long
Set wordDoc = Word.ActiveDocument
Debug.Print wordDoc
'Set mySheet = exclapp.ActiveWorkbook.Sheets("sample")
'Debug.Print mySheet.Name
strPESELfromWord = Trim(Selection.Text)
Debug.Print strPESELfromWord
Word.Application.Visible = True
strSexDigit = Mid(strPESELfromWord,10,1) 'Extract 10th digit from PESEL number
Debug.Print strSexDigit
intRemainder = strSexDigit Mod 2
Debug.Print intRemainder
connection.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source = X:\Roesler\Excel\FW 1\custdb.xlsm;" & _
"Extended Properties=""Excel 12.0 Macro;HDR=YES;IMEX=1;"";" 'Now it works
'strQuery = "SELECT * From [Simple$]" '[Simple$] is the table name; in this case it's the sheet name;
strQuery = "SELECT * From [data$]" '[data$] is the table name; in this case it's the sheet name;
当从Excel文件中读取记录集时,我需要将其写入VBA数组中。
我遇到的问题是:当我遍历记录集中的值时,在将此记录集加载到Word VBA编辑器中的数组时,运行时错误94-无效使用从记录集中将第一个Null值绘制到数组中时,Null会弹出。
'recSet.Open strQuery,connection
recSet.Open strQuery,connection,adOpenStatic ' Or specify adOpenStatic in the Open method directly.
Debug.Print " RecordCount = " & recSet.RecordCount 'https://www.geeksengine.com/article/recordcount-ado-recordset-vba.html
Debug.Print recSet.EOF 'Returns a value that indicates whether the current record position is after the last record in a Recordset object.
'At the moment the value is "False".
Debug.Print recSet.BOF 'The BOF property returns a Boolean value that indicates if the current position in a Recordset object is just before the first record.
'If True,you are at BOF. If False,you are at or beyond the first record,but still inside the Recordset.
If recSet.BOF = True Then
recSet.MoveFirst
End If
'recSet.Open strQuery,connection
'recSet.CursorType = adOpenStatic
Debug.Print " RecordCount = " & recSet.RecordCount 'https://www.geeksengine.com/article/recordcount-ado-recordset-vba.html
arraySize = recSet.RecordCount 'I wanted to assign total number of records to arraySize variable to use it later in ReDim statement.
Debug.Print arraySize
ReDim strArray(1 To arraySize)
For i = 1 To arraySize
strArray(i) = recSet(i) 'Here the code crashes when the first Null value is encountered,during loading data into the array.
Next i
intRow = 2
' For Each cntCntrl In ActiveDocument.ContentControls
' If cntCntrl.Title = "02KlientPelneImie" Then cntCntrl.Range.Text = objExcel.Sheets("data").Cells(intWiersz,4)
' If cntCntrl.Title = "02KlientNrDowodu" Then cntCntrl.Range.Text = objExcel.Sheets("data").Cells(intWiersz,9)
' Next
我想怎么办。 我通过与EXCEL的ADODB连接连接的Excel工作表中有空单元格。我对此无能为力。
当我内部具有Null值时,如何将工作表加载到记录集中,然后将此记录集加载到Word VBA中的数组中?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)