Access VBA質問箱 IV

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

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


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

【6291】ファンクションキーの使い方
質問  ジュン  - 05/9/14(水) 19:41 -

引用なし
パスワード
   ジュンです。 教えて下さい。

フォームのコマンドボタンを設定してクリックする方法で上手く動作している処理を マウスを使わずに ファンクションキーで同じ処理をしたいのですが上手くできません。
現在のコードと設定は以下の通りです。
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'---------ファンクションキーの設定----------------
  Select Case KeyCode
      Case vbKeyF1: cmd新規_Click
      Case vbKeyF2: cmd全表示_Click
      Case vbKeyF3: cmd削除_Click
     ' Case vbKeyF4:
      Case vbKeyF5: cmdクリア_Click
      Case vbKeyF6: cmd行クリア_Click
     ' Case vbKeyF7:
     ' Case vbKeyF8:
      Case vbKeyF9: cmd登録_Click
      Case vbKeyF10: cmd伝票_Click
     ' Case vbKeyF11: cmd印刷_Click
      Case vbKeyF12: cmd終了_Click
      Case Else
        MsgBox "無効なフンクションキーです", vbOK, "キー操作"
  End Select
  KeyCode = 0
  
End Sub

Private Sub cmd新規_Click()

  sw新規 = True
  Me!出庫No..TabStop = False
  swERR = False
  Ret = Edit_Clear(1)  <−画面をクリアして、カーソルを日付にセット
  
End Sub

この状態で実行するとF5キーは実行しますが 日付を入力しようとすると上記のメッセージ(無効なフンクションキーです)が表示されキー入力が出来なくなりました。
   KeyCode = 0 このコードをコメントにするとファンクションキーが動作しません。よい解決策をお教え下さい。お願いします。
・ツリー全体表示

【6290】Re:VBAでEXCELのセルの内容をファイル名に
お礼  KK  - 05/9/14(水) 18:18 -

引用なし
パスワード
   ▼てっちゃん さん:
こんにちわ。質問者のKKです。
返事が遅くなり申し訳ありません。

御教えいただいたことを元にいろいろ試したところ、
一番最後に名前を変えて保存するのではなく、
一番最初に名前を変えて保存し、最後は上書きの方法で
成功できました。ありがとうございます。

てっちゃんさんが教えてくださらなければ今頃まだ
分からないままでいたと思います。
おかげ様で大変助かりました。
本当にありがとうございました。
・ツリー全体表示

【6289】Re:テーブル間データの重複禁止について
回答  てっちゃん  - 05/9/14(水) 13:17 -

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

まず、管理番号を一覧できるクエリーを作ります。
(仮に「Q_管理番号一覧」と名付けます)
SELECT 管理番号, "テーブル_1" AS テーブル名 FROM テーブル_1
UNION
SELECT 管理番号, "テーブル_2" AS テーブル名 FROM テーブル_2
UNION
SELECT 管理番号, "テーブル_3" AS テーブル名 FROM テーブル_3
UNION
SELECT 管理番号, "テーブル_4" AS テーブル名 FROM テーブル_4

テーブル名や、その数は適宜変更してください。

> コマンドボタンを押すことで、それぞれのテーブルに保存されます。
この「保存イベント」内に次のコードを組み込みます。

Dim myMSG as String

myMSG = Nz(Dlookup("テーブル名", "Q_管理番号一覧", _
          "管理番号='" & Me.管理番号 & "'"), "")
  'Me.管理番号は、管理番号を入力するコントロール(テキストボックス)名

If myMSG = "" Then
  '〜追加処理〜
Else
  Msgbox myMSG & " で既に登録されています"
  '〜追加処理は中止〜
End If

動作未確認です(^_^;
が、こんな感じで大丈夫だと思います。

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

【6288】Re:パラメータでの抽出
発言  クロ  - 05/9/14(水) 13:13 -

引用なし
パスワード
   ヘルプで「パラメータ クエリを作成する」をご覧ください。
「ワイルドカード (*) を指定できるパラメータを使用する」が
あります。
・ツリー全体表示

【6287】テーブル間データの重複禁止について
質問    - 05/9/14(水) 9:58 -

引用なし
パスワード
   複数のテーブルに同じ項目のデータがあります。フィールド名称は[管理番号]です。この管理番号の重複を禁止もしくは、レコード保存の時に”重複あり”のメッセージを出したのですが、一つのテーブルの場合は、主キーの設定とか、インデックスの設定で対応していたのですが、複数となるとわかりません。

管理番号は入力フォームのテキストボックスからコマンドボタンを押すことで、それぞれのテーブルに保存されます。管理番号は文字列としています。例)2005-1234の半角9文字です。

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

【6286】Re:プリンタ情報を取得できません
お礼  junjun  - 05/9/14(水) 9:47 -

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

ご回答いただき、ありがとうございますm(_ _)m
小僧さんのご回答に沿って試してみました。
実はご回答をいただく前に、プリンタポートがあやしいと思い、
再インストール(最新版をDLL)などを試しておりましたところ、
全てのレポート(該当のAccess以外も全て)が開かなくなり、
パニクっておりました(^^;)

プリンタ情報の取得コードも、試してみました。
が、ヘルプの例文ではうまく取得できず、
Microsoftのサイトに掲載されていたコードを利用してみました。
正しい情報が認識されておりました・・・。
でも、同じエラーが出てしまっていました。

一夜あけまして、一度最初の状態に戻そうと思いまして
最新版ではなく、旧版(私のはDiskですが)のプリンタポートを
再インストールしまして、
試したところ、なんと全てが復活し、
「プリンタ情報を取得できません」エラーも出なくなりました!

私の見解なのですが、
最新版を再インストールした時に「プリンタ名」が自動で表示され、
その後旧版を再インストールした時は、最新版を消さずに行ったため、
「プリンタ名(1)」という名前が自動でつきました。
この(1)を既定のプリンタとしたため、
全てがうまくいったのではないかと。
(その他、ポートやデバイスなどは全く同じなので・・・。)
どこかで、「プリンタ名」を記憶しているのかもしれないですね。
正式な「プリンタ名」に(1)がつくことで、
再認識してもらえたのではないかと、思っています。

また、Gin_IIさんのご意見通り、特定のレポートが破損しているのかと
思い、もう一度一から作り直す覚悟もしておりました(^^;)
が、プリンタ名を変更したことで、全て開くことができるように
なりました。

小僧さん、Gin_IIさん、ありがとうございました。
これで仕事に取り掛かることができます、
本当にどうもありがとうございましたm(_ _)m
・ツリー全体表示

【6285】Re:VBAでEXCELのセルの内容をファイル名に
回答  てっちゃん  - 05/9/14(水) 9:14 -

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

> また、セルの内容ではなく適当な固定名にすれば確実に保存できるようです。
ということであれば、まず、
> 特定の位置にあるセルの内容を
疑ってみると良いでしょう。

Dim myNAME as String

myNAME = Cells(i + 1, k - 17).Value
'myNAME = oApp.Sheets("_O03").Cells(i + 1, k - 17).Value '?

Debug.Print myNAME

これらを組み込んで確かめてみてはいかがでしょう。
(変数に代入する必要はないかもしれませんが)


また、余談ですが、完成するまで
> On Error Resume Next
これはコメント化しておくと、不具合の原因が掴みやすく
なるのではないかと思います。

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

【6284】パラメータでの抽出
質問  かえら  - 05/9/13(火) 21:13 -

引用なし
パスワード
   こんばんは。
VBAではないかも知れませんが、教えてください。
パラメータで*(ワイルドカード)を使った抽出はできないのでしょうか?
・ツリー全体表示

【6283】VBAでEXCELのセルの内容をファイル名に
質問  KK  - 05/9/13(火) 19:54 -

引用なし
パスワード
   はじめまして。過去ログ等検索したのですが、見当たらなかったため、御教えください。
現在、ACCESSにて作成したテーブルをEXCELに出力し、それをVBAで編集しています。
処理自体は普通に進むのですが、特定の位置にあるセルの内容をシート名・ファイル名に
したいのですがうまくいきません。全くうまくいかないのではなく5回に1回くらいは
保存できたりします。また、セルの内容ではなく適当な固定名にすれば確実に
保存できるようです。

Public Sub MT_Work03A()
On Error GoTo Err_MT_Work03A

  Dim oApp As Object
  
  If Dir("D:\テンプレート\作業場\O03.xls") = "" Then  
    MsgBox "コールが存在しません。"
  Else
  
    Set oApp = CreateObject("Excel.Application")
    oApp.Visible = True
    'Only XL 2002 supports UserControl Property
    On Error Resume Next
    oApp.UserControl = True
    
    'ファイルを開く
    oApp.Workbooks.Open Filename:="D:\テンプレート\作業場\O03.xls"
  
    Dim myLastRow As Long
    Dim myLastCol As Integer
    Dim i As Long
  
    '----最終行
    myLastRow = oApp.Range("A1").End(xlDown).Row
    '----最終列
    myLastCol = oApp.Range("A1").End(xlToRight).Column
    i = myLastRow
    k = myLastCol

<<<罫線を引いたりの処理の後・・・>>>

  oApp.Sheets("_O03").Select
  oApp.Sheets("_O03").Name = Cells(i + 1, k - 17).Value
  
  oApp.Range("A1:A2").Select

    'ファイルを閉じる
    oApp.Workbooks("O03.xls").Activate
    
    oApp.ActiveWorkbook.SaveAs Filename:=("D:\" & Year(Date) & "年" & Month(Date) & "C" & "\Organization\" & Cells(i + 1, k - 17).Value & "-" & Format(Date, "mmmyyyy") & ".xls")

    oApp.Workbooks("O03.xls").Activate
    oApp.DisplayAlerts = False
    oApp.Workbooks("O03.xls").Save
    oApp.ActiveWorkbook.Close
       
    'Excelを閉じる
    oApp.Quit
    oApp.DisplayAlerts = True
    oApp.DisplayAlerts = True

  End If
  
Exit_MT_Work03A:
  Exit Sub

Err_MT_Work03A:
  MsgBox Err.Description
  Resume Exit_MT_Work03A
  
End Sub

すいません。全く分からないので是非お知恵をお貸しください。
宜しくお願いいたします。
・ツリー全体表示

【6282】Re:プリンタ情報を取得できません
回答  Gin_II  - 05/9/13(火) 18:27 -

引用なし
パスワード
   こんにちは。
ちょっとつっこみを ^^;

>現在の Access が保持しているプリンタ情報の確認です。
>
>Sub 既定のプリンタ名取得()
>  With Application.Printers(0)
>    MsgBox "デバイス名 : " & .DeviceName & vbCr _
>      & "ドライバ名 : " & .DriverName & vbCr _
>      & "ポート : " & .Port
>  End With  
>End Sub

> 使用バージョン:ACCESS2000
だと、使えないと思います。


なんとなく、特定のレポートが破損しているような気はしますね。
・ツリー全体表示

【6281】Re:重複なしで値を取得
お礼  Sta  - 05/9/13(火) 17:33 -

引用なし
パスワード
   ご回答ありがとうございます。
上手く出来ましたありがとうございました
・ツリー全体表示

【6280】Re:0で桁をそろえる方法
お礼  inpu  - 05/9/13(火) 17:31 -

引用なし
パスワード
   解決することが出来ました。
クロさん、ありがとうございました。
・ツリー全体表示

【6279】Re:0で桁をそろえる方法
回答  クロ  - 05/9/13(火) 17:14 -

引用なし
パスワード
   数値型でなくテキスト型にしてあげるしかないかと…
※見た目って一応書いたのですが...

一度クエリにして対象フィールドをFormat関数で以下のように
してからそのクエリをエクスポートするとか?

Format([対象フィールド],"000000000")
・ツリー全体表示

【6278】Re:0で桁をそろえる方法
質問  inpu  - 05/9/13(火) 17:00 -

引用なし
パスワード
   早速の回答ありがとうございます。
書式で0をつけることができました。
しかし、エクセルにエクスポートすると0がなくなってしまいました。
0を残すためにはどの様にしたらよいのでしょうか?
・ツリー全体表示

【6277】Re:重複なしで値を取得
回答  クロ  - 05/9/13(火) 16:16 -

引用なし
パスワード
   こんにちは、クロです。
地域テーブルの地区だけでグループ化すればいいのではないでしょうか?
・ツリー全体表示

【6276】Re:0で桁をそろえる方法
回答  クロ  - 05/9/13(火) 16:14 -

引用なし
パスワード
   こんにちは、クロです。
見た目だけでいいのなら「書式」に0を9個いれる。
では、どうでしょうか?
・ツリー全体表示

【6275】Re:プリンタ情報を取得できません
発言  小僧  - 05/9/13(火) 16:14 -

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

まず確認なのですが、

>ACCESSのレポートのみ、エラーが出ます。

「全ての Access 」なのか、他の Access なら大丈夫なのかを
試して頂けると解決に近くなるかもしれません。

(該当の Access のみでしたら全てのレポートなのかどうかも…)

あと、ヘルプの例文そのままですが、
現在の Access が保持しているプリンタ情報の確認です。

Sub 既定のプリンタ名取得()
  With Application.Printers(0)
    MsgBox "デバイス名 : " & .DeviceName & vbCr _
      & "ドライバ名 : " & .DriverName & vbCr _
      & "ポート : " & .Port
  End With  
End Sub

適当なモジュールに貼り付けて実行させ、
メッセージボックスの値が期待通りになっているかを
確認されてみるのはいかがでしょうか。
・ツリー全体表示

【6274】0で桁をそろえる方法
質問  inpu  - 05/9/13(火) 15:41 -

引用なし
パスワード
   こんにちは。
0で桁をそろえたいのですが、どうしたらよいのかわかりません。
100があるとすると100の前に0を6個つけて000000100と合計9桁にしたいです。
御教授お願い致します。
・ツリー全体表示

【6273】重複なしで値を取得
質問  Sta  - 05/9/13(火) 15:05 -

引用なし
パスワード
   こんにちは
はじめて、質問します。
テーブル(地区)のデータを重複なしで取得したいのですが
どのようにフォーム(メイン)のコンボボックスに設定するのか教えてください。

テーブル(地区)
No  地区  市町村 ← フィルド名
1   北海道  札幌 ← ここからデータ
2   北海道  旭川
3   北海道  函館
4   青森   青森
5   青森   弘前

上記のデータで地区の値をすべてコンボボックスに設定するのはわかるのですが
重複なしで設定の仕方がわかりません。
よろしくお願いします。
・ツリー全体表示

【6272】プリンタ情報を取得できません
質問  junjun  - 05/9/13(火) 14:26 -

引用なし
パスワード
   ACCESSを駆使しております。
どうにもわからなくなってしまったので、どなたか助けてください(T-T)

レポートを開こうとすると(プレビュー・デザイン共に)、
「[ポート]の[プリンタ名]のプリンタ情報を取得できませんでした。
このオブジェクトは、現在、使用できないプリンタに送信されました。」
というエラーが出てしまい、レポートが開きません。
Microsoftのサポートにて調べましたところ、
1.コンピュータの地域の設定が破損
2.プリンタに無効なネットワーク名が設定されている
3.プリンタドライバが破損
の原因が考えられるとのことでしたので、全て試みましたが、ダメでした。
また、メモリも多少関係していると聞きましたので、ACCESS以外のアプリケーションは
全て閉じた状態で試みましたが、これもダメでした。

その他のアプリケーションではプリンタは問題なく使えます。
ACCESSのレポートのみ、エラーが出ます。
おわかりになる方がいらっしゃいましたら、エラーの回避方法をお教えください。

OS:Windows2000
使用バージョン:ACCESS2000
プリンタ:FujiXerox DocuPrint C2220
プリンタはネットワークではなく、ローカルプリンタです

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

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