Avatar billede dougheffernan Nybegynder
09. maj 2006 - 09:22 Der er 3 kommentarer og
2 løsninger

Eksporter fra Excel til Access

Systemet består af et regneark, hvor brugeren indtaster forskellige værdier. Visse af disse celler har defineret et navn. Disse celler vil jeg gerne have indsat i en Access database (dvs. Access frontend - SQL Server backend), men kan ikke rigtig finde noget VBA kode som kan tage fat i et navngivet felt og pushe værdien til Access (SQL Server).
Avatar billede dougheffernan Nybegynder
09. maj 2006 - 09:34 #1
Lidt hen ad...
http://www.exceltip.com/st/Export_data_from_Excel_to_Access_(ADO)_using_VBA_in_Microsoft_Excel/425.html
Avatar billede dougheffernan Nybegynder
09. maj 2006 - 09:38 #2
Og selvfølgelig i samme ombæring, om man i VBA'en kan fortælle at connectionen til SQL Server tabellerne skal benytte Integrated Security...
Avatar billede mugs Novice
09. maj 2006 - 10:35 #3
Jeg kender ikke noget til SQL server Backend, men i ren Access kan du sammenkæde dit Excel ark til Access i menuen Filer > Hent eksterne data > Sammenkæd. Så bliver Excel arket indsat som en tabel i Access med kæde til Excel, så Access hele tiden er opdasteret. Om det er en option i dit tilfælde ved jeg ikke.
Avatar billede Slettet bruger
09. maj 2006 - 11:19 #4
Private Sub DataImport_Click()
Dim a As String
On Error GoTo err_dataimport
Me.DataImport.HyperlinkAddress = LaunchCD(Me)
Me.Tekst24 = Me.DataImport.HyperlinkAddress 'Dette tekstfelt viser stien
a = Me.Tekst24
DoCmd.TransferSpreadsheet acImport, 0, "tblTemp", a, True, ""
DoCmd.SetWarnings False

Her kan du så køre dine query's så du får flyttet data og slettet tblTemp.

DoCmd.SetWarnings True
MsgBox "Følgende data er importeret"
err_dataimport:
Exit Sub
End Sub

Tilhørende modul:

Option Compare Database
Option Explicit
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Function LaunchCD(strform As Form) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = strform.hwnd
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:\Billede"
OpenFile.lpstrTitle = "Vælg en fil og tryk på Åbn."
OpenFile.Flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "Manglende fil!", vbInformation, _
"Du har ikke valgt en fil fra Stifinderen."
Else
LaunchCD = Trim(OpenFile.lpstrFile)
End If
End Function

Håber det lykkedes!~)
Avatar billede dougheffernan Nybegynder
09. maj 2006 - 13:41 #5
Hmmm....det var en ordentlig smøre, spg!
Mugs, desværre, der kan være tale om flere regneark, så det SKAL pushes fra Excel til Access.

Jeg fandt dog selv på en løsning.

Sub EksporterDataTilSQLServer()

  Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
  Set cn = New ADODB.Connection
  cn.Open "Provider=sqloledb;Data Source=MyServer;Initial Catalog=MyDatabase;Integrated Security=SSPI"
  Set rs = New ADODB.Recordset
  rs.Open "MyTable", cn, adOpenKeyset, adLockOptimistic, adCmdTable
   
  With rs
    .AddNew
    .Fields("Dato") = Range("Dato").Value
    .Fields("Tidspunkt") = Range("Tidspunkt").Value
    .
    .
    .
    .
    .
    .Fields("Bemaerkninger") = Range("Bemaerkninger").Value
    .Update
  End With
 
  rs.Close
  Set rs = Nothing
  cn.Close
  Set cn = Nothing
End Sub

Så overføres de felter jeg vil have, no problem!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester