2017-12-14 1 views
0

私は複数のクライアントの毎月のレポートを生成するExcelマクロを持っています。ここで質問された他の人の質問(Is it possible in VBA convert Excel table to json)からこのコードを入手しましたが、コードは1回だけ実行され、同じ名前のたびに1つのファイルが生成されます。私はJSONにExcelシートを変換してAzure BLOBにアップロードできるようにしたい。複数のレポートに対してVBA ExcelをJSONに実行するにはどうすればよいですか?

Sub export_in_json_format() 

Dim fs As Object 
Dim jsonfile 
Dim rangetoexport As Range 
Dim rowcounter As Long 
Dim columncounter As Long 
Dim linedata As String 

' change range here 
Set rangetoexport = Sheet2.Range("a2:b6") 

Set fs = CreateObject("Scripting.FileSystemObject") 
' change dir here 

Set jsonfile = fs.CreateTextFile("C:\Users\Satwant\Desktop\" & "MonthlyReport.json", True) 


linedata = "{""Output"": [" 
jsonfile.WriteLine linedata 
For rowcounter = 2 To rangetoexport.Rows.Count 
    linedata = "" 
    For columncounter = 1 To rangetoexport.Columns.Count 
     linedata = linedata & """" & rangetoexport.Cells(1, columncounter) & """" & ":" & """" & rangetoexport.Cells(rowcounter, columncounter) & """" & "," 
    Next 
    linedata = Left(linedata, Len(linedata) - 1) 
    If rowcounter = rangetoexport.Rows.Count Then 
     linedata = "{" & linedata & "}" 
    Else 
     linedata = "{" & linedata & "}," 
    End If 

    jsonfile.WriteLine linedata 
Next 
linedata = "]}" 
jsonfile.WriteLine linedata 
jsonfile.Close 


Set fs = Nothing 
End Sub 

一意の名前を持つ複数のクライアントに対して複数回実行する方法はありますか?

答えて

1

は、ファイル名毎時間をお願いしてもらうこと

Dim s as string 
s = inputbox("Enter Name you want to use")  
Set jsonfile = fs.CreateTextFile("C:\Users\Satwant\Desktop\" & s & ".json", True) 

でライン

Set jsonfile = fs.CreateTextFile("C:\Users\Satwant\Desktop\" & "MonthlyReport.json", True) 

を交換してください。

+0

ご回答いただきありがとうございます。ファイル名を尋ねずに、現在のシートの名前を取得する方法はありますか? – Satwant

+0

's = inputbox("使用する名前を入力 "、デフォルト:= activesheet.name)'または単にシート名を取得するには、この 's = activesheet.name '。 –

+0

@ KazimierzJaworありがとう、私はそれを試みます。 – Satwant

関連する問題