使用 VBA 复制和修改连接

Posted

技术标签:

【中文标题】使用 VBA 复制和修改连接【英文标题】:Copying and Modyfing the Connection with VBA 【发布时间】:2020-06-10 08:13:37 【问题描述】:

我目前正在使用 VBA 构建一个解决方案来复制我现有的查询(API 查询)并根据原始查询的列中的值更改其参数。

我正在使用 p1 变量,其中包含要在 API URL 中使用的循环列值

结果应该是多个工作表,每个工作表都有一个查询,vba 代码应该在我的第一个查询中循环遍历某个列,然后将此值传递给每个新查询。

我遇到了一个问题。我不知道它是否存在区域格式问题,但我无法真正将查询粘贴到 Queries.Add 方法中。我很确定我正确格式化了“”但是:

您可以看到编辑器将这部分代码显示为红色(在 Notepadd++ 中,VBA 格式很好)

这是我的代码:

mFormula =
    "let" & Chr(13) & "" & Chr(10) & " Source = Json.Document(Web.Contents(""https://rejestr.io/api/v1/krs/"" & p1 & ""/relations"", [Headers=[Authorization=""xxxxxxx""]]))," & Chr(13) & "" & Chr(10) &" #""Converted to Table"" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), " & Chr(13) & "" & Chr(10) & " #""Expanded Column1"" = Table.ExpandRecordColumn(#""Con" & _
"verted to Table"", ""Column1"", ""address"", ""business_insert_date"", ""ceo"", ""current_relations_count"", ""data_fetched_at"", ""first_entry_date"", ""historical_relations_count"", ""id"", ""is_opp"", ""is_removed"", ""krs"", ""last_entry_date"", ""last_entry_no"", ""last_state_entry_date"", ""last_state_entry_no"", ""legal_form"", ""name"", ""name_short"", ""nip"", ""regon"", ""type"", ""w_likwidacji"", ""w_upadlo" & _
"sci"", ""w_zawieszeniu"", ""relations"", ""birthday"", ""first_name"", ""krs_person_id"", ""last_name"", ""organizations_count"", ""second_names"", ""sex"", ""Column1.address"", ""Column1.business_insert_date"", ""Column1.ceo"", ""Column1.current_relations_count"", ""Column1.data_fetched_at"", ""Column1.first_entry_date"", ""Column1.historical_relations_count"", ""Column1.id"", ""Column1.is_opp"", ""Column1.is_rem" & _
"oved"", ""Column1.krs"", ""Column1.last_entry_date"", ""Column1.last_entry_no"", ""Column1.last_state_entry_date"", ""Column1.last_state_entry_no"", ""Column1.legal_form"", ""Column1.name"", ""Column1.name_short"", ""Column1.nip"", ""Column1.regon"", ""Column1.type"", ""Column1.w_likwidacji"", ""Column1.w_upadlosci"", ""Column1.w_zawieszeniu"", ""Column1.relations"", ""Column1.birthday"", ""Column1.first_name"", ""Column1.krs_person_id"", ""Column1.last_name"", ""Column1.organizations_count"", ""Column1.second_names"", ""Column1.sex"")"  & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Renamed Columns3"""

另外,是否完全可以从第一个查询动态传递多个变量以创建多个查询到 API 服务?也许有人已经做过类似的事情了?

非常感谢

亚历克斯

【问题讨论】:

您可以将chr(13) &""&chr(10) 替换为vbCrLf。更短更易读 【参考方案1】:

mFormula = 行中需要一个续行标记 (_):

mFormula = _

【讨论】:

很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。

以上是关于使用 VBA 复制和修改连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 更新和现有 OLEDB 连接

如何在VBA中用ADO连接远程的access数据库

如何使用 VBA 更新 Excel 工作簿 Web 查询连接字符串?

在 VBA 中对断开连接的 ADODB 记录集应用过滤器

VBA与SQL哪个比较难?哪个比较高效?

Oracle查看和修改连接数(进程/会话/并发等等)