gpt4 book ai didi

excel - 仅使用 VBA 将数据从 Excel 365 上传到 Azure Sql Server

转载 作者:行者123 更新时间:2023-12-04 19:49:00 25 4
gpt4 key购买 nike

虽然很多个月前我在使用 VBA 方面已经相当先进,但显然那个人已经离开了大楼。我刚刚恢复了几年前 Excel 文件中的一些非常大的商品和股票数据集。我已将它们全部编译到一个文件中,并尝试将数据上传到我的 Azure SQL 服务器。我在任何地方都找不到有关如何将数据加载到 Azure 的任何内容,但我找到了很多有关从 Azure 加载数据的文章。

在 Excel 内部,您只能创建与 Azure SQL 的连接以将数据导入 Excel,这是单向的,无法建立可从中加载的连接。

任何帮助表示赞赏。我总是可以使用旧的 CSV,在我的网络应用程序中使用 C# 读取它们,但我可以在这个文件中每周将数据更新为当前数据,我更喜欢在 VBA 中编写整个例程来获取数据,检查并将其加载到 Azure。

注意:是的,我知道如何使用 ADODB 连接,但我找不到任何特定于使用 Azure SQL 的驱动程序

进一步更新:

使用以下内容,我尝试了 2 打变体,每次都会产生此错误。我安装了 Sql Native Client 驱动程序 #12

VBA to Azure connection error

这是驱动程序的功能,我相信这是问题或许可,因为 azure sql 数据库存在。这是来自门户的连接字符串

Public Function ExportExcelDataToAzureDb(wsSource As Worksheet) As Boolean

'I am using Activex Data Object 2.8 reference
Dim connectionString As String
Dim oConn As ADODB.Connection
Dim record As ADODB.Recordset
Dim cmd As ADODB.Command

connectionString = "Driver={SQL Server Native Client 12.0};Server=tcp:myazuresqlserver.database.windows.net,1433;Initial Catalog=myappdb;Persist Security Info=False;User ID=myuser;Password={mypass};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
Set oConn = New ADODB.Connection
oConn.connectionString = connectionString

oConn.Open

'load the data
ExportExcelDataToAzureDb = True

End Function

显然,我已经替换了服务器、数据库、用户和密码

最佳答案

经过大量搜索各种连接字符串示例以及大约 100 种不同的字符串变化测试。

以下是与 Excel VBA 一起使用以从 Azure SQL 数据库导入/导出数据的正确连接字符串格式。我提供了插入数据的整个函数,出于安全考虑删除了一些部分。

Option Explicit
Public dbConn As ADODB.Connection
Public adodbRecordSet As ADODB.recordSet
Public rsc As ADODB.recordSet
Public Const AzureDataSource As String = "tcp:yourazuredbservername.database.windows.net,1433"
Public Const AzureDbName As String = "yourazuredbname"
Public Const dbDriverProvider As String = "SQLNCLI11"
'I am using Activex Data Object 2.8 reference, SQL Native Client 11

Public Function ExportExcelDataToAzureDb(wsSource As Worksheet, dataRange As Range) As Boolean

Dim connectionString As String, sql As String
Dim cnt As Integer
Dim cCell As Range

connectionString = "Provider=" & dbDriverProvider & ";" & "Password=yourpassword;User ID=yourusername; " & _
"Initial Catalog=" & AzureDbName & ";" & _
"Data Source=" & AzureDataSource & ";"""

Set dbConn = New ADODB.Connection
Set adodbRecordSet = New ADODB.recordSet

dbConn.connectionString = connectionString
dbConn.Open

' do work here
cnt = 0
With wsSource
For Each cCell In dataRange

sql = "your insert statement here"

adodbRecordSet.Open sql, dbConn, adOpenDynamic, adLockReadOnly, adCmdText
cnt = cnt + 1
Next cCell
End With

'clean up
dbConn.Close
' log count of uploaded data records
Call PrintLog("Records loaded on " & Now & ": " & cnt & " symbol records")
ExportExcelDataToAzureDb = True

End Function

如果有人知道如何使其与更高版本的 ActiveX 数据对象或 SQL Native Client Library 一起使用,请发布另一个答案。

关于excel - 仅使用 VBA 将数据从 Excel 365 上传到 Azure Sql Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58174230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com