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