Mitt lilla projekt går ut på att hämta värde i en speciell cell i Excel (A4) och sedan ska detta klistras in i min Access-databas. Du kan inte ange vilken rad i databasen du vill stoppa in ett värde. Men kan jag inte göra såhär till exempel: Kanske något sånt här? Hmm... det enda jag menade var att du kan inte säga att på radnr x Fantastiskt. TACK så hemskt mycket för din hjälp.Nästan färdig kod - MEN...
Koden här nedan gör detta - men nu vill jag även bestämma VAR i databasen värdet från Excel ska klistras in (tex i kolumn ett som har rubriken "Om", och tredje raden.
Vet någon hur jag skriver för att dirigera detta?
Accessdatabasen heter: taEmotExcel.mdb och har tabellen FirstaBladet. I FirstaBladet finns en rubrik i en kolumn som heter "Om".
Min kod som är klar såhär långt ser ut såhär: (och ja, jag ÄR nybörjare-det syns säkert hihihi).
Private Sub ADOFromExcelToAccess()
' Exporterar data från det AKTIVA worksheet till en tabell i en
Access-databas som jag definierar
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' Anslut till Access-databasen. Efter Source anges exakt sökväg
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=C:\exacc\taEmotExcel.mdb;"
' Öppna ett recordset. OBS!Accesstabeller får ej innehålla å,ä,ö i namnet
Set rs = New ADODB.Recordset
rs.Open "FirstaBladet", cn, adOpenKeyset, adLockOptimistic, adCmdTable ' all
records in a table
' ange startrad i excel-dokumentet
r = 4
' repetera tills den första tomma cellen i kolumn A träffas.
' Hämtar värdet i Kolumn A och r. Kastar in detta värdet som specificerat
nedan
Do While Len(Range("A" & r).Formula) > 0
With rs
' skapa ett nytt record (.AddNew)
.AddNew
' lägg till värden till varje fält i record'et
.Fields("Om") = Range("A" & r).Value
' lägg till fler fält om nödvändigt...
' sparar det nya record'et
.Update
End With
' nästa rad...
r = r + 1
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End SubSv: Nästan färdig kod - MEN...
Det du kan göra är att urföra en UPDATE sats, där du anger att du vill
uppdatera kolumn x med värdet y för det antal parametrar som urskiljer
just den/de rader som ska uppdateras.
/EmmaHallå Emma....... EMMA
Om jag har två kolumner i Access. Den ena heter Namn och den andra heter AsBuilt.
En SQL-fråga som först letar upp ettNamn och när det är hittat så skrivs värdet in på samma rad fast i Kolumnen AsBuilt.
Det är SÅ jag vill göra.Sv: Hallå Emma....... EMMA
<code>
Function SQLText(Value as variant) as String
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
'Exporterar data från det AKTIVA worksheet
'till en tabell i en Access-databas som jag definierar
Private Sub ADOFromExcelToAccess()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim MittNamn As String
Dim r AS long
'Ange första rad i excel-dokumentet
r = 4
'repetera tills den första tomma cellen i kolumn A träffas.
'Hämtar värdet i Kolumn A och r. Kastar in detta värdet som specificerat nedan
Do Until Len(Range("A" & r).Formula)
r = r + 1
Loop
'Ange rad i Databas
MittNamn = "Andreas"
'Anslut till Access-databasen. Efter Source anges exakt sökväg
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\exacc\taEmotExcel.mdb;"
'Öppna ett recordset.
'OBS! Accesstabeller får ej innehålla å,ä,ö i namnet
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM FirstaBladet WHERE Namn=" & SQLText(MittNamn), cn, adOpenKeyset, adLockOptimistic
If rs.EOF Then
'Skapa ett nytt record (.AddNew)
rs.AddNew
rs("Namn") = MittNamn
End If
'lägg till värden till varje fält i record'et
rs("AsBuilt") = Range("A" & r).Value
'sparar det nya record'et
rs.Update
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
</code>Sv: Hallå Emma....... EMMA
stoppa in värde y.
Om du hade läst på om UPDATE satsen hade du sett att den gör exakt
det du vill...
/EmmaTill Andreas H
Nu funkar allt precis så som jag tänkt mig.
Ha en fin dag!
Ethár