質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

756閲覧

VBAでダブルコーテンションを上手く表示できない

Chandler_Bing

総合スコア673

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2020/04/10 16:05

編集2020/04/10 16:34

いつもお世話になっております。

現在、エクセルの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) & "'"

上記のようにシングルコーテーションなら上手くいきます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/04/10 21:21

回答受付中のままになってますが。
guest

回答1

0

ベストアンサー

VBA

1Print #1, """" & clm_arr(j - 1) & """" & " => " & """" & Cells(i, j) & """"

のように、引用符の間に引用符自身を入れるときは引用符を2つ書きます。すると1つの引用符になります。

VBA

1Print #1, """" & clm_arr(j - 1) & """ => """ & Cells(i, j) & """"

でいいですね。

#追記
カンマもいるのでは?

VBA

1Print #1, """" & clm_arr(j - 1) & """ => """ & Cells(i, j) & ""","

投稿2020/04/10 16:38

編集2020/04/10 16:41
otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chandler_Bing

2020/04/10 17:21

上手くいきました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問