精华内容
下载资源
问答
  • 本文给大家汇总介绍了几种使用VBA处理EXCEL并生成JSON文件的方法和思路,非常的实用,有需要的小伙伴可以参考下。
  • ADODB.Stream创建UTF-8+BOM编码的...另,使用fso创建的文本文件编码为ANSI,ajax解析json时出现乱码无法正常解析。 Sub ToJson() '创建UTF8文本文件  myrange = Worksheets("sheet1").UsedRang
    ADODB.Stream创建UTF-8+BOM编码的文本文件。
    
    然后遍历数据区,格式化数据,输出即可。
    小数据还行,大数据没测试。

    另,使用fso创建的文本文件编码为ANSI,ajax解析json时出现乱码无法正常解析。



    Sub ToJson() '创建UTF8文本文件
      myrange = Worksheets( "sheet1" ).UsedRange  '通过有效数据区来选择数据
      'myrange = ActiveWorkbook.Names("schoolinfo").RefersToRange '通过定义的名称来选择数据
      'myrange = Range(Worksheets("sheet1").Range("a1").End(xlDown), Worksheets("sheet1").Range("a1").End(xlToRight)) '通过标题行的最大行最大列来选择数据
     
    Total = UBound(myrange, 1) '获取行数
    Fields = UBound(myrange, 2) '获取列数
     
          Dim objStream As Object
          Set objStream = CreateObject( "ADODB.Stream" )
          
          With objStream
                 .Type = 2
                 .Charset = "UTF-8"
                 .Open
                 .WriteText "{" "total" ":" & Total & "," "contents" ":["
         
                 For i = 2 To Total
                     .WriteText "{"
                     For j = 1 To Fields
                         .WriteText "" "" & myrange(1, j) & "" ":" "" & Replace(myrange(i, j), "" "" , "\"" ") & " "" "
                          If j <> Fields Then
                             .WriteText ","
                          End If
                     Next
                     If i = Total Then
                             .WriteText "}"
                     Else
                             .WriteText "},"
                     End If
                 Next
     
                 .WriteText "]}"
                 .SaveToFile ActiveWorkbook.FullName & ".json" , 2
          End With
          Set objStream = Nothing
    End Sub

    展开全文
  • VBA解析JSON数据(1)-- Split函数

    万次阅读 2019-02-16 07:20:48
    什么是JSON? JSON(JavaScript Object Notation) 是一种及其轻量级的...由于JSON天然具备了简洁和清晰的层次结构,易于机器解析和生成,从2005年前后开始JSON成为主流的网络数据传输格式。进行网页数据抓取的时候,...

    什么是JSON?

    JSON(JavaScript Object Notation) 是一种及其轻量级的数据交换格式,它是 ECMAScript (欧洲计算机协会制定的JavaScript规范)的一个子集,它使用完全独立于任何编程语言的文本格式来表示数据。
    由于JSON天然具备了简洁和清晰的层次结构,易于机器解析和生成,从2005年前后开始JSON成为主流的网络数据传输格式。进行网页数据抓取的时候,很多页面请求的返回结果都是JSON格式的。
    详细的JSON标准规范请参考:

    http://json.com/specs/

    JSON是什么样的?

    JSON 本质是一个字符串(由花括号{}包裹起来),它是JavaScript对象的字符串表示法。例如:

    {“applySn”: “粤G妆网备字2017050113”, “applySnTT”: “”, “apply_enter_address”: “”, “enterpriseName”: “广州市金日精细化工有限公司”, “enterpriseNameTT”: “”, “is_off”: “N”, “newProcessid”: “20170421153208vq3fu”, “off_date”: “”, “org_name”: “”, “processid”: “20170421153208vq3fu”, “productName”: “悠莅雅柔美亮肤按摩霜”, “productNameTT”: “”, “provinceConfirm”: “2017-05-17”}

    如何解读JSON?

    据说JSON易于人阅读和编写,我怎么看出来,只看到一堆字符,完全不知道包含什么信息。那么来看看下面这段JSON,是不是顿时觉得清爽了很多,其实内容和上一段完全相同,只是进行了相应的格式化显示。

    {
          "applySn": "粤G妆网备字2017050113",
          "applySnTT": "",
          "apply_enter_address": "",
          "enterpriseName": "广州市金日精细化工有限公司",
          "enterpriseNameTT": "",
          "is_off": "N",
          "newProcessid": "20170421153208vq3fu",
          "off_date": "",
          "org_name": "",
          "processid": "20170421153208vq3fu",
          "productName": "悠莅雅柔美亮肤按摩霜",
          "productNameTT": "",
          "provinceConfirm": "2017-05-17"
    }
    

    KEY和VALUE都由半角双引号包裹,二者之间由冒号做为间隔(冒号之后可能有空格),也就是如下格式,类似于VBA中字典对象。

    "KEY": "VALUE"
    

    例如:provinceConfirm的VALUE为2017-05-17,不难看出此部分数据包含13组KEY和VALUE。
    有很多在线工具可以帮助我们实现JSON的格式转换,这是编程过程中一个非常重要的工具。例如:

    http://jsonviewer.stack.hu/

    除了转换为上面的格式外,还可以转换为表格格式,如下图,有些Excel单元格的味道了。
    在这里插入图片描述

    VBA解析JSON

    非常可惜的是VB流行的年代JSON没出现,所以VBA也不支持JSON对象。但是既然JSON数据本质是一个字符串,VBA中丰富的字符串处理函数应该也可以胜任解析JSON这个工作。下面就以上面的JSON数据为例,演示如何在VBA中进行解析。

    Sub JSON_Split()
        Dim Res(100, 1 To 2)
        Dim objRegEx As Object
        Dim iRow, myStr, arrLine, arrItem
        myStr = Trim([A1].Value)
        Range("A3:B3").Value = Array("Key", "Value")
        myStr = Replace(myStr, """", "")
        myStr = Replace(myStr, " ", "")
        arrLine = Split(Mid(myStr, 2, Len(myStr) - 2), ",")
        iRow = 4
        For i = LBound(arrLine) To UBound(arrLine)
            arrItem = Split(Trim(arrLine(i)), ":")
            Cells(iRow, 1).Resize(1, 2).Value = arrItem
            iRow = iRow + 1
        Next
    End Sub
    

    代码解析
    第5行代码读取保存在工作表A1单元格的JSON字符串。
    第6行代码写入第3行的表头。
    由于KEY和VALUE中没有空格个引号,因此第7行和第8行代码去除JSON字符串中的引号和空格,便于后续拆分。
    第9行使用对号做为分隔符,把JSON字符串进行拆分,结果为"KEY":"VALUE"形式。其中MID函数是为了去除字符串首尾的花括号。
    第12行代码冒号做为分隔符再次拆分。
    第13行代码将结果写入相应行的单元格中。

    运行示例代码,结果如下,妥妥的写入了我们熟悉的单元格,可以很方便使用这些数据了。
    在这里插入图片描述

    JSON中一个KEY也可以对应多个VALUE,对于这类数据,需要再多使用一次SPLIT函数进行拆分。


    相关博文链接:
    VBA解析JSON数据(1)-- Split函数
    VBA解析JSON数据(2)–正则表达式
    VBA解析JSON数据(3)–JavaScript
    VBA解析JSON数据(4)–JavaScript进阶
    VBA解析JSON数据(5)–JavaScript回写Excel

    展开全文
  • 由于工作关系,需要生成Json文件的配置,但vba使用dll实在太麻烦了,换了台电脑又需要重新引用,所以决定写Json的解析。 第一步:将字符串格式化。 思路:逐个字符判断该字符所属的类型,期望能将不同格式的Json字符...

    由于工作关系,需要生成Json文件的配置,但vba使用dll实在太麻烦了,换了台电脑又需要重新引用,所以决定写Json的解析。

    第一步:将字符串格式化。

    思路:逐个字符判断该字符所属的类型,期望能将不同格式的Json字符串修改为统一格式的字符串。

    将Json字符串中,空格、回车、TAB、换行符这几种没任何意义的字符删除。

        Function StringToJson(st)
            Dim i As Integer, ThisChar As String, NextChar As String, LastChar As String
            Dim isInString As Boolean, OutPutStr As String
            isInString = False
            OutPutStr = ""
            For i = 1 To Len(st)
                ThisChar = Mid(st, i, 1)
                NextChar = Mid(st, i + 1, 1)
                Select Case ThisChar
                    Case """"
                        isInString = Not isInString
                        OutPutStr = OutPutStr & ThisChar
                    Case " "
                        LastChar = Mid(st, i - 1, 1)
                        If isInString = True Then
                            OutPutStr = OutPutStr & ThisChar
                        End If
                    Case Chr(13)
                    Case Chr(9)
                    Case Chr(10)
                    Case Else
                        OutPutStr = OutPutStr & ThisChar
                End Select
            Next
            StringToJson = OutPutStr
        End Function

    将格式化后的Json字符串,转换为便于阅读的格式(第一步的逆转换)

    Function JsonFormate(st)
        Dim Index As Integer, OutPutStr As String
        Dim i, ThisChar, NextChar
        Dim isInString As Boolean
        Dim IndexMark
        isInString = False
        Index = 0
        OutPutStr = ""
        IndexMark = Chr(9)
        For i = 1 To Len(st)
            ThisChar = Mid(st, i, 1)
            NextChar = Mid(st, i + 1, 1)
            Select Case ThisChar
                Case """"
                    isInString = Not isInString
                    OutPutStr = OutPutStr & ThisChar
                Case "{"
                    If NextChar <> "}" Then
                        Index = Index + 1
                    End If
                    OutPutStr = OutPutStr & ThisChar & Chr(13) & IndexBlank(Index, IndexMark)
    
                Case "}"
    
                    If NextChar = "," Then
                        OutPutStr = OutPutStr & ThisChar
    
                    ElseIf NextChar = "]" Or NextChar = "}" Then
                        Index = Index - 1
                        OutPutStr = OutPutStr & ThisChar & Chr(13) & IndexBlank(Index, IndexMark)
                    Else
                        OutPutStr = OutPutStr & ThisChar
                    End If
                Case "["
                    If NextChar <> "]" Then
                        Index = Index + 1
                    End If
                    OutPutStr = OutPutStr & ThisChar & Chr(13) & IndexBlank(Index, IndexMark)
    
                Case "]"
                    If NextChar = "," Then
                        OutPutStr = OutPutStr & ThisChar
                    ElseIf NextChar = "]" Or NextChar = "}" Then
                        Index = Index - 1
                        OutPutStr = OutPutStr & ThisChar & Chr(13) & IndexBlank(Index, IndexMark)
                    Else
                        OutPutStr = OutPutStr & ThisChar
                    End If
                Case ":"
                    If isInString = False Then
                        OutPutStr = OutPutStr & ThisChar & " "
                    Else
                        OutPutStr = OutPutStr & ThisChar
                    End If
                Case ","
                    If isInString = False Then
                        OutPutStr = OutPutStr & ThisChar & Chr(13) & IndexBlank(Index, IndexMark)
                    Else
                        OutPutStr = OutPutStr & ThisChar
                    End If
                Case Else
                    If NextChar = "]" Or NextChar = "}" Then
                        Index = Index - 1
                        OutPutStr = OutPutStr & ThisChar & Chr(13) & IndexBlank(Index, IndexMark)
                    Else
                        OutPutStr = OutPutStr & ThisChar
                    End If
            End Select
        Next
        JsonFormate = OutPutStr
    End Function
    Function IndexBlank(Index, IndexMark)
        Dim s, i
        s = ""
        If Index > 0 Then
            For i = 1 To Index
                s = s & IndexMark
            Next
        End If
        IndexBlank = s
    End Function


    展开全文
  • Sub excelToJsonFileExample() Dim excelRange As Range Dim ...\Users\username\Desktop\jsonExample.json", True) jsonFileExport.WriteLine (JsonConverter.ConvertToJson(jsonItems, Whitespace:=3)) End Sub 参考 ...
    Sub excelToJsonFileExample()
    Dim excelRange As Range
    Dim jsonItems As New Collection
    Dim jsonDictionary As New Dictionary
    Dim jsonFileObject As New FileSystemObject
    Dim jsonFileExport As TextStream
    Dim i As Long
    Dim cell As Variant
    
    Set excelRange = Cells(1, 1).CurrentRegion
    
    For i = 2 To excelRange.Rows.Count
        jsonDictionary("id") = Cells(i, 1)
        jsonDictionary("name") = Cells(i, 2)
        jsonDictionary("username") = Cells(i, 3)
        jsonDictionary("email") = Cells(i, 4)
        jsonDictionary("street") = Cells(i, 5)
        jsonDictionary("suite") = Cells(i, 6)
        jsonDictionary("city") = Cells(i, 7)
        jsonDictionary("zipcode") = Cells(i, 8)
        jsonDictionary("phone") = Cells(i, 9)
        jsonDictionary("website") = Cells(i, 10)
        jsonDictionary("company") = Cells(i, 11)
    
        jsonItems.Add jsonDictionary
        Set jsonDictionary = Nothing
    Next i
    
    ‘change the path below to save where you desire
    Set jsonFileExport = jsonFileObject.CreateTextFile("C:\Users\username\Desktop\jsonExample.json", True)
    jsonFileExport.WriteLine (JsonConverter.ConvertToJson(jsonItems, Whitespace:=3))
    
    End Sub
    

    参考
    http://excelerator.solutions/2017/08/24/convert-excel-to-json-using-vba/

    展开全文
  • [VBA] 将 Excel 表转为 JSON 并上传

    千次阅读 2019-07-05 17:23:59
    1. Excel 表数据转为 JSON Sub ExcelToJSON() Dim sht As Worksheet Set sht = Worksheets("Sheet1") usedRng = sht.UsedRange rowCnt = UBound(usedRng, 1) colCnt = UBound(usedRng, 2) D...
  • VBA操作treeview

    2018-05-13 21:26:58
    VBA操作treeview 最近研究Json转树型结构然后自动生成JsonPath
  • import os, sys, shutil, json import os.path as osp from builtins import FileNotFoundError import logging from csv import DictReader resultjson_path='/data/benchmark/jingqu_30wan_1002/bm_files/...
  • 利用了百度的opendata API接口,接口链接...再去解析JSONfile,就可以获取节假日了。 代码如下: Function GetJson() Dim http Dim aa As String api = "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?
  • '生成json文件 ' ######################################################################## ' 生成MySQL连接情况  Sheets("json必填").Activate  AA_num = Sheet6.Range("A65536").End(xlUp).Row ...
  • 晚上找到的一段vba代码有2个问题一个是不能修改标签页的名字,一个是存储的json文件明带上了.xlsm的后缀。 修改后发上来。 一、excel 2007 创建能使用宏的xlsm文件 Sub ToJson() '创建UTF8文本文件 myrange =...
  • excel通过宏来导出json数据

    千次阅读 2013-12-20 12:06:04
    Sub 导出JSON() Dim s As String Dim FullName As String, rng As Range Dim row As Integer, column As Integer, maxrow As Integer Dim strContent As String Application.ScreenUpdating = Fa
  • 我前一阵子用VBA做了个工具,用XMLHTTP的Get功能抓取城市间距离。现在我想用用XMLHTTP的Post功能抓取邮件轨迹。抓取数据是用Get还是Post,取决于网站提交参数的方法。 1、通过分析(用fiddler),邮件轨迹查询网站...
  • VBA复选下拉框,判断总共行数,循环判断复选框内容进行对比操作,生成JSON串。如有疑问,欢迎交流!
  • VBA实现FTP上传文件的两种方式:①shell cmd命令②vba调用vb.net(传参并获取返回值) 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以...
  • strJSON = "var json=" & json objSC.AddCode (strJSON) '将 json 由字符串解析为对象 Dim geocodes geocodes = objSC.Eval("json.geocodes") If geocodes <> "" Then Dim province$ province = objSC.Eval(...
  • json进阶 一 js读取解析JSON类型数据
  • Set myHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 'json网页 With myHTTP .Open "GET", "http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30", False .
  • 一、Excel的读写 Epplus介绍 EPPlus是一个使用Open Office XML(xlsx)文件格式,能读写Excel 2007/2010 ...需要使用的Epplus的DLL文件,从官网上下载下来即可。基本上Excel上的各种功能(例如图表、VBA、数据透...
  • 简单处理excel 转成 json

    万次阅读 2016-04-12 13:19:01
     工作中常需要处理excel转json问题. 希望这篇博文能简单描述这个问题.并提供一种解决 思路.提升感悟.  今天我们处理的事就是为了把 xlsm => json. 一种方式是. 去 google 在 stackover上搜 c readxlsm/...
  • 系列(1)- 概述 系列(2)- requests库基本使用 系列(3)- 网页数据解析(bs4、lxml、Json库) 系列(4)- 提取网页数据(正则表达式、bs4、xpath) 系列(5)- 看了这篇文章你也可以一键下载网络小说 3、Excel vba实例分类汇总...
  • 一键将cURL命令字符串生成Python、Arrdio、易语言、Golang、PowerQuery、VBAJSON的代码
  • JSON WEB TOKEN令牌快速入门学习 (jwt)

    千次阅读 2019-03-08 11:52:16
    JSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种简介的、自包含的协议格式,用于 在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公 钥/...
  • 提取多层嵌套Json数据

    千次阅读 2017-09-30 11:12:25
    在.net 2.0中提取这样的json  {"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}}  引用命名空间  using Newtonsoft.Json;  using Newtonsoft.Json.Linq;  可以把上面的JSON看成一个...
  • 易语言有精易网页助手可以生成易语言代码,但是不支持cURL格式的(跟官方反馈过了,但是没有后续了。) 功能展示 使用教程 目前已经测试Chrome、火狐浏览器、Charles三款浏览器及抓包工具的cURL格式文本可用,...
  • vscode自动生成vue模板教程

    千次阅读 2018-08-23 17:22:48
    vscode自动生成vue模板步骤 ... 新进test.vue文件,在vue文件中输入vue,点击enter就能自动生成模板了,如果想调整模板内容,在vue.json中修改 { &amp;quot;Print to console&amp;quot;: ...
  • Excel用VBA传数据到服务器

    千次阅读 2017-01-17 15:17:20
    有个金融领域的需求,有一段excel的vba代码可以自动生成金融产品数据,要把这些数据在网页上(其实是微信公众号)展示,于是就需要把生成的数据发送到服务器并保存给网页用。vba里面可以发送Http请求,笔者先把需要...
  • 实现功能是,传递一个Range区域的数据,自动生成JSON字符串,行首为列名。 函数如下: Function GetJSON(myrange) Dim returnStr As String Dim count As Integer Dim colunms As Integer

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 357
精华内容 142
关键字:

vba生成json