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

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

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

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

Access

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

Q&A

1回答

751閲覧

AccessからエクスポートしたExcelデータの関数が自動計算されない

ukana

総合スコア7

VBA

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

Access

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

0グッド

0クリップ

投稿2022/06/29 10:00

編集2022/06/30 09:28

Microsoft access 365で
データベース構築をしています。

VBAからAccessのテーブルをExcelデータに
エクスポートするのですが
VBA上のレコードセットからテキストとして
入力した関数が出力したExcelを開いた際に
自動計算されず困っています。

自動計算されない関数について
VBAでの記載箇所は以下です。

VBA

1Do Until rsa.EOF 2 j = j + 1 3 If rsa!間口 <> Null Or rsa!間口 <> "" Then 4 i = i + 1 5 rsa!照合1 = "1" 6 rsa!部品2 = "2" 7 rsa!処理1 = "=IF(E" & j & "=L" & j & ",TRUE,FALSE)" 8 rsa!処理2 = "=IF(MID(M" & j & ",11,15)=E" & j & ",TRUE,FALSE)" 9 rsa!処理3 = "=IF(F" & j & "=MID(M" & j & ",27,1),TRUE,FALSE)" 10 End If 11 rsa.MoveNext 12 Loop

上記のような関数等の入力をレコードセットにて
テーブルに書き出した後、
Excelのテンプレート形式のデータに
出力しています。

出力自体は成功し自動計算されないものの
セルを選択しEnter等で確定すると
関数の結果が正常に表示されます。

似たような現象がないか調べてみるとExcel側の
数式の自動計算の設定が原因として挙がっていましたが
こちらは自動に設定されていました。
また解決策として挙がるCtrl + Alt + F9でも
自動計算はされませんでした。
(一度Enter等で正常に表示させた関数に関しては
ショートカットキーで更新されます)

何かしらの書式設定が原因なのか
そもそも書き出し方が悪いのか分からず困っています。

出力したデータをそのまま使えるようにするには
どのような設定もしくは書き出し方をすればいいか
教えて頂きたいです。
一度出力したExcelデータへの個別対応は避けたく
Access側のVBA等の変更もしくは
Excelのテンプレート形式データの変更であると
助かります。

情報足りていなければ申し訳ありません。
追記致します。
よろしくお願い致します。

以下6月30日追記です。
どうやらフィールドの書式が原因な気がしますが
解決策はわからない状態です。

VBA

1With tdf.Fields 2 .Append tdf.CreateField("照合1", dbText, 50) 3 .Append tdf.CreateField("部品2", dbText, 50) 4 .Append tdf.CreateField("処理1", dbText, 50) 5 .Append tdf.CreateField("処理2", dbText, 50) 6 .Append tdf.CreateField("処理3", dbText, 50) 7 End With

dbTextで文字型になっており
書き込み先のセルの書式は標準なのですが
中身が文字型でEnterを押すことで
関数を認識しているのではないかと思います。
dbText以外の関数を認識するデータ型か
もしくはセルに対してEnterを押す作業に
該当するVBAでの処理が分かれば
解決するのではないかと考えています。
お知恵を貸して頂きたいです。

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

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

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

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

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

guest

回答1

0

ADOで作成しているからだと思うので、Excelオブジェクトを使って作成してみては?
もしくはCSVでもExcelなら数式は使えるようなのでCSVで出力してみるとか

投稿2022/06/29 10:35

RiaFeed

総合スコア2701

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

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

ukana

2022/06/29 12:15 編集

回答ありがとうございます。 >Excelオブジェクトを使って作成してみては? 素人で良く分からないのですが Excelオブジェクトとは何を指すのでしょうか? 検索したのですが具体的に何を指すか 教えて頂けると助かります。 Excelデータのことですか? Accessからデータを 取っているのでExcelだけで作成を 完結することは難しいです。 もしくはVBAのCreateObjectのことでしょうか? 出力形式はこちらの事情で申し訳ありませんが 後々の作業の関係で.xlsx形式を利用したいので CSV出力は避けたいです。
RiaFeed

2022/06/29 12:34

>もしくはVBAのCreateObjectのことでしょうか? そうです、Access内でSet xlApp = CreateObject("Excel.Application")でExcelオブジェクトを作成して それを使ってExcelデータを作成してみてはということです。
ukana

2022/06/30 00:28

説明ありがとうございます。 Excel.Application オブジェクトには formulaプロパティがあるのですね。 そちらを使うことでも数式として 認識をしてくれそうです。 ADOでは対応するようなプロパティは ないのか調べてはいるのですが良く分からず… Excel.Applicationでしか数式の認識は 難しいのですかね…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問