Access VBA質問箱 IV

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

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


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

【9974】Re:アクセス95から2000に移行後のエラー
質問  timtim E-MAIL  - 07/11/13(火) 23:14 -

引用なし
パスワード
   ▼クロ さん:
こんばんは ご心配かけてすみません、不在でしたので
連絡が遅くなってすみません。

下のように変えると又エラーがでました。
>おはようございます 
>「参照設定」で[Microsoft DAO 3.* Object Library] を参照する。
>※3.6があれば3.6を
>
>>Private Sub Form_Open(Cancel As Integer)
>>  Dim D_DB As Database, CTL As Recordset, TOK As Recordset
>>  Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)
>
>ここを
>Dim D_DB As DAO.Database
>Dim CTL As DAO.Recordset
>Dim TOK As DAO.Recordset
>Set D_DB = Currentdb
>
>以下省略
>
>としてみてはどうですか?
>※Ac2000ではデフォルトでDAOが参照されていないと思います。

Private Sub Form_Open(Cancel As Integer)
  Dim D_DB As DAO.Database
  Dim CTL As DAO.Recordset
  Dim TOK As DAO.Recordset
  Set D_DB = CurrentDb

  Set CTL = D_DB.OpenRecordset("Fコントロール")
    CTL.INDEX = "主キー"
    CTL.Seek "=", 1
  If CTL.NoMatch Then

上記のように入力すると
実行時エラー 3251
CTL.INDEX = "主キー" が黄色くなります。
入力が間違ってますか?
・ツリー全体表示

【9973】Re:フォルダ指定インポート
回答  Gin_II  - 07/11/13(火) 12:37 -

引用なし
パスワード
   フォルダ選択のダイアログを出すか、ファイルを開くで、複数ファイルを
選択できるようにするかになると思います。

フォルダの選択であれば、

  Dim f As Object
  Set f = CreateObject("Shell.Application"). _
  browseforfolder(0, "フォルダを選択", 0, 5)
  If Not f Is Nothing Then
    MsgBox f.Items.Item.Path
  End If

とか。
ファイルを開くであれば、いくつか方法がありますが、

[ファイルを開く] ダイアログを表示する方法
http://x7net.com/~access/AcTipsGetFileName.html

であれば、flags 列挙定数一覧 を確認し、複数選択可能にしてやるか。
・ツリー全体表示

【9972】フォルダ指定インポート
質問  しちゃ  - 07/11/13(火) 11:52 -

引用なし
パスワード
   指定したフォルダのテキストファイルをボタン一つで自動でテーブルにインポートする(フォルダを参照させる)処理を考えていますが良い発想が出てきません。
現在、ファイル一つ一つを参照しテーブルにインポートしているのですが、
フォルダを参照しその中身の複数あるテキストファイルを一括インポートできるようにしたいと考えています。

ご教授お願いします。
・ツリー全体表示

【9971】Re:アクセス95から2000に移行後のエラー
回答  クロ  - 07/11/12(月) 8:54 -

引用なし
パスワード
   おはようございます
「参照設定」で[Microsoft DAO 3.* Object Library] を参照する。
※3.6があれば3.6を

>Private Sub Form_Open(Cancel As Integer)
>  Dim D_DB As Database, CTL As Recordset, TOK As Recordset
>  Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)

ここを
Dim D_DB As DAO.Database
Dim CTL As DAO.Recordset
Dim TOK As DAO.Recordset
Set D_DB = Currentdb

以下省略

としてみてはどうですか?
※Ac2000ではデフォルトでDAOが参照されていないと思います。
・ツリー全体表示

【9970】アクセス95から2000に移行後のエラー
質問  timtim E-MAIL  - 07/11/9(金) 10:13 -

引用なし
パスワード
   初心者ですがよろしくお願いします。
昔、95で作成されたプログラムを2000に移行し、
走らせたところ、実行時エラー「94」:と表示され
下記のコードの※しるしがついたところがエアーと表示され
CTL![東亜建設コード]= Nullとなっている。

Private Sub Form_Open(Cancel As Integer)
  Dim D_DB As Database, CTL As Recordset, TOK As Recordset
  Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)
  Set CTL = D_DB.OpenRecordset("Fコントロール")
    CTL.INDEX = "主キー"
    CTL.Seek "=", 1
  If CTL.NoMatch Then
    MsgBox "コントロールF READエラー"
    Cancel = True: CTL.Close: Exit Sub
  End If
※ 東亜建設コード = CTL![東亜建設コード]
  有効日 = CTL![有効日]
  消費税率1 = CTL![消費税率1]
  消費税率2 = CTL![消費税率2]
  
  Set TOK = D_DB.OpenRecordset("M得意先")
    TOK.INDEX = "主キー"
    TOK.Seek "=", CTL![東亜建設コード]
  If TOK.NoMatch = True Then
    MsgBox "コントロールFに東亜建設コードを入力して下さい"
    Cancel = True: CTL.Close: TOK.Close: Exit Sub
  End If
  Me![端数区分] = TOK![端数区分]
  CTL.Close: TOK.Close
  
  Me![記事61] = "上記計"
End Sub
下記の部分を変更したら
Dim D_DB As Database, CTL As Recordset, TOK As Recordset
から
Dim D_DB As Database, CTL As Database, TOK As Database
に変更したら変更した上の行{Private Sub Form_Open(Cancel As Integer)}
が黄色く反転されます。
間違いがわかりません、よろしくご指導お願いします。
・ツリー全体表示

【9969】Re:SEEK
お礼  風間 E-MAIL  - 07/11/8(木) 22:40 -

引用なし
パスワード
   ▼Gin_II さん:
>>複数のフィールドに主キーを設定することはできますよ。
>>また、主キーではなくとも、インデックスさえ作成すれば、Seek メソッドは
>>使えます。
>
>ちなみに、Seek メソッドの構文は以下のようになっています。
>
>Seek メソッド(Access2003ヘルプより)
>recordset.Seek comparison, key1, key2...key13

Gin_II さんへ
前段で確認しないままメールを送信してしまいました。
上記回答を記述してしただいてるにもかかわらず失礼しました。
たすかりました。本当にありがとうございました。
またアドバイスよろしくお願い致します
・ツリー全体表示

【9968】Re:SEEK
お礼  風間 E-MAIL  - 07/11/8(木) 22:22 -

引用なし
パスワード
   ▼Gin_II さん:
>> それは2つのフィールドの値を一度に設定(SEEK)したいのです。
>> 主キーを1つのフィールドに設定した場合はSEEKできるのですが・・・・
>> 複数の指定はできないのでしょうか?
>
>複数のフィールドに主キーを設定することはできますよ。
>また、主キーではなくとも、インデックスさえ作成すれば、Seek メソッドは
>使えます。
>
>カレントレコードの検索_テーブルタイプ : DAO入門講座
>http://www.accessclub.jp/dao/14.html

Gin_IIさんありがとうございました。主キーを複数セットできるのは分かっているのですが実際のコマンドが???

例:rst1.Seek Criteria, adSeekFirstEQ
上記命令を記述したとして・・・これ自体が間違ってるかも?
Criteria変数に2つのフィールドの値のセットの仕方がわかりません

例えば
1.郵便番号フィールドが002-0092でかつ
2.住所フィールドが3条のものを検索したい
とするならばどのように???

もしお分かりでしたら、さらなるアドバイスをよろしくお願いします。
・ツリー全体表示

【9967】Re:AccessでExcel操作について
回答  小僧  - 07/11/7(水) 18:32 -

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

>Dim myXLS As ObjectFrame

これがちょっと解りませんが、
通常ですと Excel.Application ⇒ Excel.Workbook ⇒ Excel.WorkSheet
の順に処理を行って行くのが良いかと思われます。


Sub Excelへの処理()
'※要参照 Microsoft Excel x.x Object Library
Const FilePath = "C:\Temp.xls"
Dim xlsApp As Excel.Application
Dim xlsWkb As Excel.Workbook
Dim xlsSht As Excel.Worksheet
Dim a As Integer


  Set xlsApp = CreateObject("Excel.Application")
    xlsApp.Visible = True
    
  Set xlsWkb = xlsApp.Workbooks.Open(FilePath)
  Set xlsSht = xlsWkb.Sheets("Export_T")
  
  
  '----------------------------------------------
  '
  'ここにExcelの処理
  '
  '----------------------------------------------
  
  Set xlsSht = Nothing
  xlsWkb.Close True: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing

End Sub


> Export_T

対象のExcelファイルが TransferSpreadsheet メソッドにて
Access からのデータを吐き出したものでしたら、
そちらのメソッドを使わずに

CopyFromRecordset メソッド

を使ったほうが良さそうな気もしますね。
・ツリー全体表示

【9966】AccessでExcel操作について
質問  LUNA  - 07/11/7(水) 13:36 -

引用なし
パスワード
   よろしくお願いします。
(環境 Win XP pro Office2003 proです。)

Access VBAで既存のExcelBookを開き処理を行いたいのですが、
エラーにはならないのですが、処理結果が反映されていないです。
下記のコードはまだ作成途中のものですが、どこがおかしいでしょうか?
教えて下さい。お願い致します。

Dim myXLS As ObjectFrame
Dim ws As Worksheet
Dim maxrows As Long
Dim a As Integer

  Set myXLS = GetObject(filepath, "Excel.Sheet")
  myXLS.Application.Visible = True------------------excelは開きますが既存のbookが表示されない。
  
  Set ws = myXLS.Worksheets("Export_T")
  ws.Select
  
  maxrows = ws.UsedRange.Rows.Count
  
  ws.Columns("A:B").Insert Shift:=xlToRight-------処理されていない

  For a = 2 To maxrows
    
  Next
  
  myXLS.Application.Quit
・ツリー全体表示

【9965】Re:メール送信について
お礼  LUNA  - 07/11/7(水) 13:32 -

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

出来ました!いろいろとありがとうござます。
感動ものです。
・ツリー全体表示

【9964】Re:行と列の入れ替え
回答  小僧  - 07/11/7(水) 9:45 -

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

ご提示されたデータだけですと、ちょっと難しいです。

> 部課コード    返品金額    摘要
> 11032        60    UYS-230
> 11032        30    UYS-231


MS技術情報より MDB のレコードの並び順について
h tp://support.microsoft.com/default.aspx?scid=kb;ja;834927
(直リンク禁止ですので補完して下さい)


ある日突然上記の2件のレコード順序が入れ替わる場合もありますので
どちらを摘要1になるかを決める事ができません。

主キー列があればどうにかクロス集計クエリで片付きそうですね。

SEQ  部課コード    返品金額    摘要
 1  11022        100    UYS-232
 2  11029        55    未決裁
 3  11032        60    UYS-230
 4  11032        30    UYS-231
 5  11049        90    RIRB-00732



TRANSFORM Min(テーブル名.摘要) AS 摘要の最小
SELECT テーブル名.部課コード, Sum(テーブル名.返品金額) AS 返品金額の合計
FROM テーブル名
GROUP BY テーブル名.部課コード
PIVOT "摘要_" & DCount("*","テーブル名","部課コード =" & [部課コード] & " AND SEQ <= " & [SEQ]);

まずはここまで…。
・ツリー全体表示

【9963】Re:SEEK
発言  Gin_II  - 07/11/7(水) 8:32 -

引用なし
パスワード
   >複数のフィールドに主キーを設定することはできますよ。
>また、主キーではなくとも、インデックスさえ作成すれば、Seek メソッドは
>使えます。

ちなみに、Seek メソッドの構文は以下のようになっています。

Seek メソッド(Access2003ヘルプより)
recordset.Seek comparison, key1, key2...key13
・ツリー全体表示

【9962】Re:SEEK
回答  Gin_II  - 07/11/7(水) 8:26 -

引用なし
パスワード
   > それは2つのフィールドの値を一度に設定(SEEK)したいのです。
> 主キーを1つのフィールドに設定した場合はSEEKできるのですが・・・・
> 複数の指定はできないのでしょうか?

複数のフィールドに主キーを設定することはできますよ。
また、主キーではなくとも、インデックスさえ作成すれば、Seek メソッドは
使えます。

カレントレコードの検索_テーブルタイプ : DAO入門講座
http://www.accessclub.jp/dao/14.html
・ツリー全体表示

【9961】SEEK
質問  風間 E-MAIL  - 07/11/6(火) 23:27 -

引用なし
パスワード
   どなたか分かる方がいらっしゃいましたら教えてください
FINDではなくSEEKでデータの検索をすれば早く検索できるとある雑誌に掲載されたたのですが、SEEkを使用して検索したいのですが条件があります。
それは2つのフィールドの値を一度に設定(SEEK)したいのです。主キーを1つのフィールドに設定した場合はSEEKできるのですが・・・・複数の指定はできないのでしょうか?
・ツリー全体表示

【9960】行と列の入れ替え
質問  りょう  - 07/11/6(火) 14:09 -

引用なし
パスワード
   アクセスのテーブル又はクエリの行と列の入れ替えをしたいのですが、
方法はありますでしょうか?

1.下記のようなデータテーブルの集計を行います。

部課コード    返品金額    摘要
11022        100    UYS-232
11029        55    未決裁
11032        60    UYS-230
11032        30    UYS-231
11049        90    RIRB-00732

2.集計の結果に、各データの摘要を表示させたい。
部課につき、5個以内の摘要が見込まれます。

部課コード    返品金額    摘要1       摘要2
11022 計        100    US-232    
11029 計        55    未決裁    
11032 計        90    US-230       US-231
11049 計        90    RIRB-00732    
総計        335        

このようにするには、部課コードの重複しているデータの摘要を
行列入れ替えることにより、摘要1、摘要2として
集計結果に反映できないものかと考えました。

わかる人がいたら、教えてください。
宜しくお願い致します。
・ツリー全体表示

【9959】Re:ACCESSのレポートのcaptionについて
発言  Gin_II  - 07/11/2(金) 14:25 -

引用なし
パスワード
   >何とかしてレポートのCaptionを変更して、レポートを
>ACROBATで印刷しPDFを作成したいのですが、
>分かる方がおられましたら教えて頂けないでしょうか?

Acrobat で出力ということにこだわらなければ、

ReportToPDF - レポートを簡単 PDF 出力
http://x7net.com/~access/index.php?option=com_smf&Itemid=33&topic=144.msg454#msg454

こういった方法もあると思います。
・ツリー全体表示

【9958】ACCESSのレポートのcaptionについて
質問  ひさゆき  - 07/11/1(木) 20:56 -

引用なし
パスワード
   はじめまして。
ひさゆきと申します。

ACCESS97で、レポートをACROBATで印刷しようとしています。
そこで、レポートのファイル名を指定したいのですが
どうすればいいのか分からなくて途方にくれています・・・

レポートのオープンイベントでCapitonを変えても
元の名前のままでPDFファイルが作成されてしまいます。

何とかしてレポートのCaptionを変更して、レポートを
ACROBATで印刷しPDFを作成したいのですが、
分かる方がおられましたら教えて頂けないでしょうか?

よろしくお願いします。
・ツリー全体表示

【9957】データ入力で
質問  初心者A  - 07/11/1(木) 14:51 -

引用なし
パスワード
   半角英数と半角カナの両方の入力を可能にしたいのですが

御指導おねがいします。
・ツリー全体表示

【9956】Re:メール送信について
発言  小僧  - 07/11/1(木) 13:33 -

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

> もともとがエクセルのでのコードだったので
> SendMailByCDO

Excel でお仕事
h tp://www.asahi-net.or.jp/~ef2o-inue/download/sub09_020_055.html

こちらをご覧になられたのでしょうか?

もしそのようでしたら、本来はHPの管理人様宛てに質問されるのが
筋だと思われますよ。


まぁ、ありがちな所としては、ページの中ほどにある

> 送信の「中核部分」。まずは「参照設定」版です。


こちらを記載していない為、
呼び出し先が見つからない、のような気もしますが…。
・ツリー全体表示

【9955】Re:メール送信について
質問  LUNA  - 07/11/1(木) 13:12 -

引用なし
パスワード
   ▼小僧 さん:
回答ありがとうございます。

hi-hoの方でいろいろ見てみたのですが、下記のコードを参照しました。
もともとがエクセルのでのコードだったので、セルの参照をテキストボックスに
変更しました。
参照設定では、Microsoft CDO for Windows 2000 Liblaryにチェックを入れました。
コードの中の
  strMSG = SendMailByCDO(MailSmtpServer, MailFrom, MailTo, "", "", _
    MailSubject, MailBody)
の部分「SendMailByCDO」でsubまたはfunctionが定義されてないとエラーが発生します。

Excelでは動いたのですが、Accessでは動きません。なぜでしょうか??
  
  Dim MailSmtpServer As String
  Dim MailFrom As String
  Dim MailTo As String
  Dim MailSubject As String
  Dim MailBody As String
  Dim strMSG As String
  
  If MsgBox("メールを送信します。" & vbCr & _
    "SMTP,発信者,宛先等は正しいですか?", vbYesNo) <> vbYes Then Exit Sub
  
  MailSmtpServer = Me!txt1.Value
  MailFrom = Me!txt2.Value
  MailTo = Me!txt3.Value
  MailSubject = Me!txt4.Value
  MailBody = Me!txt5.Value
  
  strMSG = SendMailByCDO(MailSmtpServer, MailFrom, MailTo, "", "", _
    MailSubject, MailBody)
  
  If strMSG <> "OK" Then MsgBox Mid(strMSG, 3)
・ツリー全体表示

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