Вы можете использовать ADO для чтения и записи в Excel.
strFile = "C:\Docs\TheFile.xls"
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "MSDASQL"
.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & strFile & "; ReadOnly=False;"
.Open
End With
strSQL = "SELECT * FROM [Sheet4$]"
Set rs = CreateObject("ADODB.Recordset")
rs.Open strsql, cn, 2, 3
rs.Fields(1)="B"
rs.Fields("Type")="E"
rs.Update
Подробнее: http://support.microsoft.com/kb/257819
РЕДАКТИРОВАТЬ: Я вижу, что MSDASQL устарела Microsoft, так что это лучшие строки подключения.
scn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strFile & ";" & _
"Mode=ReadWrite;Extended Properties=""Excel 8.0;HDR=No"""
cn.Open scn
Если для HDR установлено значение Нет, можно перезаписать существующие заголовки, используя либо счет позиции с нуля, либо имя поля (столбца) по умолчанию, а это F1, F2 ... Fn, считая с первого столбца диапазон выбора. Если для HDR установлено значение yes, то имена полей (столбцов) являются первой строкой. Неверные имена будут установлены по умолчанию.
Mode - это enum, так что вы можете иметь, например, Mode=Share Deny None;
или Mode=Read|Share Deny Read|Share Deny Write;
.
Вы можете дополнительно включить в строку подключения:
MaxScanRows=0;
IMEX=0;
Persist Security Info=False;
Настройка MaxScanRows и IMEX будет очень полезна, только если вы вмешаетесь в реестр.
Возможные значения IMEX:
0 is Export mode
1 is Import mode
2 is Linked mode (full update capabilities)
- http://support.microsoft.com/kb/194124