gpt4 book ai didi

vba - 使用 Excel VBA 更改已关闭工作簿中单元格的值?

转载 作者:行者123 更新时间:2023-12-02 06:10:42 32 4
gpt4 key购买 nike

我目前在 VBA 中使用此函数来获取已关闭工作簿中单元格的值。我想使用类似的过程将单元格的值设置为我想要的任何值,而无需打开文件。这可能吗?

Private Function GetValue(path, file, sheet, ref)

Dim arg As String
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function

最佳答案

是的,您可以按照 Gary 的评论使用 ADO 来执行此操作,但前提是您的 Excel 工作表排列在类似数据库的结构中。
这意味着您有按列排列的有效字段(带或不带标题)。
例如:

enter image description here

现在,您看到 ID 号 12345 的名字为 John John,并且您希望将其更新为 John Knight
使用 ADO 您可以尝试:

Edit1:您实际上可以在不使用记录集的情况下执行此操作。请参阅下面的更新。

Sub conscious()
Dim con As ADODB.Connection
Dim sqlstr As String, datasource As String

Set con = New ADODB.Connection
datasource = "C:\Users\UserName\Desktop\TestDataBase.xlsx" 'change to suit

Dim sconnect As String
sconnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & datasource & ";" & _
"Extended Properties=""Excel 12.0;HDR=YES"";"

With con
.Open sconnect
sqlstr = "UPDATE [Sheet1$] SET [Name] = ""John Knight"" WHERE [ID Number] = 12345"
.Execute sqlstr
.Close
End With

Set con = Nothing
End Sub

结果:

enter image description here

我不完全确定这是否是您想要的,但是 HTH。

注释:

  1. 您需要添加对 Microsoft ActiveX 数据对象 X.X 库 的引用(早期绑定(bind))。
  2. 但您也可以使用后期绑定(bind)来执行此操作(无引用)。
  3. 使用的连接字符串适用于 Excel 2007 及更高版本。
  4. Sheet1 是您要将值更新到的目标工作表的名称。

编辑1:如果您的文件没有标题,请按以下方法操作

首先将连接字符串 HDR 参数更改为 NO:.

sconnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & datasource & ";" & _
"Extended Properties=""Excel 12.0;HDR=NO"";"

然后将 SQL 字符串调整为:

sqlstr = "UPDATE [Sheet1$] SET F2 = ""John Knight"" WHERE F1 = 12345"

因此,F1 用于字段 1F2 用于字段 2 等等。

关于vba - 使用 Excel VBA 更改已关闭工作簿中单元格的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908561/

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