vba - Excel-Range XML uses two rows for header -
i use this function recordsets range
-objects without setting ado-connections.
function getrecordset(rng range) object dim xlxml object dim rst object set rst = createobject("adodb.recordset") set xlxml = createobject("msxml2.domdocument") xlxml.loadxml rng.value(xlrangevaluemspersistxml) rst.open xlxml set getrecordset = rst end function
i typically use one header row. expected results if data starts in row(1)
.
however, if there 1+ rows
above data, excel assumes have two header-rows , concatenates them blank.
therefore, recordset uses fieldnames ![underneath's header, mate myfield]
instead of ![myfield]
.
more technically speaking, problem rng.value(xlrangevaluemspersistxml)
returns concatenated 2 rows header , i'm unable set 1 row.
interested hear thoughts!
edit: workaround might replace leading blanks like
xlxml.loadxml replace(rng.value(xlrangevaluemspersistxml), "rs:name="" ", "rs:name=""")
or iterative
replace xml, "rs:name=""cell1 cell", "rs:name=""cell2")
for each datafield
i've been struggling same issue. way around i've found far insert row above header row , pass required range after that.
when filtering have append space @ beginning.
rs.filter = "[field_header] = " & strsome_text
becomes
rs.filter = "[ field_header] = " & strsome_text
as appears excel appending it. trying trim
:
xlxml.loadxml trim(rnginputrange.value(xlrangevaluemspersistxml))
with no joy. couple of headers have spaces using replace
makes things more ugly.
adding row , appending space beginning of field name means can filter on field names spaces header row on row 1, although bit dirty, enough workaround me now.
Comments
Post a Comment