• ベストアンサー

ExelのVBAでダブルクォートをセルに埋めるには?

文字列の中にダブルクォートを入れるにはどうするのでしょうか? C言語であれば、\" と書くところですが。 Range("A1") = "<img src=""" & DataName & "."">" 、のように、 ダブルクォートを2つ続けると、Exel上で見ると期待どおりに表示されますが、 テキスト形式に保存してからファイルをみると、ダブルクォート2つ入ってます。 エクセルでデータベース管理をし、VBAでそれを編集して、 HTMLを自動生成するようなツールを作成したいのですが、 ダブルクォートをテキストに吐き出せなくて困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記を参考にしてください。 Sub test01() a = "" For i = 1 To 20 a = a & Chr(34) Next i Range("a1") = a End Sub --- Sub test02() Open "c:\my documents\aaa11.txt" For Output As #1 a = Chr(34) Print #1, a Close #1 End Sub メモ帳で開くと、「”」の1文字が書き込まれていました。#1解答の「補足」の事実の状況が掴めません。

kaz-sugi
質問者

お礼

Open "c:\my documents\aaa11.txt" For Output As #1 こんな懐かしいステートメントが使えるとは知りませんでした。。。 おかげで、やりたいことが全て解決いたしました。 ありがとうございました。

その他の回答 (2)

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.3

DataName = "hoge" Range("A1") = "<img src=""" & DataName & "."">" 上記で、A1に書き込みしました。 エクセル表示上:<img src="hoge."> テキスト形式保存:"<img src=""hoge."">" このようになると言いたいわけですよね? これは、エクセルが正常にファイルの内容を取得する上で決まりの形式の為です。 セルの内容に"や,等が含まれる場合に1セル内の値である事を識別する為に""で囲まれます。 そして、終わりの"で無いので文字である事を意味する為に""となるわけです。 これは、仕様の為に仕方がありません。 kaz-sugiさんは、エクセル表示上の形式でファイルに保存したいのですよね? それなら、以下2通りの方法があります。 1.セルの内容を自分で取得してimogasiさんのように手動でファイルを保存する 2.excelのテキスト形式保存後、保存したファイルを開きいらない"を除いてファイルを保存 以上の方法でするしかないですよ。参考になれば幸いです。

kaz-sugi
質問者

お礼

ありがとうございました。 今後ともよろしくおねがいいたします。

noname#102878
noname#102878
回答No.1

「""」の替わりに Chr(34)を使ってみてはどうでしょうか?

kaz-sugi
質問者

お礼

ありがとうございました。

kaz-sugi
質問者

補足

回答ありがとうございます。 エクセルの画面上では期待どおりですが、 テキスト形式でファイルへ保存すると、 やはりダブルクォートが2つ並んで入っているようです。

関連するQ&A

  • ExelのVBAでダブルクォートをセルに埋めるには?

    文字列の中にダブルクォートを入れるにはどうするのでしょうか? C言語であれば、\" と書くところですが。 ダブルクォートを2つ続けると、Exel上で見ると期待どおりに表示されますが、 テキスト形式に保存してからファイルをみると、ダブルクォート2つ入ってます。 エクセルでデータベース管理をし、VBAでそれを編集して、 HTMLを自動生成するようなツールを作成したいのですが、 ダブルクォートをテキストに吐き出せなくて困っています。

  • ExelでHTMLタグを含むセルに勝手にダブルクォートがついてしまう

    ExelのVBAでHTMLを自動生成しようとしています。 どうにも規則性がみつけられないのですが、 タグによっては、テキストに出力した際に、勝手にセル全体に ダブルクォートがかかった状態で出力されます。 おそらく、そのテキストをExelで読み直したときに、セルがHTMLタグを 無視するようにそのような仕様になっているものと想像しますが、 これは抑止できないのでしょうか?

  • HTMLは、シングルクォートかダブルクォートか?

    HTMLで、<img src="images/spr2002.gif" width=130 height=130 border=0 alt="写真"> などクォート文字列がよくでてきますが、文法的にはシングルクォートかダブルクォートのどちらでもOKなのでしょうか? 大抵のHTMLエディタではダブルクォートを採用している事が多いようですが、私的には、PerlやPHPのprint文などでクォート文字列をエスケープする必要がないので、シングルクォートが良いような気がするのですが、みなさん、どちらが望ましいと思われますか?

    • ベストアンサー
    • HTML
  • ダブルクォート、シングルクォート、\について

    こんにちは。 PHPでメールフォームを作ったのですが、2つ問題点があります。 1.テキストフィールドにダブルクォートで文字を囲んで送信すると入力された情報が返されず、何も入力されていないメールが送られてきます。 2.シングルクォート、\をいれると前に\がついてしまいます。(こんなカンジ→\'\\)フォームはHTMLで作成しています。確認画面のフォームにstripcslashes($_POST[name])をかけておりブラウザ上だとシングルクォートと\は除去されているのですが、メールだと除去されてません。 ダブルクォート、シングルクォート、\が付いた文字列をPHP・HTMLにどのように記述すれば、メールにきちんと送られるようになるのでしょうか?

    • 締切済み
    • PHP
  • EXELよりVBAを使ってTXTを書き出すとき

    VBA初心者です。 データをテキスト形式に書き出す際、同じ行のものを一列に書き出したいのですが、あるバイト数を越えると出来上がったテキストデータに改行が入ってしまいます。 それをなんとか解消したいのですがどうしたらよいでしょうか? EXELは2000を使っています。どなたかよろしくお願いします。

  • EXELよりVBAを使ってTXTを書き出すとき

    VBA初心者です。 データをテキスト形式に書き出す際、同じ行のものを一列に書き出したいのですが、あるバイト数を越えると出来上がったテキストデータに改行が入ってしまいます。 それをなんとか解消したいのですがどうしたらよいでしょうか? OSはWIN-XP、EXELは2000を使っています。どなたかよろしくお願いします。 (VBの方でご協力いただいた方は重複してしまうかもしれませんが申し訳ありません。)

  • 文字列中のシングルクォートにエスケープシーケンスは必要?

    C言語でダブルクォートで囲まれた文字列内で使われる、「\」で始まるエスケープシーケンスがありますよね。例えば、 「\n」 ⇒ 改行 「\t」 ⇒ タブ 「\"」 ⇒ ダブルクォート 「\\」 ⇒ バックスラッシュ などですが、C言語のリフェレンスを見ると「\'」(シングルクォート)や「\?」(クエスチョンマーク)なども載っていました。でもこれらの文字は、実際はエスケープシーケンスを使わなくても、ちゃんとコンパイルされ表示もされます。 「'」や「?」をC言語の文字列内で使うには、公式には「\」が必要なんでしょうか?

  • VBA ダブルコーテーション

    VBAについて、ダブルコーテーションの個数が理解できないものがありません。 セル範囲B3:B35に" 様"を追加するコード Sub 一括文字列追加() Range("B3:B35").Value = Evaluate("B3:B35&"" 様""") End Sub この Evaluate("B3:B35&"" 様""")の部分ですが、 Evaluate("B3:B35&" 様"")であれば納得できますが、どのような対応付けなのでしょうか? よろしくお願いします。

  • フローチャート作成ツールを教えてください

    テキスト記述からフローチャートを生成するツールを探しています。 記述形式はC言語でも、そのツールの独自形式でもかまいません。 フリーもしくは安価なものがいいです。 いいツールをご存知でしたら教えてください。 よろしくお願いします。

  • VBAでダブルコーテーション入りの数式をセルにセットしたい

    VBAにて下記質問があります。 複数の質問を連続して投稿するのもどうかと思い、 不慣れなもので、1投稿で2種類の質問を記載いたしましたが、 迷惑等になるのであれば、削除後複数投稿にて再度投稿したいと思いますので、遠慮なくご指摘下さい。 さて、本文ですが、 1.VBAにてExcelのあるセルに数式をセットしたいのですが、数式内にダブルコーテーションがある為、上手くセットできません。 2.VBAでRange関数のパラメータを可変にしたい。 1について、 セットしたい数式 =IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"",VLOOKUP(H23,ini!B36:D401,3))) セットしたいセルをH44とした場合、単純に .Range("H44").Value = "=IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"",VLOOKUP(H23,ini!B36:D401,3)))" このように書いてエラーになってしまいます。 ダブルコーテーションがあるので当然だとは思うのですが、 回避の仕方がわかりません。 また、2についてですが、 「ワークシートに書かれた値をRangeのパラメータとして代入したい。」 仮にSheet1のA2のセルにA~Fまでのいづれかの値が入るものとする。 Range関数の列の指定はA2の値を参照し、代入したい。 A2の値:C worksheets("sheet1").Range("〇1”).Value 〇にCが入るようにしたい。 当然、A2がFになったらFが代入されるようにしたい。 色々検索し、調べてみたのですが上手く見つけられませんでした。 VBA初心者である為、上記説明が分かりづらいかもしれませんが、 分かる方おりましたら、ご教授の程、よろしくお願い致します。

専門家に質問してみよう