いつもお世話になっております。
現在、エクセルのVBAを使用して、セルの値からPHPの連想配列を作成しようとしています。
現在のコードは以下です。
vba
1Sub makephpFile() 2 3 'カラム数と行数を格納 4 Dim clms_cnt As Integer 5 clms_cnt = Application.CountA(Range("1:1")) 6 7 Dim row_cnt As Integer 8 row_cnt = Application.CountA(Range("A:A")) 9 10 'カラム名を配列に格納 11 Dim clm_arr() As Variant 'lengthは条件によって変わる 12 ReDim clm_arr(clms_cnt) As Variant 13 14 For i = 1 To clms_cnt 15 clm_arr(i - 1) = Cells(1, i) 16 Next i 17 18 'PHPの連想配列を作成 19 Open "C:\Users\ユーザー名\Desktop\sample.php" For Append As #1 20 For i = 2 To row_cnt 21 Print #1, "[" 22 For j = 1 To clms_cnt 23 Print #1, clm_arr(j - 1) & " => " & Cells(i, j) // to be changed 24 Next j 25 Print #1, "]" 26 Next i 27 Close #1 28End Sub
これを実行しますと以下のように指定したファイルに値が生成されます
php
1[ 2column1 => 1 3column2 => 2 4column3 => 3 5column4 => 4 6column5 => 5 7column6 => 6 8column7 => 7 9column8 => 8 10] 11[ 12column1 => 11 13column2 => 12 14column3 => 13 15column4 => 14 16column5 => 15 17column6 => 16 18column7 => 17 19column8 => 18 20] 21[ 22column1 => 21 23column2 => 22 24column3 => 23 25column4 => 24 26column5 => 25 27column6 => 26 28column7 => 27 29column8 => 28 30] 31[ 32column1 => 31 33column2 => 32 34column3 => 33 35column4 => 34 36column5 => 35 37column6 => 36 38column7 => 27 39column8 => 38 40] 41 42// 理想は以下 43[ 44"column1" => "31" 45"column2" => "32" 46"column3" => "33" 47"column4" => "34" 48"column5" => "35" 49"column6" => "36" 50"column7" => "27" 51"column8" => "38" 52]
形としてはほぼ完成なのですが、キーと値をダブルコーテーションでくくりたいです。
ですので「to be changed」の部分を以下のように変更しました
vba
1Print #1, """ & clm_arr(j - 1) & """ & " => " & """ & Cells(i, j) & """
このように記述すると、Cellsなどが文字列としてそのまま吐き出されてしまいます。
どのように記述すればよいでしょうか。
どうかご教授お願いします。
追記①
vba
1Print #1, "'" & clm_arr(j - 1) & "'" & " => " & "'" & Cells(i, j) & "'"
上記のようにシングルコーテーションなら上手くいきます。
回答受付中のままになってますが。
回答1件
あなたの回答
tips
プレビュー