Imam potrebu jednom mesecno da dopunjujem tabelu u accessu excel fajlovima tj. svakog meseca dobijam izvestaje u excel-u i treba da ih prebacim u access tabelu. Ima li mogucnosti da to ne radim preko wizarda vec da klikom na dugme u formi te tabele dobijem zeljeni rezultat? Predpostavljam da je u pitanju kod koji treba ispisati ali kako nisam bas vest u pisanju istog molim za pomoc...
uvoz tabele iz excel-a u access tabelu putem dugmeta u formi
Zaključano
Zakačeno
Naravno da možeš, naravno moraš znati iz koje kolone i reda prepisuješ
Kod bi ti izgledoo ovako , a ti si ga prepravi
' upis u finitem iz excela
Dim dato2 As Database
Dim rek2 As Recordset
Set dato2 = CurrentDb
Dim sqlupit2 As String
sqlupit2 = "select * from finitem"
Set rek2 = dato2.OpenRecordset(sqlupit2)
brprep = 0
impdef = 3
sveukupno = 0
kolona = InputBox("Unesi broj kolone u kojoj se nalazi iznos (npr. kolona A=1, C=3) " & Chr(13) & "Konta će se prepisati iz prve kolone (A). Prepisivanje počinje od 1. završava u 1000. redu. Prepisivat će se vrijednosti onih konta koji imaju 6 ili više znakova", "Import iz EXCELA", impdef)
If IsNull(kolona) Or kolona = "" Then
MsgBox "Niste Izabrali"
Exit Sub
End If
kol = Val(kolona)
Set objexcel = CreateObject("Excel.Application")
objexcel.Workbooks.Open (lnkput) ' lnkput= "c:\podaci\tablicaexel.xls"
' ovo ovdje dolje ti je bitno, vrti 1000 redova u excelu i uzima podatke iz kolona, sad uzima samo onu jednu koju sam gore naveo,
' ovdje si rekao da uzme iz objexcel.Cells(j, 1).Value ---- (u excelu bi bilo A1 ) , .Cells(j,2 ).Value -- (A2) ... itd
For j = 1 To 1000
konto = objexcel.Cells(j, 1).Value
iznos = objexcel.Cells(j, kol).Value
If Len(Trim(konto)) = 6 Then
If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then
MsgBox "Niste odabrali dobru kolonu za prepis. Vrijednost u koloni = " + iznos
Exit Sub
End If
brprep = brprep + 1
rek2.AddNew
rek2.Fields("AccountID") = konto
rek2.Fields("Accountvalue") = iznos
rek2.Fields("Statementid") = 2
sveukupno = sveukupno + iznos
rek2.Update
End If
End If
Next j
rek2.Close
Set dato2 = Nothing
objexcel.Application.DisplayAlerts = False
objexcel.Application.Quit
objexcel.Application.DisplayAlerts = True
[Forms]![unos]![FinStatment].Requery
MsgBox "Podaci za Plan su prepisani, Prepisano: " + Trim(Str(brprep)) + " konta" & Chr(13) & "Sveukupno : " & Format$(sveukupno, "###,###,###,###.00")
Kod bi ti izgledoo ovako , a ti si ga prepravi
' upis u finitem iz excela
Dim dato2 As Database
Dim rek2 As Recordset
Set dato2 = CurrentDb
Dim sqlupit2 As String
sqlupit2 = "select * from finitem"
Set rek2 = dato2.OpenRecordset(sqlupit2)
brprep = 0
impdef = 3
sveukupno = 0
kolona = InputBox("Unesi broj kolone u kojoj se nalazi iznos (npr. kolona A=1, C=3) " & Chr(13) & "Konta će se prepisati iz prve kolone (A). Prepisivanje počinje od 1. završava u 1000. redu. Prepisivat će se vrijednosti onih konta koji imaju 6 ili više znakova", "Import iz EXCELA", impdef)
If IsNull(kolona) Or kolona = "" Then
MsgBox "Niste Izabrali"
Exit Sub
End If
kol = Val(kolona)
Set objexcel = CreateObject("Excel.Application")
objexcel.Workbooks.Open (lnkput) ' lnkput= "c:\podaci\tablicaexel.xls"
' ovo ovdje dolje ti je bitno, vrti 1000 redova u excelu i uzima podatke iz kolona, sad uzima samo onu jednu koju sam gore naveo,
' ovdje si rekao da uzme iz objexcel.Cells(j, 1).Value ---- (u excelu bi bilo A1 ) , .Cells(j,2 ).Value -- (A2) ... itd
For j = 1 To 1000
konto = objexcel.Cells(j, 1).Value
iznos = objexcel.Cells(j, kol).Value
If Len(Trim(konto)) = 6 Then
If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then
MsgBox "Niste odabrali dobru kolonu za prepis. Vrijednost u koloni = " + iznos
Exit Sub
End If
brprep = brprep + 1
rek2.AddNew
rek2.Fields("AccountID") = konto
rek2.Fields("Accountvalue") = iznos
rek2.Fields("Statementid") = 2
sveukupno = sveukupno + iznos
rek2.Update
End If
End If
Next j
rek2.Close
Set dato2 = Nothing
objexcel.Application.DisplayAlerts = False
objexcel.Application.Quit
objexcel.Application.DisplayAlerts = True
[Forms]![unos]![FinStatment].Requery
MsgBox "Podaci za Plan su prepisani, Prepisano: " + Trim(Str(brprep)) + " konta" & Chr(13) & "Sveukupno : " & Format$(sveukupno, "###,###,###,###.00")
izmenjeno 1 put, poslednji put vlade011 01.02.2012. u 15:45
Izmene poruke
- vlade01101.02.2012. u 15:45zapis iz teksta poruke
Hvala Trtko na odgovoru.
Izmenio sam potrebne stvari u kodu i access ga izvrsava ali mi uporno javlja da je izvrseno 0 upisa tj. ne upisuje nista u polja...Kod mi izgleda ovako:
Dim dato2 As Database
Dim rek2 As Recordset
Set dato2 = CurrentDb
Dim sqlupit2 As String
sqlupit2 = "select * from Table1"
Set rek2 = dato2.OpenRecordset(sqlupit2)
brprep = 0
impdef = 3
sveukupno = 0
kolona = InputBox("Unesi broj kolone u kojoj se nalazi iznos (npr. kolona A=1, C=3) " & Chr(13) & "Konta će se prepisati iz prve kolone (A). Prepisivanje počinje od 1. završava u 1000. redu. Prepisivat će se vrijednosti onih konta koji imaju 6 ili više znakova", "Import iz EXCELA", impdef)
If IsNull(kolona) Or kolona = "" Then
MsgBox "Niste Izabrali"
Exit Sub
End If
kol = Val(kolona)
Set objexcel = CreateObject("Excel.Application")
lnkput = "d:\Book112.xls"
objexcel.Workbooks.Open (lnkput)
For j = 1 To 1000
konto = objexcel.Cells(j, 1).Value
iznos = objexcel.Cells(j, kol).Value
If Len(Trim(konto)) = 6 Then
If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then
MsgBox "Niste odabrali dobru kolonu za prepis. Vrijednost u koloni = " + iznos
Exit Sub
End If
brprep = brprep + 1
rek2.AddNew
rek2.Fields("AccountID") = konto
rek2.Fields("Accountvalue") = iznos
rek2.Fields("Statementid") = 2
sveukupno = sveukupno + iznos
rek2.Update
End If
End If
Next j
rek2.Close
Set dato2 = Nothing
objexcel.Application.DisplayAlerts = False
objexcel.Application.Quit
objexcel.Application.DisplayAlerts = True
MsgBox "Podaci za Plan su prepisani, Prepisano: " + Trim(Str(brprep)) + " konta" & Chr(13) & "Sveukupno : " & Format$(sveukupno, "###,###,###,###.00")
End Sub
Gde gresim?
Hvala unapred.
Izmenio sam potrebne stvari u kodu i access ga izvrsava ali mi uporno javlja da je izvrseno 0 upisa tj. ne upisuje nista u polja...Kod mi izgleda ovako:
Dim dato2 As Database
Dim rek2 As Recordset
Set dato2 = CurrentDb
Dim sqlupit2 As String
sqlupit2 = "select * from Table1"
Set rek2 = dato2.OpenRecordset(sqlupit2)
brprep = 0
impdef = 3
sveukupno = 0
kolona = InputBox("Unesi broj kolone u kojoj se nalazi iznos (npr. kolona A=1, C=3) " & Chr(13) & "Konta će se prepisati iz prve kolone (A). Prepisivanje počinje od 1. završava u 1000. redu. Prepisivat će se vrijednosti onih konta koji imaju 6 ili više znakova", "Import iz EXCELA", impdef)
If IsNull(kolona) Or kolona = "" Then
MsgBox "Niste Izabrali"
Exit Sub
End If
kol = Val(kolona)
Set objexcel = CreateObject("Excel.Application")
lnkput = "d:\Book112.xls"
objexcel.Workbooks.Open (lnkput)
For j = 1 To 1000
konto = objexcel.Cells(j, 1).Value
iznos = objexcel.Cells(j, kol).Value
If Len(Trim(konto)) = 6 Then
If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then
MsgBox "Niste odabrali dobru kolonu za prepis. Vrijednost u koloni = " + iznos
Exit Sub
End If
brprep = brprep + 1
rek2.AddNew
rek2.Fields("AccountID") = konto
rek2.Fields("Accountvalue") = iznos
rek2.Fields("Statementid") = 2
sveukupno = sveukupno + iznos
rek2.Update
End If
End If
Next j
rek2.Close
Set dato2 = Nothing
objexcel.Application.DisplayAlerts = False
objexcel.Application.Quit
objexcel.Application.DisplayAlerts = True
MsgBox "Podaci za Plan su prepisani, Prepisano: " + Trim(Str(brprep)) + " konta" & Chr(13) & "Sveukupno : " & Format$(sveukupno, "###,###,###,###.00")
End Sub
Gde gresim?
Hvala unapred.
Pa ja sad ne znam kako izgleda tvoja excel tabelica, ali po svemu sudeći ,moraš još maknuti i ona moja ispitivanja,
If Len(Trim(konto)) = 6 Then
If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then
ja sam ovdje ispitivao određene stvari, jel se znalo da je netko pomaknuo kolonu pa je konto bilo u npr A2 a ne u A1
a znalo se desiti da i iznos nije bio u određenoj koloni.
kad bi zakacio xls fajl iz koga prepisuješ sve bi bilo lakše, naravno ako su ti podaci tajna ti ih prepravi.
Pozdrav
If Len(Trim(konto)) = 6 Then
If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then
ja sam ovdje ispitivao određene stvari, jel se znalo da je netko pomaknuo kolonu pa je konto bilo u npr A2 a ne u A1
a znalo se desiti da i iznos nije bio u određenoj koloni.
kad bi zakacio xls fajl iz koga prepisuješ sve bi bilo lakše, naravno ako su ti podaci tajna ti ih prepravi.
Pozdrav
Posto je baza velika (ima puno podataka) napravio sam na brzinu jednu malu tabelu sa formom i excel fajl koji treba uvesti. Svakog meseca dobijam izvestaj o prodaji odredjenih delova koje treba ubaciti. Nadam se da ce biti jasno o cemu se radi.
Puno hvala na trudu i ukazanom vremenu za resavanje problema.
Puno hvala na trudu i ukazanom vremenu za resavanje problema.
nazalost nemam instaliran access 2007 ( ili visi ), koristim access 2002
al probat cu to rijesiti u njemu
al probat cu to rijesiti u njemu
Dva pitanja:Da li je taj excel fajl uvek sa novim podacima ili se i on dopunjuje(znači ima i stare podatke i nove) i drugo pitanje da li tabelu treba da dopuniš sa novim podacima kompletnio ili se tu menja samo recimo cena ili količina ili rok isporuke a šifre ostaju iste?
Potpis
Jednog dana...
Tabela u excel-u je nova bez starih podataka. Ostaju samo kolone iste u koje se unose novi podaci. U access-u se tabela dopunjava novim podacima iz excel-a kompletno.