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

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

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

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

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

2386閲覧

Access:OLEオブジェクト型に組み込まれているWordファイルをエクスポートできますか?

poporon7

総合スコア22

VBA

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

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2022/08/22 02:51

編集2022/08/22 23:11

前提

Access2000で作成されたファイルのテーブルにOLEオブジェクト型フィールドがあり、そこにWordファイルが埋め込み登録されています。件数は1200件ほどで、Accessの容量が肥大化しているので作り変える必要があると思っています。

実現したいこと

このOLEオブジェクト型に登録されたファイルを、1フォルダ内に一括書き出ししたいのですが、方法が見つかりませんでした。ひとつひとつ手で開いて保存することはできますが、できればVBAを利用して一括で保存したいです。
VBAで可能•不可能も含めてご意見を伺えたらと思います。どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Accessフォーム経由でOLE型のフィールドを取り出し、Wordファイル化してみまました。
https://youtu.be/8fqAbKdApMk?t=538
↑のような感じでテストしました。

テーブル1
ID オートナンバー型
タイトル テキスト型
OLE型 OLE型

をテストで作り、
テストフォーム コントロール名 OLE型(まぎらわしくてスミマセン)に保存された、
埋め込まれたWordデータをファイルに保存しました。
イメージ説明

フォームをDoCmdで回す(ぉぃぉぃ、そんなことしていいのか?)
作成したのが、下記のコードです。WordObjectを参照設定して使ってみてください

Option Compare Database Option Explicit Private Sub コマンド8_Click() 'OLD型のフィールドに保存された、Wordオブジェクトを.docxファイル保存する Dim objDOC As Word.Document '参照設定して、Word.Documentで使う Dim strFNAME As String '保存するファイル名 Dim strPATH As String '保存先のパス strPATH = Application.CurrentProject.Path & "\文章\" 'DBの下に\文書\ DoCmd.GoToRecord , , acFirst '先頭レコードへ 'バカっぽいけど先頭へ 'フォーム上で、データがなくなるまでループ While Me.NewRecord = False '新規レコードになるまでループ strFNAME = strPATH & Me!ID.Value '保存場所付きファイル名はIDで作成※拡張子なし Debug.Print strFNAME 'OLD型がWord Documentなら、.Save2でファイル保存 'フォーム上のコントロール 中身.ObjectがDocumentか聞く If Me!OLE型.OLEType = acOLENone Then 'acOLENone コントロールには OLE オブジェクトは保存されていません。 '中身無しの時は、何もしない Else If TypeName(Me!OLE型.Object) = "Document" Then 'Word文章なら Set objDOC = Me!OLE型.Object 'いったん代入する objDOC.SaveAs2 strFNAME 'ファイル形式省略 いいのかよ・・・ End If End If '次のレコードをフォームに表示したいので、 DoCmd.GoToRecord , , acNext '次のレコードへ ぉぃぉぃ、フォーム上で移動かよ Wend MsgBox "終了しました" & strPATH & "を確認してください" End Sub

数件のデータでテストしかしていないので、
1000件回すと、
メモリエラー
オートメーションエラー
など、でないか、かなり心配ですが、

OLE型のWORDファイル化処理のヒントとなれば幸いです。

※コードの詳細説明は動画の頭から軽くやっているので、
https://youtu.be/8fqAbKdApMk
↑時間のある時に見て、トロイおっさんのデバッグを笑ってください・・・

投稿2022/08/30 15:09

ken3memo

総合スコア132

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

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

poporon7

2022/09/03 00:58 編集

Ken3memoさま、ありがとうございます! まさにこのフォーム。Word文書を移動しながら表示するというAccessなのです。表示したものをObjectとして取得してファイル保存すればよかったのですね。目からウロコでした。 もやもやがスッキリする楽しい動画も拝見いたしました。 この度は大変お世話になりお礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問