書式付でExcelからAccessへデータを移動する方法


ExcelからAccessのリッチテキストカラムへ書式付でデータをインポートする方法を探しています。
(書式付と言っているのはExcelセル内の文字色や文字サイズなどです。書式付の状態でAccessのリッチテキストカラムへInsertする方法を探しています)
VBAまたは.NETを使って取り込めると嬉しいです。
環境はWndows7、Office2010、VisualStadio2008~2010です。
良い方法があれば教えてください。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/10/07 23:31:45
  • 終了:2011/10/14 23:35:02

回答(0件)

回答はまだありません

  • id:cx20
    Access のリッチテキスト形式のフィールドは実際には、HTML 形式のようですので、
    HTML 形式でデータを登録すれば書式は設定されそうです。

    ■ Access Blog - Rich formatted text that includes data from fields
    http://blogs.office.com/b/microsoft-access/archive/2008/01/16/rich-formatted-text-that-includes-data-from-fields.aspx

    Excel のセルの情報を、クリップボード経由で取得したら
    HTML 形式で取得できるかも?ですが、API とか使わないと厳しいかもしれません。

    ■ HTML Clipboard Format
    http://msdn.microsoft.com/en-us/library/aa767917%28VS.85%29.aspx
    ■ クリップボード - プラットフォーム SDK
    http://msdn.microsoft.com/ja-jp/library/cc429251.aspx
  • id:cx20
    試してないですが、クリップボードの HTML データ(HTML Format)を取得するサンプルがありました。

    ■ クリップボードを操作する方法 | YU-TANG's MS-Access Discovery
    http://www.f3.dion.ne.jp/~element/msaccess/AcTipsClipboard.html
  • id:isohurabom
    > cx20さん
    返信ありがとうございます。
    なるほど、一度変換をかけるしかなさそうですね。
    お互いMS製品なので簡単に変換できる方法があるかと思っていましたが、なかなか見つからず悪戦苦闘しておりました。
    HTMLへ変換する方法で一度試してみます。ありがとうございました。
  • id:cx20
    試しに、クリップボードの内容を確認してみましたが、
    Excel 側の HTML 形式と
    Acess 側の HTML 形式で、
    構造が大幅に異なるようです。

    単純に、Excel 側の HTML 形式のデータをセットするだけではダメそうでした。

    ■ Excel 側の HTML 形式

    <html xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns="http://www.w3.org/TR/REC-html40">

    <head>
      :
    <中略>
      :
    <body link=blue vlink=purple>

    <table border=0 cellpadding=0 cellspacing=0 width=142 style='border-collapse:
    collapse;width:107pt'>
    <col width=142 style='mso-width-source:userset;mso-width-alt:4544;width:107pt'>
    <tr height=18 style='height:13.5pt'>
    <!--StartFragment-->
    <td height=18 class=xl65 width=142 style='height:13.5pt;width:107pt'>Hello, <font
    class="font6">Excel </font><font class="font0">World.</font></td>
    <!--EndFragment-->
    </tr>
    </table>
    </body>
    </html>

    ■ Access 側の HTML 形式

    <!--StartFragment--><HTML><BODY><div><font color=black>Hello, <strong>Excel </strong>World.</font></div></BODY></HTML><!--EndFragment-->

    以下は、参考情報です。クリップボードの内容を確認するツールです。

    ■ InsideClipboard - View the content of all formats stored in the Clipboard
    http://www.nirsoft.net/utils/inside_clipboard.html
  • id:isohurabom
    >cx20さん
    ここまで調べていただけるとは・・・。
    HTMLへの変換は難易度が高そうですね・・・。
    テキストの書式をDBに保存できれば良いので、Excelのセルを何とかrtf形式にし、rtfの状態でDBへ入れてみようと思います。
    大変参考になりました。丁寧に答えていただきありがとうございます。
  • id:cx20
    HTML 形式に変換する必要があるかと思ってましたが、
    Excel のセルを Access のテキストボックス(リッチテキスト形式)に貼り付けると書式付で貼り付けが行えるようです。

    Access 側で入力フォーム(リッチテキスト形式のテキストボックス)を用意し、VBA で DoCmd.RunCommand を用いることでコピー&ペースト等が行えるようですので、この方法で自動化できそうです。

    <自動化の方法(案)>
    1. Access 側の VBA にて Excel をオートメーションで起動
    2. 対象ファイルをオープン
    3. 対象シートを選択
    4. Excel のセルを選択
      Range("セル範囲").Select
    5. Excel のセルをクリップボードのコピー
      Selection.Copy
    6. Access 側で、テキストボックスにフォーカス移動
      Form.ControlName.SetFocus
    7. Access 側で、テキストボックスにクリップボードの内容を貼り付け
      DoCmd.RunCommand acCmdPaste
    8. 次のレコードへ移動
      → 対象データが無くなるまで 4~8 を繰り返す

    <参考情報>
    ■ How to: Send Information to the Clipboard [Access 2007 Developer Reference]
    http://msdn.microsoft.com/en-us/library/bb258151(office.12).aspx
    ■ How to: Retrieve Information from the Clipboard [Access 2007 Developer Reference]
    http://msdn.microsoft.com/en-us/library/bb258152(office.12).aspx


    > Excelのセルを何とかrtf形式にし、rtfの状態でDBへ入れてみようと思います。

    Excel のセル書式ですが、無駄に情報が多く、20文字程度のデータでも、RTF 形式で取得すると3000~4000文字のデータになるようです。

    ちなみに、手動で、Excel のセルを Access のテキストボックス(リッチテキスト形式)に貼り付けた場合、RTF 形式で360文字、HTML 形式で200文字程度に軽量化するようです。(ただし、軽量化に伴い、失われる情報もあるようですので、確認は必要かと思います。)

    あと、以前、紹介したクリップボードビューア(InsideClipboard)ですが、
    対応していないデータ形式があるようですので、別のツールも紹介します。

    ■ Windows Clipboard Viewer Help
    http://www.freeclipboardviewer.com/windowsclipboard.html
  • id:isohurabom
    > cx20さん
    おぉ、この方法は試した事が無いので試して見ます。
    rtfに変換するのはいろいろ問題があるようですね。試してみましたが色情報が失われるなど正確なコピーはできないようでした(やり方にもよるのでしょうがExcelはクリップボードにコピーする際に色情報を付与しないという記事をどこかで読んだ記憶があります)。Accessには詳しくなく、調査と実験を繰り返している状況でした。ここまで付き合っていただき、本当にありがとうございます。
  • id:cx20
    > 試してみましたが色情報が失われるなど正確なコピーはできないようでした

    太字、斜体、アンダーライン等の情報は引き継がれるようですが、色情報が失われるようですね。。。
    ワードパッドに貼り付けても、同様に色情報が失われるようですので、
    リッチエディットコントロールの仕様によるものかもしれません。

    少し強引な方法ですが、Word を経由することで、色情報を引き継がせることができるようです。

    [Excel](セル情報をコピー)
     ↓
    [Word](貼り付け&再度コピー)
     ↓
    [Access](テキストボックスに貼り付け)

    <参考情報>
    ■ Excelの指定のセルの文字列を個別に書式事取得しリッチテキストボックスに表示 - VBレスキュー(花ちゃん) Visual Basic,VS6.0,VB6.0,サンプル,Tips
    http://hanatyan.sakura.ne.jp/vbhlp/Excel13.htm
  • id:isohurabom
    > cx20さん
    本日試したところ、cx20さんに教えていただいた以下の方法で実現する事ができました。
    Excel → Word → Accessとコピー&ペーストを繰り返していく事で書式情報を失わずにすみます。
    真に有難うございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません