Привет!
Из грида своей программы хочу перекидывать данные через буфер обмена в Excel. Схематично код выглядит так:
Dim sTotal As String
Dim sRow As String
sTotal = ""
For Each ir In grid.Rows
sRow = ""
For Each ic In grid.Columns
sRow = sRow + ToString(grid.Value(ir, ic)) + Chr(vbKeyTab)
Next ic
sTotal = sTotal + sRow + Chr(vbKeyReturn)
Next ir
Clipboard.SetText sTotal
Public Function ToString(ByVal v As Variant) As String
If IsDate(v) Then
ToString = Format(v, "dd/mm/yyyy")
Exit Function
End If
If IsNumeric(v) Then
ToString = Str(v)
Exit Function
End If
If TypeName(v) = "String" Then
ToString = v
Exit Function
End If
ToString = ""
Exit Function
End Function
Т.е. я каждое значение ячейки грида перевожу в строку и отделяю их друг от друга табуляцией
Проблемы:
При конвертировании вещественных чисел в строку (функция Str) в качестве разделителя используется точка. Русские версии Excel точку как разделитель не понимают и считают что это не число, а строка или дата.
Даты в свою очередь тоже не всегда воспринимаются датами.
Вопрос:
В буфер обмена передавать информацию о типе значений?
Какие способы решения этой проблемы существуют?
Спасибо