相关疑难解决方法(0)

如何在Excel VBA中对字符串进行URL编码?

是否有内置的方法在Excel VBA中对字符串进行URL编码,还是需要手动滚动此功能?

url excel encoding vba urlencode excel-vba

68
推荐指数
7
解决办法
10万
查看次数

在Excel VBA中解析JSON

我有与Excel VBA相同的问题:Parsed JSON Object Loop但无法找到任何解决方案.我的JSON有嵌套对象所以像VBJSON和vba-json这样的建议解决方案对我不起作用.我还修复了其中一个正常工作,但结果是一个调用堆栈溢出,因为doProcess函数的许多递归.

最好的解决方案似乎是原始帖子中看到的jsonDecode函数.它非常快速且高效; 我的对象结构是JScriptTypeInfo类型的通用VBA对象.

此时的问题是我无法确定对象的结构是什么,因此,我事先并不知道将存在于每个通用对象中的键.我需要遍历通用VBA对象来获取键/属性.

如果我的解析javascript函数可以触发VBA函数或sub,那将是非常好的.

excel parsing vba json object

67
推荐指数
5
解决办法
13万
查看次数

如何在vba宏中检查空数组

我想检查空数组.Google给了我各种解决方案,但没有任何效果 也许我没有正确应用它们.

Function GetBoiler(ByVal sFile As String) As String
'Email Signature
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.ReadAll
    ts.Close
End Function

Dim FileNamesList As Variant, i As Integer
' activate the desired startfolder for the filesearch
FileNamesList = CreateFileList("*.*", False) ' Returns File names
' performs the filesearch, includes any subfolders
' present the result
' If there are Signatures then populate SigString
Range("A:A").ClearContents
For i = …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

57
推荐指数
6
解决办法
19万
查看次数

如何在没有外部库的情况下使用VBA解析JSON?

我有一个像下面这样的json:

{"sentences":[{"trans":"something ru","orig":"english word","translit":"Angliyskoye slovo","src_translit":""}], "src":"en","server_time":69}
Run Code Online (Sandbox Code Playgroud)

并解析它:

Function jsonDecode(jsonString As Variant)
    Set sc = CreateObject("ScriptControl"): sc.Language = "JScript"
    Set jsonDecode = sc.Eval("(" + jsonString + ")")
End Function

Set arr = jsonDecode(txt)
Run Code Online (Sandbox Code Playgroud)

结果 arr包含如下所示的值(在Watches中检查):

arr
 - sentences (type: Variant/Object/JScriptTypeInfo)
  - 0 (type: Variant/Object/JScriptTypeInfo)
    - orig (type: Variant/String)
    - trans (type: Variant/String)
    ...
  - Item 1 (type: Variant/Object/JScriptTypeInfo)
    - orig (type: Variant/String)
    - trans (type: Variant/String)
    ...
 - server_time
 - src
Run Code Online (Sandbox Code Playgroud)

arr.src运作良好,但我怎么能得到arr.sentences(0).trans?首先,VBA替换sentences用Sentences,其次(当我试图手动更改JSON)它仍然不允许使用sentenses(0) …

vba json object

18
推荐指数
2
解决办法
10万
查看次数

VBA处理空数组错误

我正在编写一个脚本,它将循环遍历我的电子表格,并查找是否有任何重复的所选单元格.如果有重复,那么该函数将返回一个行是重复的数组,并创建一个注释告诉我哪些行是重复的.我已经能够处理错误0但是现在当我使用UBound函数检查数组中是否存在元素时,我得到错误9.有没有人知道如何验证整数数组,如果它是空的或不是因为我的代码似乎没有完成这项工作.以下是我的代码

Function IsArrayEmpty(anArray As Variant) As Boolean
    Dim i As Integer

    On Error Resume Next
        i = UBound(anArray, 1)
    Select Case (Err.Number)
        Case 0
            IsArrayEmpty = True
        Case 9
            IsArrayEmpty = True
        Case Else
            IsArrayEmpty = False
    End Select
End Function
Run Code Online (Sandbox Code Playgroud)

error-handling excel vba excel-2003

7
推荐指数
2
解决办法
3万
查看次数

如何在 Excel 等待用户操作时单击 Enter?

当我用 VBA 保存我的 Excel 文件时,它要求我输入我的凭据(它将它保存在某种服务器上)。通过查看网站,我找到了一种使用SendKeys和延迟操作的方法。

我的问题:
代码停止并等待用户输入 ( Enter) 并且我找不到开始下一行代码的方法(这实际上是推Enter...)

我的代码:
这是我需要帮助的具体部分:

.SaveAs Filename:="Y:\Must\Must Chart Management.csv", FileFormat:=xlCSV, Local:=True
Application.Wait (Now + TimeValue("0:00:05"))
SendKeys ("{ENTER}")
Run Code Online (Sandbox Code Playgroud)

这是整个事情:

Sub UpdateMust2020()
    
Application.DisplayAlerts = False
KillFile = "B:\Must\Must Chart Management.csv"

With ActiveWorkbook
    
    Worksheets("Must Chart Management").Activate
        .SaveAs Filename:="Y:\Must\Must Chart Management.csv", FileFormat:=xlCSV, Local:=True
        Application.Wait (Now + TimeValue("0:00:05"))
        SendKeys ("{ENTER}")
        .SaveAs Filename:="E:\users\Must Definition Dashboard\Convergence\Must Chart Management.csv", FileFormat:=xlCSV, Local:=True
        
    Worksheets("MasterQuery").Activate
        .SaveAs Filename:="Y:\Must\Must Statistics Charts.csv", FileFormat:=xlCSV, Local:=True
        .SaveAs Filename:="E:\users\Must Definition Dashboard\Convergence\Must Statistics Charts.csv", FileFormat:=xlCSV, Local:=True …
Run Code Online (Sandbox Code Playgroud)

excel vba prompt

5
推荐指数
0
解决办法
173
查看次数

如何将字符串评估为 VBA 中的对象?

在我之前的问题中,如何为 VBA 中在运行时提供属性名称的属性赋值?,我学会了在运行时使用 CallByName 在类中设置属性。

然而,这一次,我试图弄清楚如何在运行时从字符串中获取对象。

例如,假设我有一个包含以下数据的字符串:Worksheets("RAW DATA").Range("A1").QueryTable.

这是我可能会尝试做的事情,上面的数据是strParam下面的输入:

Function GetObject(strParam As String) As Object
    GetObject = SomeFunction(strParam)
End Function
Run Code Online (Sandbox Code Playgroud)

在这种情况下,GetObject 在对 进行评估时应该返回一个 QueryTable Worksheets("RAW DATA").Range("A1").QueryTable。VBA 中有什么东西可以代替SomeFunction上面的例子吗?

excel vba

4
推荐指数
1
解决办法
7912
查看次数

在Windows上的Excel VBA中,对于已解析的JSON变量,这个JScriptTypeInfo究竟是什么?

在这里回答我自己的问题.
我已经在Excel VBA中使用JSON做了一些工作,并发布了许多调查结果,我将以问答形式发布这些内容 https://stackoverflow.com/help/self-answer http://blog.stackoverflow.com/2011/07/ITS-OK-到问一答,你自己的问题/

所以在stackoverflow的其他地方,人们可以看到有关在VBA中解析JSON的问题,但他们似乎错过了一两个技巧.

首先,我重新使用自定义JSON解析库,而是使用ScriptControl的Eval方法作为我所有JSON代码的基础.此外,我们还表达了本机Microsoft解决方案的偏好.

这是一个先前的问题在Windows上的Excel VBA中,如何减轻由IDE的大小写行为破坏的解析JSON的点语法遍历问题?这个问题的基础.它显示了使用VBA.CallByName比使用点语法遍历解析的JSON对象更强大.另一个先前的问题在Windows上的Excel VBA中,如何循环解析JSON数组?展示了如何使用它来访问数组元素.但是CallByName返回一个奇怪的变量类型,它在Watch窗口中显示为Object/JScriptTypeInfo,如果在一个窗口中有一个类型Debug.Print(或悬停在变量上),则会得到无信息的"[object Object]".在Windows上的Excel VBA系列中的另一个问题中,如何为已解析的JSON变量获取字符串化的JSON表示而不是"[object Object]"?我提出了一些调试"糖",可以很好地检查变量.在第四个问题中在Windows Excel VBA中,如何获取JSON键以抢占"运行时错误'438':对象不支持此属性或方法"?,在研究如何查询成员的JSON对象时,我发现似乎附加到JScriptTypeInfo对象的hasOwnProperty()方法.

所以在这个问题中我问,究竟这个JScriptTypeInfo究竟是什么?

这是5系列的问题5.这是完整系列

Q1 在Windows上的Excel VBA中,如何减轻由IDE的大小写行为破坏的解析JSON的点语法遍历问题?

Q2 在Windows上的Excel VBA中,如何循环解析JSON数组?

Q3 在Windows上的Excel VBA中,如何为已解析的JSON变量获取字符串化的JSON表示而不是"[object Object]"?

Q4 在Windows Excel VBA中,如何获取JSON键以抢占"运行时错误'438':对象不支持此属性或方法"?

Q5 在Windows上的Excel VBA中,对于已解析的JSON变量,这个JScriptTypeInfo究竟是什么?

excel vba json

4
推荐指数
1
解决办法
1618
查看次数

使用VBA和VBA-JSON从Wordpress API访问JSON数据

我正在构建一个VBA应用程序,该应用程序使用从网络抓取的资源来创建和修改Wordpress网站页面。Wordpress API返回一个JSON文件,但是在VBA中不支持解析JSON,因此我从GitHub导入了VBA-JSON。这是子例程:

Sub Wordpress()

    '
    ' Wordpress API Test
    '
    Dim wpResp As Variant
    Dim sourceSheet As String
    Dim resourceURL As String
    sourceSheet = "Resources"
    resourceURL = Sheets(sourceSheet).Cells(6, 1)
    wpResp = getJSON(resourceURL + "/wp-json/wp/v2/posts")

End Sub
Run Code Online (Sandbox Code Playgroud)

和它调用的函数。

Function getJSON(link) As Object

    Dim response As String
    Dim json As Object
    On Error GoTo recovery
    Dim retryCount As Integer
    retryCount = 0
    Dim web As MSXML2.XMLHTTP60
    Set web = New MSXML2.XMLHTTP60

the_start:

    web.Open "GET", link, False, UserName, pw
    web.setRequestHeader "Content-type", "application/json"
    web.send …
Run Code Online (Sandbox Code Playgroud)

api wordpress vba json wordpress-rest-api

1
推荐指数
1
解决办法
792
查看次数