Access VBA質問箱 IV

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

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


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

【10420】Re:AccessVBAとExcelVBAの連携について教...
質問  lily  - 08/6/18(水) 12:58 -

引用なし
パスワード
   小僧さん、こんにちは。
ご教授ありがとうございます。
ExcelでもSQLが発行できるのは、なんとなく知っていましたが、今ひとつ書き方がわかりません。
それで、あと2つほど教えてください。

1.パスの指定を定数ではなく変数でするようにするには、
どのようにソースを変更したらよいのでしょうか?
ちなみにファイルの呼び出し先と吐き出し先のフォルダの指定をして変数にパスを入れるところはすでに出来ています。

2.sql文のFROM句のところですが、「Sheet1」ではなく「[Sheet1$]」と指定するのはなぜですか?最後の「$」には何か意味があるんですよね。
初歩的な質問で申し訳ありません。

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

【10419】コンボボックスのキークリック時動作の設...
質問  rim  - 08/6/18(水) 1:16 -

引用なし
パスワード
   いつも参考にさせてもらっています。
すごく簡単な質問かもしれないですが、表題について質問させてください。
Accessは2003 OSはXPを使用してます。

フォームにコンボボックスが複数ありまして全てのコンボボックスの
キークリック時イベントに以下の処理をしています。

(コンボボックスでEnterが入力された時コンボボックス内で改行する処理です。)
Private Sub コンボボックス名_Keydown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn And Shift = 0 Then
KeyCode = 0
SendKeys ("^{Enter}")
End If
End Sub
某掲示板から参照させていただきました。

現在では上記の処理をコンボボックスの数ぶん書いているのですが
それを短縮したいと思っています。

短縮方法としては全てのコンボボックスのキークリック時イベントへ
「=Combo_Keydown(KeyCode,Integer)」を設定し
コードをFunction Combo_Keydown(KeyCode As Integer, Shift As Integer)
に直しどのコンボボックスからも同じコードを読ませようと考えていますが
フォームからの引数が上手く渡らず
「オートメーションオブジェクト'KeyCode'は含まれません。」
とエラーが出てしまいます。

キークリック時イベントへの式の書き方をご教授ください。
上記の式を入力したところ自動で
「=Combo_KeydownDown([KeyCode],[Shift])」になっていました。
・ツリー全体表示

【10418】Re:AccessVBAとExcelVBAの連携について教...
回答  小僧  - 08/6/17(火) 11:39 -

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

> ExcelのVBAでAccessの既存テーブルにデータをインポートし、
> さらにイベントプロシージャをExcelから直接実行し
> 最終的に作成したクエリをExcelの既存ファイルにエクスポートしたい

Excelでもからも SQL 文は発行できるので、
あえて Access を使わなくてもいけそうな気がします。

また、オブジェクトの作成・削除を繰り返すような動作は
不安定になりがちなので気をつけましょう。

以下、Excelだけで処理を済ます例です。

Sub DataExport2()
'要参照 Microsoft DAO x.x Object Library
Const InXls = "C:\Data.xls"  '元データのExcel
Const OutXls = "C:\Out.xls"  '出力先のExcel

Dim WS As DAO.Workspace
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim strSQL As String
Dim i As Long

  Set WS = DBEngine.Workspaces(0)
  Set DB = WS.OpenDatabase(InXls, False, False, "EXCEL 8.0;HDR=YES;")

  'データが Sheet1にある場合
  strSQL = "SELECT sechi1, tranzak " _
      & "FROM [Sheet1$] " _
      & "WHERE sechi1 IN (" _
      & "         SELECT sechi1 " _
      & "         FROM [Sheet1$] " _
      & "         GROUP BY sechi1 " _
      & "         HAVING Count(sechi1) > 1)"
     
  
  Set RS = DB.OpenRecordset(strSQL, dbOpenSnapshot)

'吐き出し先のExcelが既にある場合は削除
  On Error Resume Next
    Kill OutXls
  On Error GoTo 0

  With Workbooks.Add
  
  'ヘッダ行の出力
    For i = 1 To RS.Fields.Count
      .Sheets("Sheet1").Cells(1, i).Value = RS.Fields(i - 1).Name
    Next i
  
  'データの出力
    .Sheets("Sheet1").Range("A2").CopyFromRecordset RS
    .SaveAs OutXls
    .Close
  End With
    
  
  RS.Close: Set RS = Nothing
  DB.Close: Set DB = Nothing
  WS.Close: Set WS = Nothing

  MsgBox "終了!"

End Sub


こんな感じでいかがでしょうか。
・ツリー全体表示

【10417】AccessVBAとExcelVBAの連携について教え...
質問  lily  - 08/6/13(金) 17:16 -

引用なし
パスワード
   ExcelのVBAでAccessの既存テーブルにデータをインポートし、さらにイベントプロシージャをExcelから直接実行し最終的に作成したクエリをExcelの既存ファイルにエクスポートしたいのですが、Accessのイベントプロシージャ内のエクスポートの構文でエラーが発生します。エラーメッセージは「実行時エラー'3010':テーブル'Q_jyufuk'は既に存在しています。」です。
以下にソースを書きます。
【Excel側】
Sub DataExport()

Dim ObjAccess As Access.Application
Dim filename As String
Dim stFilePass As String  'A.xlsのPath
Dim MySql As String

'Accessを開く
  Set ObjAccess = CreateObject("Access.Application")
  ObjAccess.OpenCurrentDatabase FilePass10, False

  ObjAccess.Visible = True
  
'ExcelDataをAccessテーブルへインポート
  ObjAccess.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_Copy", _
    FilePass6, True, _
    "Import_Area"
    
  ObjAccess.Run "ReCount"
  
  Set ObjAccess = Nothing
End Sub

【Access側】
Option Compare Database
Option Explicit
Public MyFilePass As String         'エクスポート先のフルパス
Sub ReCount()

Dim db As DAO.Database
Dim qe As DAO.QueryDef
Dim MySql As String
Dim df As String
Dim txt_pass As String          'A.xlsのファイルが存在するフォルダ名取得
Dim Mcount As Integer

Set db = CurrentDb()

'シリアルNO重複データ抽出のSQL文
 MySql = "SELECT sechi1,Count(sechi1) AS カウント " _
    & "FROM T_Copy " _
    & "GROUP BY sechi1 HAVING ((Count(sechi1) >= 2))"
'SQL文をもとに選択クエリを作成
 Set qe = db.CreateQueryDef("Q_Count", MySql)
 
'重複データのID抽出のためのSQL文
 MySql = "SELECT Q_Count.sechi1,T_Copy.tranzak " _
    & "FROM Q_Count " _
    & "INNER JOIN T_Copy ON Q_Count.sechi1 = T_Copy.sechi1 " _
    & "ORDER BY Q_Count.sechi1"
'SQL文をもとに選択クエリを作成
 Set qe = db.CreateQueryDef("Q_jyufuk", MySql)
 
  df = ComdlgGetFolderStr("ファイルの読込/保存をするフォルダを指定してください。")
    txt_pass = df
    MyFilePass = txt_pass & "\" & "A.xls"
  
'重複データのエクスポート
 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Q_jyufuk", MyFilePass, True

'T_Copyのデータ削除のSQL文
 MySql = "DELETE * FROM T_Copy"
 db.Execute MySql

'作成したクエリを削除
 DoCmd.DeleteObject acQuery, "Q_Count"
 DoCmd.DeleteObject acQuery, "Q_jyufuk"
 
 db.Close: Set db = Nothing
End Sub

上記のようにソースを書いたのですが「'重複データのエクスポート」の構文でエラーメッセージが出ます。
Access単独だと問題なく動きます。

ネットや教本で調べましたがわかりませんでした。
どなたかわかる方、ご教授ください。
よろしくお願いします。
・ツリー全体表示

【10414】Re:指定のテーブルをCSV形式で出力
発言  初心者A  - 08/6/9(月) 11:23 -

引用なし
パスワード
   マクロのテキスト変換でよければ以下の要領で

まずは実際にテーブルをエクスポートしてください
その時にウィサードの完了をクリックする前に
左下に設定(V)をクリックし、保存をクリックしてください。


区切記号付きエクスポート
定義名・・・ エクスポートした時に保存した定義が候補に出てくるはずです
      それを選択してください
テーブル名
ファイル名 ・・・出力先をドライブから E:\XMDB\MASTER.csv な感じです
・ツリー全体表示

【10413】Re:指定のテーブルをCSV形式で出力
回答  Gin_II  - 08/6/6(金) 17:51 -

引用なし
パスワード
   >VBAで指定のテーブルをCSV形式で出力する事はできますか?

TransferText メソッドをヘルプ等で確認してください。
・ツリー全体表示

【10412】指定のテーブルをCSV形式で出力
質問  あごひげ  - 08/6/6(金) 9:20 -

引用なし
パスワード
   はじめまして。

VBAで指定のテーブルをCSV形式で出力する事はできますか?
すみません、初歩的な質問かもしれませんが。

もしよろしければお教えください。
・ツリー全体表示

【10411】Re:画像のサイズ調整
回答  heavenlycastle2003  - 08/5/29(木) 23:37 -

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

>イメージコントロールを使っているということでいいのでしょうか?
>
>であれば、OLEサイズプロパティというものがありますので、
>そこで "ストレッチ" とかを使うってことではダメなのでしょうか?

OLEサイズプロパティ の "ストレッチ" ではなく、"ズーム"の設定にしました。

・可能ならば、
  画像を取り込んだ後、調整が可能な様に拡大・縮小ボタンを作って配置したいのです。
  ヒントになるものや参考になるものがあったら、教えて下さい。
・ツリー全体表示

【10410】Re:画像のサイズ調整
回答  heavenlycastle2003  - 08/5/29(木) 21:51 -

引用なし
パスワード
   ▼Gin_II さん:
>>フォームにイメージを配置して、画像を載せています。
>>ですが、画像は元の大きなサイズの為、画像の一部分しか見えない状態です。
>>これをイメージの範囲内に画像を収めようとしています。
>
>イメージコントロールを使っているということでいいのでしょうか?
>
>であれば、OLEサイズプロパティというものがありますので、
>そこで "ストレッチ" とかを使うってことではダメなのでしょうか?


返事有難うございました。 早速やってみます。
・ツリー全体表示

【10409】Re:画像のサイズ調整
回答  Gin_II  - 08/5/29(木) 15:15 -

引用なし
パスワード
   >フォームにイメージを配置して、画像を載せています。
>ですが、画像は元の大きなサイズの為、画像の一部分しか見えない状態です。
>これをイメージの範囲内に画像を収めようとしています。

イメージコントロールを使っているということでいいのでしょうか?

であれば、OLEサイズプロパティというものがありますので、
そこで "ストレッチ" とかを使うってことではダメなのでしょうか?
・ツリー全体表示

【10408】画像のサイズ調整
質問  heavenlycastle2003  - 08/5/29(木) 14:13 -

引用なし
パスワード
   フォーム(いずれはサブフォームとして使う予定)作成中です。

フォームにイメージを配置して、画像を載せています。
ですが、画像は元の大きなサイズの為、画像の一部分しか見えない状態です。
これをイメージの範囲内に画像を収めようとしています。

画像を取り込んだ後、調整が可能な様に拡大ボタンと縮小ボタンを作って配置したいと思います。ちなみにサイズは下記に表示してあります。

イメージのサイズは、幅  10.993cm
          高さ  6.598cm  です。

どういうものを参考にしたら良いのでしょうか?
又、教えて頂きたいと思います。
・ツリー全体表示

【10407】Re:メインフォームに関して。
お礼  heavenlycastle2003  - 08/5/29(木) 13:39 -

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

お陰様で調べて自分で出来そうです。
とりあえず、お礼まで。
・ツリー全体表示

【10406】Re:かな入力?!
お礼  ES  - 08/5/29(木) 11:05 -

引用なし
パスワード
   VBWASURETA さん

おはようございます。
プロパティを確認しましたら、やはり設定されていました。
そこを変更するとなおりました。
問題解決です!
ありがとうございました。
・ツリー全体表示

【10405】Re:フォーム作成時、テキストボックスに...
発言  VBWASURETA  - 08/5/28(水) 9:19 -

引用なし
パスワード
   ▼Gin_II さん:
おはようございます。

なるほど。
設定が、あったんですね^^;
いつもラベルを消して外したテキストをコピペで
使いまわしていたから気にしてなかったです。
・ツリー全体表示

【10404】Re:かな入力?!
回答  VBWASURETA  - 08/5/28(水) 9:15 -

引用なし
パスワード
   ▼ES さん:
おはようございます。

Accessのフォームのテキスト等の項目にプロパティがあると
思いますがその辺りは確認されました?

半角アルファベット入力制限が入っていたらそこが原因です。
・ツリー全体表示

【10403】かな入力?!
質問  ES  - 08/5/26(月) 16:52 -

引用なし
パスワード
   ACCESS初心者です。
今、会社でACCESSを使っているのですが、
入力する際に、半角のときは「 A」(半角英数字)で、半角/全角キーを押すと、なぜか「カ」(半角カタカナ)になってしまうのです。
ソフトを作られたかたがすでにいらっしゃらないので原因が不明なのですが、
どこかで設定してあるのでしょうか。
・ツリー全体表示

【10402】Re:メインフォームに関して。
回答  heavenlycastle2003  - 08/5/23(金) 21:02 -

引用なし
パスワード
   ▼Gin_II さん:
>>メインフォームにmemoの表示・非表示を可能にしたいのです。
>
>Visible プロパティ
>を、ヘルプ等で確認してください。

有難うございました。早速調べてみます。
・ツリー全体表示

【10401】Re:メインフォームに関して。
回答  Gin_II  - 08/5/23(金) 12:16 -

引用なし
パスワード
   >メインフォームにmemoの表示・非表示を可能にしたいのです。

Visible プロパティ
を、ヘルプ等で確認してください。
・ツリー全体表示

【10400】Re:フォーム作成時、テキストボックスに...
回答  Gin_II  - 08/5/23(金) 12:14 -

引用なし
パスワード
   >これを回避できるような手段は、何かありませんでしょうか?

新しいコントロールのラベルの既定値を設定する - Access - Microsoft Office Online
http://office.microsoft.com/ja-jp/access/HP051877341041.aspx

こちらを参照してください。
・ツリー全体表示

【10399】Re:フォーム作成時、テキストボックスに...
お礼  ゴンタ  - 08/5/22(木) 19:07 -

引用なし
パスワード
   ありがとうございます。
やはりデフォルトなのですねぇ
ちまちま削除するとします。
・ツリー全体表示

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