ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] excel vba (´¡¤J¸ê®Æ)insert ¶i sqlite ½wºC°ÝÃD

[µo°Ý] excel vba (´¡¤J¸ê®Æ)insert ¶i sqlite ½wºC°ÝÃD

¥»©«³Ì«á¥Ñ joey0415 ©ó 2013-8-6 22:21 ½s¿è

¤§«e´¿¸g½m²ßinsert§â¸ê®Æ±qsheet1¤¤¡A©ñ¶isqlite¸ê®Æªí¤¤¡A
«á¨Ó¦bsheet1¤¤¥[¤J¦h¦æ¸ê®Æ¡A¤]·Q±N¼Æ¤Q±qªº¸ê®Æ³z¹Lfor ¦^°é©ñ¶i¸ê®Æ¸ê®Æªí¤¤
ÁöµM«ö¤U¥h¤]¥i¥H°õ¦æ¡A¦ý¬O³t«×ºC¨ìµLªk·Q¹³¡A¤~500µ§ªº¸ê®Æ´N­n¼Æ¤Q¬í¤§¦h
joey.zip (440 Bytes)
§Úªºªí(home)


¤Wºô¬d¹L¸ê®Æ¡Aµo²{sqlite­Y­n¤j¶qinsert®É¡A¥i¥H³z¹Lbegin »Pcommitªº¤èªk¡A¥ý¥´¶}(begin)¡A¦A¤@°_sql»yªk¡A³Ì«á¤@¦¸¼g¤J(commit)
¤U­±¬O¤p§Ìºô¸ô¤W¬d¨ìªºvba»yªk¡A¬Ý¼Ë¤l¬O¹ïªº¡A¤£¹LÁÙ¬O·|³ø¿ù¡A³Ì«á¤@­Ó¬O¤p§Ì¥i¥H¦¨¥\¡A¦ý¬O³t«×ºCªº¤èªk¡A¤£ª¾¹D¥i¥HÀ°¦£­×§ï¦¨§Öªº¤èªk¶Ü¡H





ÁÂÁÂ

ºô¸ô¤Wªº»yªk(¦³begin    commit)
http://www.mrexcel.com/forum/excel-questions/435486-sqlite-excel-visual-basic-applications-4.html
  1. sub Batch_Insert_Statement
  2. For i = 1 To 100000
  3. xsql = xsql & "Insert into tablename (ProductCode, UnitsSold, DateSold) values '" & Trim(MyRecordset!ProductCode) & "', '" & MyRecordset!UnitsSold &"', '" &
  4. Format(MyRecordset!DateSold, "YYYY-MM-DD HH:MM:SS") & "'; "
  5. Next i
  6. do_sql (xsql)
  7. end sub

  8. ' Insert records inside a SQLite transaction - Open DB - begin - batch - Commit
  9. Sub do_sql(xsql As String)
  10. Set filecnn = New_c.Connection("C:\PathToYour\Database.sql")
  11. filecnn.Execute "Begin"
  12. filecnn.Execute xsql
  13. filecnn.Execute "Commit"
  14. Set filecnn = Nothing
  15. End Sub
½Æ»s¥N½X
§Úªº°µªk¡A¦ý³t«×ºC
  1. [b]Sub vba_sqlite_inser§å¦¸¦¨¥\[/b]()

  2.     Dim x, rcnt, i
  3.     Dim sql_command As String
  4.     Dim connection_string As String
  5.    
  6.     Worksheets(1).Activate
  7.     rcnt = Range("a1").CurrentRegion.Rows.Count
  8.     i = 1
  9.     For i = 1 To rcnt  
  10.         Set x = CreateObject("adodb.recordset")
  11. '        sql_command = "insert into home(name, age) values('mary','50') "
  12.         aa = "insert into home(name, age) values('" & Cells(i, 1) & "','" & Cells(i, 2) & "' & "')"
  13.    
  14.         sql_command = aa
  15.         connection_string = ("Driver={SQLite3 ODBC Driver};database=D:\joey.sqlite")
  16.         x.Open sql_command, connection_string
  17.         Set x = Nothing
  18.     Next
  19. End Sub
½Æ»s¥N½X

20130806-173.gif (53.24 KB)

20130806-173.gif

¦^´_ 21# PKKO

ÁÂÁÂp¤j«üÂI¡A¤U¬P´Á¥X®t¤j³°®É¡A¨Ó¸Õ¶]~~¨ì®É¦b¦^³ø

¤£¹L±z»¡ªº­×§ï²Ä¤GÂI¡A¤j»\¬Ù8¬í§a¡A³o¼ËÁÙ¬O­n70¬í¡A­Ó¤Hıªº¨S¹D²z@@

TOP

¦^´_ 20# koshi0413


  §Ú¨S¦³«Ü²`¤Jªº¬Ý±z²Ó¸`ªºµ{¦¡½X
¦ý¥Ø«e¥u¦³¬Ý¨ì¨â­Ó¦a¤è¥i¥Hµy·L§Ö¤@ÂI,§A¥i¥H¸Õ¸Õ¬Ý³o­Ó³¡¤À

²Ä¤@:za=RNG(J,I)  =>³o­Ó³¡¤À¥i¥H¤£¥Î,¥u±µ§â©Ò¦³ªºza¨ú¥N¬°RNG(J,I)§Y¥i=>¦ý³o­Ó¦a¤è¼vÅT¤£¤j
²Ä¤G:±zªº°j°é¤§¤º¨Ï¥Î¤F¤j¶qªºSPLIT,À³¸Ó¦b°j°é¶}©lªº®É­Ôª½±µ±NAR=Split(za, "/")
µM«áIF AR(0)=1 OR LEN(AR(1))=1 THEN
³o¼Ëªº¸Üµ{¦¡´N¤£¥Î¨C¤@¦æ³£°õ¦æ¤@¦¸©î¶}ªº°Ê§@
¥H¤W±z¸Õ¸Õ¬Ý
PKKO

TOP

¦^´_ 18# PKKO

P¤j¡A«u§r§r¡A©êºp«¨
À³¸Ó¤S¸Õ¿ù¤F¡A¤@¼Ë80¬í@@

§ï¦¨¤U­±³o¼Ë¬O72¬í¡A©Ò¥H if ¤º¤é´ÁÂà´«»Ý 8¬í
myCols = 123
myRows = 7923
        Rng = [A3].Resize(myRows, myCols).Value  
            For j = 1 To (myRows - 2)
                zc = ""
                    For i = 1 To myCols
                        za = Rng(j, i)
                        zc = zc & "'" & za & "',"
                    Next i
                zc = Left(zc, Len(zc) - 1)
                rez = "(" & zc & ")"
                ret = ret & rez & ","
                DoEvents
            Next j
  1.         
  2. Application.ScreenUpdating = False
  3. StartTime = Timer
  4.         myCols = Range("A2").CurrentRegion.Columns.Count '­pºâ©Ò¦³ªº¦C
  5.         myRows = Range("A1").CurrentRegion.Rows.Count    '­pºâ©Ò¦³ªº¦æ
  6.         Rng = [A3].Resize(myRows, myCols).Value         
  7.             For j = 1 To (myRows - 2)
  8.                 zc = ""
  9.                     For i = 1 To myCols
  10.                         za = Rng(j, i)
  11.                             If za = "" Then 'ªÅ®æÂà´«
  12.                                 za = 0
  13.                                 
  14.                             ElseIf i = 2 Then '¤é´ÁÂà´«
  15.                                 If (Len(Split(za, "/")(1)) = 1) And (Len(Split(za, "/")(2)) = 1) Then
  16.                                     za = Split(za, "/")(0) & "-0" & Split(za, "/")(1) & "-0" & Split(za, "/")(2)
  17.                                 ElseIf Len(Split(za, "/")(1)) = 1 Then
  18.                                     za = Split(za, "/")(0) & "-0" & Split(za, "/")(1) & "-" & Split(za, "/")(2)
  19.                                 ElseIf Len(Split(za, "/")(2)) = 1 Then
  20.                                     za = Split(za, "/")(0) & "-" & Split(za, "/")(1) & "-0" & Split(za, "/")(2)
  21.                                 Else
  22.                                     za = Split(za, "/")(0) & "-" & Split(za, "/")(1) & "-" & Split(za, "/")(2)
  23.                                 End If
  24.                                 
  25.                             End If
  26.                         zc = zc & "'" & za & "',"
  27.                     Next i
  28.                 zc = Left(zc, Len(zc) - 1)  '§R°£³Ì«á¤@­Ó","
  29.                 rez = "(" & zc & ")"
  30.                 ret = ret & rez & ","
  31.                 DoEvents
  32.             Next j
  33. EndTime = Timer
  34. MsgBox Format(EndTime - StartTime, "00.00") & "’"
  35. Application.ScreenUpdating = True
½Æ»s¥N½X

TOP

¦^´_ 18# PKKO

ªGµM¥Îªk¿ù¤F@@
ÁÂÁ p¤j«ü¾É¡A¤µ¤Ñ¤@®ð¤§¤U§Ë¤Fpython¨Ó¾É¤J¤F¡A¬ù10¬í
©ú¤Ñ¦A¨Ó¸Õvba°}¦C¡A«D±`·PÁ­ò!!!!!!

TOP

¦^´_ 17# koshi0413


    ¥Îªk¿ùÅo,§A¤@¼Ë¬OŪ¨ú¤Fcellsªº­È

rng=[a1].resize(r,c).value'r=¦C¼Æ,C=Äæ¦ì¼Æ¶q
¤§«á§âCELLSªº³¡¤À¨ú¥N¬°rng´N¥i¥H¥Î°}¦C¤F

¨Ò¦p­ì¥»­n¨ú¥Îcells(2,1) ´NÅܦ¨ rng(2,1)
·N«ä§¹¥þ¬Û¦P,¦ý¤£¬O¨ú¥ÎÀx¦s®æ¦Ó¬O¨ú¥Î°}¦C,³t«×ª½±µ¤j¼W®@!
PKKO

TOP

¦^´_ 13# PKKO

p¤j¡A¤µ¤Ñ¸Õ¤F¤@¤U¡A¤]¤£ª¾¹D¹ï¤£¹ï
¤@¼Ë 80¬í¡A¦n¹³³£¬O¥d¦b°j°é¡A¬O¤£¬O¤p§Ì¥Îªk§Ë¿ù°Õ¡A
https://dotblogs.com.tw/yc421206/archive/2008/12/20/6470.aspx  <<¦ý¬O·Ó³o­Óºô­¶ªº½d¨Ò¶]¬O«D±`§Öªº(16¬í)¡AºÃ°Ý

¦pªG¥i¥Hªº¸Ü¡A¥i¥H«ü¾É¤@¤U¹À¡H±z»¡ªº za=cells(j,i) §ï¦¨°}¦C¡A¹ê¦b¬O¸Õ¤£¥X¨Ó
  1.         myCols = Range("A2").CurrentRegion.Columns.Count '­pºâ©Ò¦³ªº¦C
  2.         myRows = Range("A1").CurrentRegion.Rows.Count    '­pºâ©Ò¦³ªº¦æ
  3.         ReDim myArray(1 To myRows, 1 To myCols)          '°ÊºA°}¦C
  4.             For j = 3 To myRows
  5.                 zc = ""
  6.                     For i = 1 To myCols
  7.                         myArray(j, i) = Cells(j, i)
  8.                         za = myArray(j, i)
  9.                             If za = "" Then 'ªÅ®æÂà´«
  10.                                 za = 0
  11.                                 
  12.                             ElseIf i = 2 Then '¤é´ÁÂà´«
  13.                                 za = Replace(za, "/", "-")

  14.                             End If
  15.                         zc = zc & "'" & za & "',"
  16.                     Next i
  17.                 zc = Left(zc, Len(zc) - 1)  '§R°£³Ì«á¤@­Ó","
  18.                 rez = "(" & zc & ")"
  19.                 ret = ret & rez & ","
  20.                 DoEvents
  21.             Next j
½Æ»s¥N½X

TOP

¦^´_ 15# koshi0413
§ä¨ì±Ð¾Ç¤F¡AÁÂÁÂP¤j«üÂI^_^
https://dotblogs.com.tw/yc421206/archive/2008/12/20/6470.aspx

TOP

¦^´_ 13# PKKO

P¤j¡A¤p§Ì³æ¿W§Ë¤F­Ó°j°é¨Ó¸Õ¡A¤@¼Ë­n¤@¤ÀÄÁ¤]¡H
¬O¤p§Ì§Ë¿ù¤F¹À

for i = 1 to 10000
cells(i.2) = i
next i

­n¦p¦ó§ï¦¨°}¦C©O¡H

TOP

¦^´_ 13# PKKO

«z~~·s¦~§Ö¼Ö¡A¨S·Q¨ì¸ó¦~©]ÁÙ¦^¤å

«D±`ÁÂÁ­ò¡A¤p§Ì¥ý§ï¨Ó¸Õ¤@¤U¡A¦pªGÁÙºC¡A¦b¤W¨Ó½Ð±Ð~~~

©Ò¥H cells(i,j) ³t«× > Range("A" & i)   ³oÂI¤p§Ì­Ë¬O¤£ª¾¹D¡AÁÙ¥H¬°¤@¼Ë©O

TOP

        ÀR«ä¦Û¦b : §Ú­Ì³Ì¤jªº¼Ä¤H¤£¬O§O¤H¡D¥i¯à¬O¦Û¤v¡C
ªð¦^¦Cªí ¤W¤@¥DÃD