Microsoft Access 掲示板

views
4 フォロー
6,283 件中 2,641 から 2,680 までを表示しています。
5

あと次の段階でしたい事は旧バージョンのEXCELファイルを.xlsx形式に変換してACCESS2003のコードでエクスポートを試したのですが今度はエクスポートも出来ませんでした。

.xlsx形式は 2007以降のバージョンから実装されたものですので、2003の時にはなかったものなので、Access2003で.xlsx形式のエクスポートは不可能です。

そうするとエクスポートは出来るのですがEXCELが開けなくなりました(そのVBAコードでは)。理由が分からなくて困ってます。

エクスポートしてできたファイルを直接ダブルクリックすると開くことはできますか。
開けた場合、その時のエクセルのバージョンは2003ですか、2007ですか。

開くコードは 『Shell "excel.exe C:\Users\user\Desktop\○○\△△.xls", vbNormalFocus』で記述してます。

excel.exe のところをフルパスに変更したらどうでしょうか。

4
りんご 2022/04/05 (火) 23:45:01 c564b@0e907 >> 2

Shell "excel.exe C:\Users\user\Desktop\○○\△△.xls",

 詳しくないんだけど、excel.exeの部分もフルパスに変えてみるとか。

当面…SHELL関数で開かなくなった事だけ解決したいのですが、対処方はないでしょうか?

 Excel2003に戻すのはどうですか。また、当面、Windows10とサポート継続中のExcelを用意すると考えないのですか?

3
ゲッキョク駐車場 2022/04/05 (火) 17:13:24 cb55f@f6500

下記のサイトが参考になるかもしれません。

https://www.drk7.jp/MT/archives/001226.html
Excel 2003 と Excel 2007 を共存させる場合の留意点

2
ピース 2022/04/05 (火) 16:05:02 ddfe5@b32f8

りんごさんへアドバイスありがとうございました。確かに仰る通りですね。先の事を考慮して早急に色々と考え直してみます。それまで当面のExcelファイルにエクスポート出来るのにSHELL関数で開かなくなった事だけ解決したいのですが、対処方はないでしょうか? 互換ファイルになった兼ね合いだと思うのですが。コード記述を少し変更したらいいという問題ではないでしょうか?

1
りんご 2022/04/05 (火) 15:16:46 c564b@0e907

 まず、諸々のアップデートをもっと進めませんか?この質問が解決しても、結局、問題の先送りだから無意味でしょ。
 次に、VBAコードは白紙に戻して全部作り直しましょう。Excelをあれこれして、Accessに取り込んであれこれして、Excelにエクスポートとかも、外注してAccessに一本化しましょう。いつの時代の話ですか。

2

受注テーブルと下払いテーブルにわけるものでしょうか?

取引先との金銭の流れは、取引先→自社
下請けとの金銭の流れは、自社→下請け先
ということで、性質が違うものなので分けた方がいいように思います。

一つの仕事を一つの下請けだけならフィールドで対応できそうですが、複数に渡ることもあるのなら
1対多にする必要があり、テーブルが分かれてしまいますよね?

そういうことになると思います。

一例をあげると下記のような感じになるのでは。


T_受注

 受注ID 主キー
 受注日
 取引先CD
 金額
 内容


T_下払

 下払ID 主キー
 受注ID T_受注の外部キー
 発注日
 下請け先CD
 金額
 内容

1
りんご 2022/04/04 (月) 20:00:39 c564b@0e907

識別フラグなどで管理するものですか?

 フラグ管理は、なんちゃってデータベースになりがちでなので、かなり大変なテクニックらしい。

受注テーブルと下払いテーブルにわけるものでしょうか?… テーブルが分かれてしまいますよね?

 過去の質問が参考になるかも。このサイトのトピック検索に下請けと入力してみるのはどうでしょう。
 

テーブル構成についてアドバイスお願いします

 兎にも角にも、関数従属性です。あれこれに惑わされないようにありたいですね。

11

ちなみに、分割フォームだとしても、No5 の回答と同じ方法で実現できます。

10

新規で『txtA, txtB, txtC, cmdA, cmdB, cmdC』の名称でテーブルを作成して
テストいたしましたところ、3検索項目の検索に成功いたしました

テキストボックスとコマンドボタンをフォーム上に配置するというのが私の回答です。
テーブルを作成するという話はどこにもありません。

うまく話が通じていないようです。Accessの基本や用語がよく理解されていないように思います。

とりあえずうまく行っているようなのて、私の回答もここまでにしときます。

まずは、入門書か入門サイトで基本事項と用語を学習されることをお勧めします。

3

2022ー03ー05ー01T00:00:00.170Z
というデータは変換するとどのようになるのがご希望ですか。

「エクセルにように」ということはエクセルではできているということですか。
そのエクセルでの方法を提示してもらえますか。

変換結果はアクセスのテーブルへ出力するのでしょうか。
だとしたら、データ型は「日付/時刻型」にするのが、後々使いやすいでしょう。

2
遊佐 2022/03/31 (木) 09:50:09 2d6d4@8ba66

①データ例は正しい形です。
②データ型等そもそも分からないためそこから教えていただければと思います。

1
hatena 2022/03/30 (水) 23:35:35 修正

「2022ー03ー05ー01T00:00:00.170Z」

 
このデータ例は正しいものですか。正しいものを提示ください。
また、返還後の値も提示してください。
 

2022/03/30 17:19:22」のような形に変換して別の列に吐き出したいのですが、

 
別の列(フィールド)のデータ型はなんですか。

9
hiroton 2022/03/30 (水) 16:48:47 8401c@f966d

完成形のイメージが分からなかったので「そうではない」という返答を期待して「サブフォーム」を話題にしたんですが、

3検索項目の検索に成功いたしました

ということなんで忘れてもらっていいですよ

8

今年76歳になる超初心者です
いろいろとありがとうございます
これまで『帳票フォーム』の経験がなく
『単票フォーム』で作成、『分割フォーム』で検索をいたしておりました
『帳票フォーム』は経験がありませんでしたので
いろいろと戸惑いがありましたが

新規で『txtA, txtB, txtC, cmdA, cmdB, cmdC』の名称でテーブルを作成して
テストいたしましたところ、3検索項目の検索に成功いたしました
ありがとうございます

ただし、自分がイメージしていた検索結果が『分割フォーム』の表示とは違いますので
今回お教えいただいた検索結果から単票フォームへの接続方法を勉強してみます

>>画面という言い方がいまいちだけど
今後は『フォーム』と表現します

>>サブフォームとして3つ並べればいいだけなのでは
お恥ずかしいですが『サブフォーム』も未経験です
勉強いたします。

7
hiroton 2022/03/28 (月) 07:52:43 6df6c@f966d

画面という言い方がいまいちだけど単にサブフォームとして3つ並べればいいだけなのでは?

6
名前なし 2022/03/27 (日) 18:00:43 02bca@cc45c

ありがとうございます
VBAは、コピーしながら作成してきましたので
複数の検索画面がうまく作成できるかどうか
挑戦してみます。時間がかかると思いますが
結果報告いたします
本当にありがとうございます。

5

テーブル構成、フォーム設計、検索条件などの詳細が不明なのが下記と仮定して回答します。

検索対象フィールドは A, B, C の3つで、すべてテキスト型とします。

上記のフィールドを含むテーブルをレコードソースとする帳票フォームで検索結果を表示させるとします。

帳票フォームのフォームヘッダーに検索値入力用テキストボックス3つ、検索(抽出)実行コマンドボタン3つを配置して下記のような名前にします。
txtA, txtB, txtC, cmdA, cmdB, cmdC
さらに抽出解除用ボタンを配置して名前を cmd解除 とします。

コマンドボタンクリック時のイベントプロシージャを下記のように記述します。

Private Sub cmdA_Click()
    Me.Filter = "A like '" & Me.txtA & "'"
    Me.FilterOn = True
End Sub

Private Sub cmdB_Click()
    Me.Filter = "B like '" & Me.txtB & "'"
    Me.FilterOn = True
End Sub

Private Sub cmdC_Click()
    Me.Filter = "C like '" & Me.txtC & "'"
    Me.FilterOn = True
End Sub

Private Sub cmd解除_Click()
    Me.FilterOn = False
    Me.txtA.Value = ""
    Me.txtB.Value = ""
    Me.txtC.Value = ""
End Sub
4

ありがとうございました。ギブアップです
いろいろ書籍をみましても、一画面で複数項目の項目ごとの検索方法がありませんでしたので
SOSをしましたが、再度イチから出直してみます。ありがとうございました

3

そのコードでうまく行っているなら、それぞれのフィールド用の検索テキストボックス、コマンドボタンを配置して、
提示のVBAコードをそれぞれのコマンドボタンに設定すればいいだけだと思いますが、
どこまでできて、どのへんで躓いていますか。

とりあえずやってみて、躓いたらその時点でのコードを提示してください。

15
りんご 2022/03/26 (土) 02:11:16 c564b@0e907 >> 12

こちらYESで回答いたします

 すると、エラー3343は未解決だけど、一部データが出力されていない状況は改善されたという事になりましたか?

>> 4

ACCESS終了時はプロセスの終了を確認してもらっています。

 Excelのバックグラウンドプロセス終了も確認済でしょうか?要するに、Excel出力機能のコードも再確認するのはどうかな。オブジェクトの破棄を忘れていない事、いきなりプロパティを使っていない事。別のエラーのアレだから、無関係かもしれないけど念の為に。

ExcelApp As Object
Book As Object
Sheet As Object

‘いきなりCells(1,1).Value = “ほにゃらら”
Sheet.Cells(1,1).Value = “ほにゃらら”

Set Sheet = Nothing
Set Book = Nothing
Set ExcelApp = Nothing

【状況追記6】
 新しいエラー出現という事ですが、Excel取込からの帳票出力みたいなコードになっているわけではないんですよね?ちょっとよくわからないです。

 やれそうな事を捻り出してみましたが、正直力不足でした。助けになれずすまない。
 

2

現在は【検索目的】ごとに、検索画面を作成しております
見よう見まねで作動いたしておりますが
【検索目的】を変更する場合に
現在の画面を閉じて、別な画面を立ち上げております

Private Sub メニューを閉じる_Click()
  DoCmd.Quit acQuitPrompt

End Sub

Private Sub Form_Current()

End Sub

Private Sub 解除ボタン_Click()
 Me.FilterOn = False
 Me.検索.Value = ""
End Sub

Private Sub 検索ボタン_Click()

 Me.Filter = "行先 like'" & 検索 & "'"
 Me.FilterOn = True

End Sub

1

現在は、目的ごとに検索画面を立ち上げて検索しております
目的ごと3画面を作っております

これはVBAで実装してますか。
もしそうなら、そのVBAを提示してください。

14

りんご様
ご指摘ありがとうございます。

>YES or NOで教えて頂けますか?
こちらYESで回答いたします。

13
りんご 2022/03/22 (火) 15:19:00 c564b@0e907 >> 12

修正内容は、質問の【状況追記4】に記載の通り下記内容で修正致しました。
「→ 現在はSQL文を元に戻す処理を抜いたクエリ実行ファンクションを設けて
 上書きが走らないように修正致しました。」
本機能と関係ない別機能で、上書きが必要な個所のみ上書きする処理の入ったファンクションを呼んでいます。

 修正しましたという回答では、本当に原因が取り除かれたのか取り除いたつもりになっているのかわかりません。もう一度聞きます。INSERT INTO 一時テーブル名 SELECT;(…正しくは以下も続く)がINSERT INTO 一時テーブル名 SELECT 正しくは以下も続く;になった事を確認しましたか?修正前に戻すとINSERT INTO 一時テーブル名 SELECT;(…正しくは以下も続く)に戻る事を確認出来ましたか?YES or NOで教えて頂けますか?
 

12

りんご様
コメントありがとうございます。

修正内容は、質問の【状況追記4】に記載の通り下記内容で修正致しました。
「→ 現在はSQL文を元に戻す処理を抜いたクエリ実行ファンクションを設けて
 上書きが走らないように修正致しました。」
本機能と関係ない別機能で、上書きが必要な個所のみ上書きする処理の入ったファンクションを呼んでいます。

>If Not 別モジュール.IsNullOrEmpty(baseSQL) Then
こちらは別モジュールにある名前の通りの機能の自作メソッドです。

同じOffice365を使っているはずなのに、
人(環境)によりエラーを出してくれる場合と正常終了する場合があるというところで
原因追及に足をとられてしまっております。
ここが本当に分かりません…。

11
りんご 2022/03/22 (火) 13:14:19 c564b@0e907

>> 10

あれこれ修正した結果、

INSERT INTO 一時テーブル名 SELECT;(…正しくは以下も続く)

これがどう変化したのでしょう。SELECT以下も正しく続く事を確認出来たから、他の原因を探しているという事でしょうか。

上記方法にて、想定通りの内容であることを確認致しました。

 AccessVBAには、IsNullOrEmpty()は無いと思ったのですが。他言語の機能も使えるようにあれこれされていたんでしょうかね。

9
kitasue 2022/03/18 (金) 12:17:44 72148@12e91

全く同じプログラムを走らせて、ある時はパスワードを聞かれずインポートされ、ある時はパスワードを聞かれるので、戸惑っています。これは、未解明のまま、しばらく放ってあります。
ご確認どうもありがとうございました。

8

Workbooks.openで、パスワードを指定してブックを開いた状態で、
TransferSpreadsheetをすると、この時はエラーは発生せずに、
(1) そのままインポート出来たり、

上記は確認できました。当方のテストでは「(2) パスワードを聞かれ、」ということはないです。

7
kitasue 2022/03/17 (木) 08:36:06 72148@12e91

hatenaさん、返信ありがとうございます。
Workbooks.openで、パスワードを指定してブックを開いた状態で、
TransferSpreadsheetをすると、この時はエラーは発生せずに、
(1) そのままインポート出来たり、
(2) パスワードを聞かれ、パスワードを入力すると、インポート出来たり
します。どういう条件で(1)になるのか(2)になるのかは分かりませんでした。

6

今、確認してみたら、「外部テーブルのフォーマットが正しくありません。」というエラーになりますね。
回答した時に確認はしているはずだし、質問者さんも解決しているようなので、その後仕様変更でもあったのか、環境依存なのでしょうか。

ちなみに、回答時点では Office2019 32bit、現在は  Office2019 64bitです。

5
kitasue 2022/03/16 (水) 11:50:16 72148@12e91

横からすみません。パスワードがかかっているブックをTransferSpreadsheet acImportで取り込もうとすると、
「外部テーブルのフォーマットが正しくありません。」
というエラーになります。パスワードを外すと正常に取り込まれます。

パスワードがかかっていても普通にインポートはできます。
って本当ですか?

4

コンボボックスで会社名を選択するときに、マスターテーブルにない会社のデータを追加したいということなら、下記が参考になるでしょう。

■T'sWare Access Tips #471 ~コンボボックスから値集合ソース編集画面を表示する方法~

3

サブフォーム テキストボックスとコンボボックスを全面・背面に重ねてアクティブ切替

このようなUIの設計は下記で紹介しています。これの応用でなんとかできませんか。

アクティブの時だけボタンが表示されるコンボボックス - hatena chips

2

サブフォーム上の詳細セクションに会社名というテキストボックスがあるのですが、
表示が混在するため、演算フィールドとして表示しているので、ユーザーからの編集が
できません。ユーザー側からの編集を想定していないので問題ありませんでした。

具体的にどのような式が設定されているのでしょう。
DLookup関数を使った式でしょうか。

ところが、まれにユーザー側でデータを追加する必要性が生じてきまして、
会社名が演算フィールドなので登録ができないという問題が発生しています。

どこになんのデータを追加するのでしょうか。
会社のマスターテーブルに新規会社データを追加したいということでしょうか。

まずはその辺の詳細を提示してください。

1
りんご 2022/03/12 (土) 13:46:54 c564b@0e907

2列に表示したり、新規追加は別フォームを開いて追加などいろいろ考えましたが、
どれも運用がフィットしません。

 運用が妥協出来ないなら、プロジェクト中止撤退を検討するかなぁ。責任持てないよね。

テキストボックス(演算フィールド)とコンボボックス(入力時)を前面・背面にぴったり重ねて

 引き継ぎを繰り返すうちに、新規追加は別フォームを開いてに修正されるでしょう。

1
りんご 2022/03/12 (土) 00:38:34 c564b@0e907

 ほにゃららテーブルに、ほにゃららフィールド(YES/NO型)を作る。
 ほにゃららテーブルからほにゃららクエリを作る。
 ほにゃららクエリをコピペ、ほにゃらら追加クエリに変更。
  ほにゃららフィールドの抽出条件:True、追加先のテーブル:ほにゃららテーブル。
 ほにゃららクエリをコピペ、ほにゃらら更新クエリに変更。
  ほにゃららフィールドの抽出条件:True、レコードの更新:False。
 ほにゃららクエリからにほにゃららフォームを作る。
  ほにゃららボタンを配置。

Private Sub ほにゃららボタン_Click()
 DoCmd.GoToRecord , , acNext
 CurrentDb.QueryDefs(“ほにゃらら追加クエリ”).Execute
 CurrentDb.QueryDefs(“ほにゃらら更新クエリ”).Execute
 Me.Requery
End Sub
10

りんご様
ありがとうございます。

上記方法にて、想定通りの内容であることを確認致しました。
また、処理での上書きを完全に回避するために不必要な場合は
上書きしないようにも修正するように致しました。

ですがやはり、人を介すると
同じ現象になってしまうとのことでした…!

3
nanana 2022/03/11 (金) 17:06:56 e48ae@6eb0c

ありがとうございました。ページフッターに配置したテキストボックスで、グループヘッダーに配置したテキストボックスを参照するようにしました。お二方ともありがとうございました。

2
Siggy 2022/03/11 (金) 11:42:24 85a48@48767

hatena様

お世話になります。
あっさりできました。
ありがとうございました。

1

下記が参考になるでしょう。

AC2007以降の帳票フォームで画像表示 - hatena chips

上記では、添付ファイル型フィールドに画像を格納する方法と、画像ファイルをコントロールソースで参照する方法を紹介しています。

共有OneDrive上に作ったファイルを格納し、同じ階層に別フォルダを作り顔写真Jpegを社員番号で格納。

ということなら、コントロールソースで参照すればいいでしょう。