Что-то похожее на этот пример должно сработать для вас.
Sub CopyDest3()
Dim shtImp As Worksheet
Dim shtSrc As Worksheet
Dim wbs As Workbook
Dim wbd As Workbook
Dim k As Integer
Set wbd = ThisWorkbook
Set wbs = Workbooks("Source_1.xlsx") 'presuming workbook is open
Set shtImp = wbd.Sheets("Dest")
k = 1
For k = 1 To 2
Set shtSrc = wbs.Sheets(k)
'From Source to Dest
Dim rngImpTitles As Range
Set rngImpTitles = shtImp.Rows(1)
Dim rngImpNames As Range
Set rngImpNames = shtImp.Columns(1)
Dim CopyColumn As Long
Dim CopyRow As Long
Dim foundRow As Long
Dim foundCol As Long
On Error Resume Next
'for each column in row 1 of import sheet
For CopyColumn = 2 To shtSrc.Cells(1, shtSrc.Columns.count).End(xlToLeft).Column
foundCol = rngImpTitles.Find(shtSrc.Cells(1, CopyColumn).Value2).Column
If Err.Number <> 0 Then
MsgBox "Not such a col title in importsheet for " & vbNewLine & _
shtSrc.Cells(1, CopyColumn)
Err.Clear
GoTo skip_title
End If
For CopyRow = 2 To shtSrc.Cells(shtSrc.Rows.count, 1).End(xlUp).Row
foundRow = rngImpNames.Find(shtSrc.Cells(CopyRow, 1)).Row
If Err.Number <> 0 Then
MsgBox "Not such a row name in importsheet for " & vbNewLine & _
shtSrc.Cells(CopyRow, 1)
Err.Clear
GoTo skip_row
End If
If Len(shtSrc.Cells(CopyRow, CopyColumn)) <> 0 Then
shtSrc.Cells(CopyRow, CopyColumn).Copy shtImp.Cells(foundRow, foundCol)
End If
skip_row:
Next CopyRow
skip_title:
Next CopyColumn
Next k
End Sub
Как альтернатива, можно просто определить простой класс NameValue и получить массив.
public class NameValue
{
public string Name{get;set;}
public string Value{get;set;}
}
[WebMethod]
public string UploadFile(byte[] incomingArray
, string FileName
, long FileLengthInBytes
, NameValue[] nvcMetaData)
Если на стороне клиента у Вас есть NameValueCollection, можно легко отобразиться на тип. Проверьте образец, который я отправил в этом вопросе
К сожалению, все структуры словаря библиотеки.NET не являются сериализуемыми. Я услышал хорошие вещи об этом коде - возможно, который поможет.
В основном то, что Вы будете делать с кодом, который я связал, создает новый тип, который имеет пользовательские методы сериализации, которые позволят Вам сериализировать словарь к XML. Если бы это - маршрут, Вы выбираете, было бы лучше скомпилировать этот тип в своем собственном блоке так, чтобы можно было совместно использовать тот блок с клиентом сервиса таким образом, это может привыкнуть в качестве параметра к сервисному методу.