Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


321 / 500 ページ ←次へ | 前へ→

【6797】Re: Range 引数
お礼  NK  - 05/11/11(金) 11:47 -

引用なし
パスワード
   ▼Gin_II さん:
>> DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
>> "テーブル名", "ファイル名(パス含む)", True, "シート名"
>
>Range 引数にシート名を指定する場合、
>"シート名!"
>のように指定する必要があります。

ありがとうございました。
"!"をつけるだけで上手くいきました。


>> 自力では解決できません。
>
>解決への努力を放棄しているように聞こえますけど ^^;

ヘルプも本などもない状況で、ネットで色々と検索したり
一応2時間近く格闘した結果だったのですが・・・
そう捉えられてしまう言い方に問題がありますね。すみません^^;
・ツリー全体表示

【6796】Re:クエリで質問があります
回答  YU-TANG WEB  - 05/11/11(金) 11:21 -

引用なし
パスワード
   こんにちは、YU-TANG です。

> 出来るでしょうが、私はそちらの方法に興味が無いので、パスします。
> 申し訳ありませんが、他の方のレスをお待ちください。

…と書いてから 48 時間経過しましたが、レスが付かないようですね。

こういうのは犯罪捜査と同じで、経験則的には 48 時間以内に被疑者を
検挙…じゃなくて、レスが付かないと、解決率が急激に低下する傾向が
あります。

オチの付かないツリーほど見苦しいものもないので、再レスを。

SELECT
 *,
 IIf(IsNull([再出荷日]), [出荷日], [再出荷日])       AS 開始日,
 IIf(IsNull([故障日]),Date(),[故障日])           AS 最終日,
 Format$([開始日], "mm\.dd") > Format$([最終日], "mm\.dd") AS 補正,
 DateDiff("m", [開始日], [最終日]) + [補正]        AS 月,
 (DateDiff("yyyy", [開始日], [最終日]) + [補正])
  & "年" & ([月] Mod 12) & "ヶ月"
  & ([最終日] - DateAdd("m", [月], [開始日])) & "日"   AS 寿命
FROM
 [電化製品]
WHERE
 [電化製品の寿命]
  = IIf(IsNull([故障日]), Date(), [故障日])
  - IIf(IsNull([再出荷日]), [出荷日], [再出荷日]);

上記 SQL 文をクエリの SQL ビューに貼り付けて保存してください。

簡易ロジックで、閏年対応を省いています。
2/29 が絡むと寿命が 1 日くらいズレるかもしれませんが、ご容赦を。

これを使うなら、SQL 文の意味を把握するようにしてください。
でないとメンテ不能になります。
クエリの SQL ビューとデザインビューを見比べるとか、関数ごとに
分割して解析するなどしてください。
その上で、不明点は質問してください。

それでは。
・ツリー全体表示

【6795】Re:横から失礼
発言  たん  - 05/11/11(金) 10:36 -

引用なし
パスワード
   掲示板では、協力すべきとは思います。

ただ、協力の為に、相手に「意見や回答(ヒント)を求める」事と、
相手に「1から作ってもらう」のは別だと思うのです。

# 後者は「協力」ではなく「一方的なねだり」です。
・ツリー全体表示

【6794】Re:横から失礼
発言  たん  - 05/11/11(金) 10:30 -

引用なし
パスワード
   > もし以下のコードに「Adsl.xls」の登録日時を取得して、その情報をKWの後ろに
>つける場合は、どのように修正すればいいでしょうか?

キツイ事を書くけど、このプログラムを作っているのは、Saiyamaさんなのでしょうか?
それとも、ロジックを提供した小僧さんなのでしょうか?

「どのように修正」とありますが、これでは、Saiyamaさんが作るプログラムではなく、
小僧さんが考えたロジックを、小僧さんがSaiyamaさんのやりたい事を含めたロジックに
修正し、この掲示板にアップしたものを、Saiyamaさんがコピーして、自分の
プログラムに埋め込むという事になります。

うがった見方をすれば、「小僧さんが作ったロジックを、自分のプログラムとして運用
する」事に変わりがありません。

まずは、小僧さん提供のロジックがどういう動きをするから、望みの結果が出ているの
かを、自身が把握すべきでしょう。

その上で、この要望を実現する為に「ここの部分をこう直したが、こういう結果になり、
欲しい結果と違う」という事を提示すれば、回答は得られると思います。

Saiyamaさんが今のプログラムを作る為にどのぐらいの努力をしてるのかは不明ですが、
今のままでは、私から見れば、「自分の案件を他人に考えてもらい、ロジックを作って
もらい、そのロジックをコピーしてるだけ」で、質問者自身が、このプログラムを
完成させる為に努力をしているとは、どうしても見えません。
(少なくとも、この掲示板のやり取り上では)

キツイ事を書いたけど、自分でも頑張ってみて下さい。
・ツリー全体表示

【6793】Re:クエリを変更しないで、テーブルを追加...
回答  てっちゃん  - 05/11/11(金) 10:10 -

引用なし
パスワード
   ▼チリ子 さん:
こんにちは
>ここで、テーブル構成を「Query_union」と同じようにすれば、テーブルの追加があってもクエリを
>変更する必要は無いと書いてありますが、、、詳しく教えて頂けないでしょうか?
一つは、クエリの変更云々とは関係ありませんが、テーブルを追加していくと、その分テーブルが
増えていきます。(当たり前ですが)
同種類のデータを入れておくのであれば、複数のテーブルよりも、一つのテーブルの方が管理
しやすいと思います。

もう一つは、前回の回答のクエリは、殆ど「Query_union」を元にして作成してあります。
テーブルが追加された時、この「Query_union」を作り変える必要がありますよね。
(もう一つテーブル作成クエリも)

ここで、「Query_union」を開いてみると、[No]、[TB]、[区分]の3つのフィールドを持った
テーブルのように見えるかと思います。

このようなテーブル(例えば「T_合体」)を作っておき、「Query_union」の代わりに、
「T_合体」を使用すれば、新しくデータが発生した場合(テーブルが追加になった場合)、
「T_合体」に追加していけば、「Query_union」を作り変える必要はないです。

また、
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=6651;id=access
の、4.のテーブル作成クエリで、「最新のテーブル」を使用していますが、
一つのテーブルだと、
SELECT * FROM Query_union WHERE (TB=DMin("TB","T_合体"));
というクエリーで、比較的簡単に抽出することが出来ます。
(現在の状況ですと
SELECT * FROM Query_union WHERE (TB=DMin("TB","Query_union"));
で確認できるかと思います。



もちろん、テーブルが追加されるということは、恐らく外部からの取り込みだと思いますので、
取込んだデータを、(加工して)「T_合体」に、追加する処理が必要になってきます。

処理する環境や条件などもありますので、「絶対に」この方が良いとは言えませんが、
クエリの訂正や、複数テーブルの管理と比べると、こちらの方が簡単だと思います。
・ツリー全体表示

【6792】マクロを含むExcelデータ取込時のメッセー...
質問  鮎美  - 05/11/11(金) 9:48 -

引用なし
パスワード
   おわかりの方がいたらご教授願います。

【環境】
 Windows XP, Office2000

【質問】
  Accessのあるテーブルに、Excelで作成した明細データを取り込むのですが、
 そのExcelブックにはマクロが含まれており、ブックをAccessからOpenする度に
 「開いているブックには、ほかのファイルへの自動リンクが設定されています」
 という旨のメッセージが表示されてしまいます。
  これを回避して、メッセージを表示させない方法があったら教えてください。
・ツリー全体表示

【6791】Re:レコード数を制御して、Excelへ吐き出し
質問  Saiyama  - 05/11/10(木) 22:26 -

引用なし
パスワード
   小僧さん
 今晩は、いただいたコードを使って、あるExcelの登録「日時」情報を取得し、
KWの後ろにつけることが成功しました。
 もし以下のコードに「Adsl.xls」の登録日時を取得して、その情報をKWの後ろに
つける場合は、どのように修正すればいいでしょうか?
 
Function ExcelExport20Recort()
'要参照 Microsoft DAO x.x Object Library
Dim xlsApp As Object
Dim xlsWkb As Object
Dim xlsSht As Object
Dim xName As String
Dim RS As DAO.Recordset
Dim QName As String
Dim i As Long
Dim j As Long
Dim LastRow As Long
Dim HinaName As String
HinaName = "C:\KW_Hina.xls"
Const lngMaxRow As Long = 20
  xName = "C:\KW.xls"
  QName = "クエリ名"
  LastRow = DCount("*", QName)
  Set RS = CurrentDb.OpenRecordset(QName, dbOpenSnapshot)
  Set xlsApp = CreateObject("Excel.Application")
  Set xlsWkb = xlsApp.Workbooks.Open(HinaName)
   With xlsWkb.Sheets("Sheet1")
   Do Until RS.EOF
   For i = 0 To RS.Fields.Count - 1
   .Cells(j * (lngMaxRow + 1) + 1, i + 1).Value = RS(i).Name
   Next
   .Cells(j * (lngMaxRow + 1) + 2, 1).CopyFromRecordset RS, lngMaxRow
    j = j + 1
   Loop
   End With
RS.Close: Set RS = Nothing
xlsWkb.SaveAs xName
xlsWkb.Close True: Set xlsWkb = Nothing
xlsApp.Quit: Set xlsApp = Nothing
MsgBox "エクスポート終了"
End Function
・ツリー全体表示

【6790】クエリを変更しないで、テーブルを追加する
質問  チリ子  - 05/11/10(木) 13:51 -

引用なし
パスワード
   こんにちはチリ子です。
先日、てっちゃんさんに、はすごくお世話になり、勉強をさせて頂きました。
その後、いろいろトライさせて頂きました。
時間が経ち、見ていただけるか心配ですが、またまた投稿させて下さい。

先日投稿した「複数テーブルのデータ集計2」↓下の方の文…
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=6561;id=access
>また、ある程度理解できたら、テーブル構造は、「Query_union」と同じになる
>ようにする事をお勧めします。
>抽出や集計の際の基本となる形であり、以後テーブルの追加があった場合、
>そのデータを追加するのみで済み、クエリ等を変更する必要も無くなるので。

ここで、テーブル構成を「Query_union」と同じようにすれば、テーブルの追加があってもクエリを変更する必要は無いと書いてありますが、、、詳しく教えて頂けないでしょうか?
テーブルが追加されても、クエリ等を触ることの無いようにしたいのです。
宜しくお願致します。
・ツリー全体表示

【6789】Re:【解決】Re:エクセル出力
回答  YU-TANG WEB  - 05/11/10(木) 12:47 -

引用なし
パスワード
   こんにちは、YU-TANG です。

> >回答が付いているにもかかわらず今のところ放置状態の
> >マルチポストにも、フィードバックを忘れずお願いします。
>
> 上記の件ですが、
> どういう意味かを教えて頂けないでしょうか?

マルチポストとは、複数の掲示板やメーリングリスト、ニュースグループ
等に、同一内容の投稿を行うことを指します。

具体例を挙げるなら、たとえば Access 会議室と Access VBA 質問箱に
同一内容の投稿を行った場合、マルチポストになります。

その後、両方の掲示板でそれぞれレスが付き、Access VBA 質問箱で
クローズしたとします。
この場合は、Access 会議室にも結果説明のレスを付ける必要があります。
これは単に「解決しました」とか「ありがとうございました」という
レベルのレスを指しているわけではありません。
過去ログを参照するユーザーと ROM ユーザー、回答者のために、
どのように解決したか、具体的に報告(フィードバック)する必要が
あります。
言い換えるなら、同じ問題を抱えた誰かが後で Access 会議室の過去ログ
を読んだときに、そこでのやり取りのみから あなたの取った解決方法を
知ることが可能であることを保証する必要がある、ということです。
これは無償で掲示板を利用したことに伴う一種の義務と捉えていただいて
結構です。

この義務がしばしば忘れられるケースがあるため、「念押し」をしたと
いうことです。

なお、上記のような対応が許されるのは、マルチポストを容認している
掲示板同士に限られるため、事前に各媒体の FAQ や参加規程、利用条件
等を確認する必要があります。
・ツリー全体表示

【6788】Re: パススルーか、ストアドなら?
お礼  通りすがり  - 05/11/10(木) 10:55 -

引用なし
パスワード
   たんさんのような厳格な方が推測で発言されるとは驚きです。
・ツリー全体表示

【6787】Re:集計機能
発言  通りすがり  - 05/11/10(木) 10:49 -

引用なし
パスワード
   # あ、礼じゃないよ。

話が早く済めば良いというものでは無いのでは?
と思うけどね。
・ツリー全体表示

【6786】Re:【解決】Re:エクセル出力
発言  Mino  - 05/11/10(木) 9:21 -

引用なし
パスワード
   ▼YU-TANG さん:
>念押しですが。
>
>回答が付いているにもかかわらず今のところ放置状態の
>マルチポストにも、フィードバックを忘れずお願いします。

上記の件ですが、
どういう意味かを教えて頂けないでしょうか?


 →答
  →礼

で終了だと思いますが、


 →答1
 →答2
  →礼(答1,2に対して)

では駄目という意味ですか?


 →答1
  →礼(答1に対して)
 →答2
  →礼(答2に対して)

にした方が良いですか?
フィードバックの意味がイマイチ判っていません・・・。
後、前者だとマルチポストになるんでしょうか?

何度も申し訳ないのですが、
宜しくお願い致します。
・ツリー全体表示

【6785】Re: Range 引数
回答  Gin_II  - 05/11/10(木) 9:13 -

引用なし
パスワード
   > DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
> "テーブル名", "ファイル名(パス含む)", True, "シート名"

Range 引数にシート名を指定する場合、
"シート名!"
のように指定する必要があります。


> 自力では解決できません。

解決への努力を放棄しているように聞こえますけど ^^;
・ツリー全体表示

【6784】Re:集計機能
お礼  haramama  - 05/11/9(水) 13:27 -

引用なし
パスワード
   ▼たん さん:

アドバイスありがとうございます。
集計欄でカウントを選択するんですね。
すみません、勘違いしてました。

実行できました!
感謝いたします。
・ツリー全体表示

【6783】Re:集計機能
質問  haramama  - 05/11/9(水) 13:22 -

引用なし
パスワード
   ▼たん さん:


ありがとうございますm(__)m

>データの種類  データの内容  ID_1    ID_1
>グループ化   グループ化   グループ化  カウント
>

上記のアドバイス通り実行してみたところ
”抽出条件が一致しません”
と表示されました。

カウントとしてあるところは、Count関数を式ビルダ
から入れました。

申し訳有りません、再度アドバイスいただけると助かります。
・ツリー全体表示

【6782】Re:集計機能
回答  たん  - 05/11/9(水) 12:19 -

引用なし
パスワード
   # あ、礼じゃないよ。

最初から元データを出しておけば、話は早かったのでは?
と思うけどね。
・ツリー全体表示

【6781】Re:集計機能
お礼  たん  - 05/11/9(水) 12:17 -

引用なし
パスワード
   横から失礼。

>が、私の説明が悪いので求めていた結果には
>なりませんでしたので、再度質問しても
>日付   時刻   データ内容   ID_1   ID_2  データの種類
>11/8   175001   富士     111    abc   りんご
>11/8   175001   富士     333    abc   りんご

>求める結果
>データの種類  データの内容  ID_1
> りんご     富士     111   1件
> りんご     富士     333   3件

というか、元のテーブルからなら、
データの種類  データの内容  ID_1    ID_1
グループ化   グループ化   グループ化  カウント

で取得出来る話。
それを元のクエリとどう組み合わせるかは別。
・ツリー全体表示

【6780】Re:集計機能
質問  haramama  - 05/11/9(水) 11:58 -

引用なし
パスワード
   ▼小僧 さん:

先日はありがとうございました。
教えて頂き、大変参考になりました。
が、私の説明が悪いので求めていた結果には
なりませんでしたので、再度質問しても
宜しいでしょうか?

以下のSQL文にカウント関数を入れて、ID_1の種類数を調べたいのです。

-------------------------------------------------------------------------------------------------------------------------------
SELECT 元テーブル.日付, 元テーブル.時刻, 元テーブル.データ内容, 元テーブル.ID_1, 元テーブル.ID_2, 元テーブル.データの種類
FROM 元テーブル
GROUP BY 元テーブル.日付, 元テーブル.時刻, 元テーブル.データ内容, 元テーブル.ID_1, 元テーブル.ID_2, 元テーブル.データの種類
HAVING (((元テーブル.データの種類) Like "りんご"))
ORDER BY 元テーブル.データ内容, 元テーブル.ID_1;

------------------------------------------------------------------------------------------------------------------------------

元テーブルは、以下のようになっています。

--------------------------------------------------------------

日付   時刻   データ内容   ID_1   ID_2  データの種類
11/8   175001   富士     111    abc   りんご
11/8   175001   富士     333    abc   りんご
11/8   175001   富士     333    abc   りんご
11/8   175001   富士     333    abc   りんご
11/8   175001   富士     555    abc   りんご
11/8   175001   富士     555    abc   りんご
11/8   175001   富士     555    abc   りんご
11/8   175001   富士     555    abc   りんご
11/8   175001   富士     666    abc   りんご
11/8   175001   つがる    222    abc   りんご
11/8   175001   つがる    888    abc   りんご
11/8   175001   王林     999    abc   りんご
11/8   175001   王林     222    abc   りんご
11/8   175001   王林     111    abc   りんご
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
100万件くらい続く

-----------------------------------------------------------------
求める結果

データの種類  データの内容  ID_1
 りんご     富士     111   1件
 りんご     富士     333   3件
 りんご     富士     555   4件
 りんご     富士     666   1件
 りんご     つがる    222   1件
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

------------------------------------------------------------------
件数が多く、Excelでは無理なのでAccessで実行したいと思っています。

教えていただけると大変助かります。
・ツリー全体表示

【6779】Re:Excelファイルからの取り込み方法につ...
発言  小僧  - 05/11/9(水) 11:12 -

引用なし
パスワード
   ▼NK さん:
こんにちは。

>インポートで詰まっています。
>現在ヘルプの無い環境でやっている為、自力では解決できません。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/off2000/vbaac/html/acmthactTransferSpreadsheet.asp

オンラインヘルプも活用なさってみてはいかがでしょうか。

「うまくいかない」だけではなく、
どんなエラーメッセージが出ているのかも回答のヒントになりますよ。

恐らく hasfieldnames の引数の問題だと思われますが…。


>1.MDB側でのみ持っている情報を保管する為,必要な情報のみ一時テーブルへ退避
>2.メインテーブルの全レコードを削除クエリで削除
>3.Excelから取込用テーブルへインポート
>4.取込用テーブルからメインテーブルへ必要なフィールドのみ追加
>5.一時テーブルから該当テーブルへ必要な情報を復元

MDB側でのみ持っている情報 と Excel から取り込んだデータを
同じテーブルに格納しなければいけない特別な理由はありますでしょうか。

特にないのでしたらクエリで結合させたものを
フォームやレポートの基にしていけばよさそうなのですが…。
・ツリー全体表示

【6778】Re:クエリで質問があります
お礼  TOMO  - 05/11/9(水) 9:52 -

引用なし
パスワード
   >出来るでしょうが、私はそちらの方法に興味が無いので、パスします。
>申し訳ありませんが、他の方のレスをお待ちください。

色々有難う御座いました。
本当に御手数をお掛け致しました。
・ツリー全体表示

321 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084689
(SS)C-BOARD v3.8 is Free