/ / Preencher Registro de Acesso do Excel - excel, ms-access, access-vba, record

Preencher Registro de Acesso do Excel - excel, acesso ms, acesso-vba, registro

Estou criando um formulário no Access 2010 quecrie um registro para cada arquivo do Excel em uma pasta específica e preencha os campos com informações de várias células. A macro preenche uma matriz com todos os nomes de arquivo das pastas de trabalho do Excel (várias seqüências alfanuméricas), depois passa por esses arquivos e cria um novo registro para cada planilha do Excel.

Private Sub PopulateArray_Click()
Dim strListOfFiles() As String
Dim intCount As Integer
intCount = 0

Dim sFile As String
sFile = Dir$("P:ShareManufacturingPropellerFinalized" & "*.*", vbDirectory Or vbHidden Or vbSystem Or vbReadOnly Or vbArchive)
Do Until sFile = vbNullString
If sFile <> "." Then " relative path meaning this directory
If sFile <> ".." Then " relative path meaning parent directory
ReDim Preserve strListOfFiles(0 To (intCount + 1)) As String
strListOfFiles(intCount) = sFile
intCount = intCount + 1
End If
End If
sFile = Dir$()
Loop

Dim MyDB As DAO.Database
Dim MyRS As DAO.Recordset
Set MyDB = CurrentDb()
Set MyRS = MyDB.OpenRecordset("Record", dbOpenDynaset)

For Index = 0 To UBound(strListOfFiles)
MyRS.AddNew
MyRS![SerialNumber] = ""P:ShareManufacturingPropellerFinalized[" & strListOfFiles(Index) & "]Order Input"!B15"
MyRS.Update
Next
End Sub

Consegui que a maior parte funcionasse, mas a finalpasso me deixou preso. O problema aparece no bit "MyRS! [SerialNumber]" no loop For. No momento, tudo o que faz é imprimir o caminho de arquivo (correto) na célula, não o valor da própria célula.

Respostas:

0 para resposta № 1

Claro que sim, porque você não abriu a pasta de trabalho. Você precisa incluir uma referência à biblioteca de objetos do MS Excel (a última versão é 11.0 no meu computador com o MSO 2007).

Então você pode usar o Excel "namespace" para acessar objetos do Excel da seguinte forma:

Dim xlApp as Excel.Application
Dim xlWb as Excel.Workbook
Dim cell as Excel.Range

With xlApp
.Visible = true
Set xlWb = .Workbooks.Open(...)
End With

// And so on...

Editar: para incluir uma referência, você precisa digitar Alt + F11 para entrar no Editor do VBA e depois em Tools vai References e apenas verifique a biblioteca de objetos do Excel.