![](/img/trans.png)
[英]Save Excel attachment as .txt - opened with a vba macro from Outlook 2010
[英]Excel macro to save jpg as attachment
我迷失了這個話題。 我將嘗試解釋我正在嘗試做的事情: - 我的想法是能夠將 jpg 文件上傳或保存到我的 access 2010 數據庫中,此過程由 excel 中的 usign 宏啟動。 我在互聯網上閱讀了很多,但老實說我被卡住了,我找不到一個例子。 我想使用ADO連接我的想法是使用post標簽,這個標簽會有所不同,我的意思是,我想用這些圖片打印這些標簽。
您可以在下面看到我正在嘗試做的事情。 我迷路了,我得到了錯誤,也許如果有人有一個例子,我可以調整它,因為我認為,我無法使用我擁有的那個。
程序如下:
Sub SUBIRIMAGEN() 'To save a file in a table as binary
Dim adoStream As Object
Dim adoCmd As Object
Dim strFilePath As String
Dim adoCon As Object
Const strServerName As String = "" 'Server Name
Set adoCon = CreateObject("ADODB.Connection")
Set adoStream = CreateObject("ADODB.Stream")
Set adoCmd = CreateObject("ADODB.Command")
strDBName = "database1.accdb"
strMyPath = ThisWorkbook.Path
strDB = strMyPath & "\" & strDBName
'Connect to a data source:
'For pre - MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: "Microsoft.Jet.OLEDB.4.0". For Access 2007 (.accdb database) use the ACE Provider: "Microsoft.ACE.OLEDB.12.0". The ACE Provider can be used for both the Access .mdb & .accdb files.
'--Open Connection to SQL server
adoCon.CursorLocation = adUseClient
adoCon.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB
Rem adoCon.Open "Provider=SQLOLEDB;Data Source=" & strServerName & ";Initial Catalog = " & strDB & ";Integrated Security=SSPI;"
'----
strFilePath = "C:\Users\pc2\Downloads\frutossecosgranel.JPG" ' File to upload
adoStream.Type = adTypeBinary
adoStream.Open
adoStream.LoadFromFile strFilePath 'It fails if file is open
With adoCmd
.CommandText = "INSERT INTO table1 (id,attach) VALUES (?,?) " ' Query
.CommandType = adCmdText
'---adding parameters
.Parameters.Append .CreateParameter("@Id", adInteger, adParamInput, 0, 1)
.Parameters.Append .CreateParameter("@attach", adVarBinary, adParamInput, adoStream.Size, adoStream.Read)
'---
End With
adoCmd.ActiveConnection = adoCon
adoCmd.Execute
adoCon.Close
End Sub
使用以下代碼從 excel 將圖像附加到數據庫訪問。
用excel寫下這段代碼
根據需要修改常量
Private Sub AttachImage()
Const dbname = "c:\temp\Db.accdb"
Dim sql As String
Dim db As Database
Dim rst As Recordset2
Dim rstImage As Recordset2
Dim imageField As Field2
Dim path As String
Dim lnga As Integer
Dim lngkey As Long
path = "c:\temp\table.png"
'select the row to be attached by image
sql = "SELECT * FROM table2 WHERE ID = 1"
Set db = DBEngine.Workspaces(0).OpenDatabase(dbname)
Set rst = db.OpenRecordset(sql)
Set imageField = rst!Blob ' Blob is the field name to store attachment
Set rstImage = imageField.Value
rst.Edit
rstImage.AddNew
On Error Resume Next
rstImage!FileData.LoadFromFile path
If Err <> 0 Then
MsgBox "Error: " + Err.Description, vbInformation, path
Exit Sub
End If
rstImage.Update
rst.Update
Set rst = Nothing
Set db = Nothing
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.