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
<参考情報>
■ 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
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
■ クリップボードを操作する方法 | YU-TANG's MS-Access Discovery
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsClipboard.html
返信ありがとうございます。
なるほど、一度変換をかけるしかなさそうですね。
お互いMS製品なので簡単に変換できる方法があるかと思っていましたが、なかなか見つからず悪戦苦闘しておりました。
HTMLへ変換する方法で一度試してみます。ありがとうございました。
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
ここまで調べていただけるとは・・・。
HTMLへの変換は難易度が高そうですね・・・。
テキストの書式をDBに保存できれば良いので、Excelのセルを何とかrtf形式にし、rtfの状態でDBへ入れてみようと思います。
大変参考になりました。丁寧に答えていただきありがとうございます。
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
おぉ、この方法は試した事が無いので試して見ます。
rtfに変換するのはいろいろ問題があるようですね。試してみましたが色情報が失われるなど正確なコピーはできないようでした(やり方にもよるのでしょうがExcelはクリップボードにコピーする際に色情報を付与しないという記事をどこかで読んだ記憶があります)。Accessには詳しくなく、調査と実験を繰り返している状況でした。ここまで付き合っていただき、本当にありがとうございます。
太字、斜体、アンダーライン等の情報は引き継がれるようですが、色情報が失われるようですね。。。
ワードパッドに貼り付けても、同様に色情報が失われるようですので、
リッチエディットコントロールの仕様によるものかもしれません。
少し強引な方法ですが、Word を経由することで、色情報を引き継がせることができるようです。
[Excel](セル情報をコピー)
↓
[Word](貼り付け&再度コピー)
↓
[Access](テキストボックスに貼り付け)
<参考情報>
■ Excelの指定のセルの文字列を個別に書式事取得しリッチテキストボックスに表示 - VBレスキュー(花ちゃん) Visual Basic,VS6.0,VB6.0,サンプル,Tips
http://hanatyan.sakura.ne.jp/vbhlp/Excel13.htm
本日試したところ、cx20さんに教えていただいた以下の方法で実現する事ができました。
Excel → Word → Accessとコピー&ペーストを繰り返していく事で書式情報を失わずにすみます。
真に有難うございました。