- ベストアンサー
Access&VBの質問について
arataの回答
- arata
- ベストアンサー率49% (139/279)
1については、下記のURLを参照してください。 2については、試したわけではないので自信はありませんが、パラメータクエリーのパラメータをフォームのテキストボックスを参照するようにして、マクロやモジュールで、フォームのテキストボックスに値を入れておけば、聞かれないのではないかと思うのですが。
関連するQ&A
- ゾンビエクセル・・・(ExcelVBA)
ExcelのVBAからAccessを起動し、エクセルファイルのインポートを行っています。 この処理を行うと、その後エクセルを閉じてもプロセスにエクセルが残ってしまいます。 なぜこうなってしまうのか判りません。よろしかったら教えてください(><) 一応コードを書いてみます。TransferSpreadsheetのコードを実行しない場合はゾンビエクセルは残らないので、それが原因だとは思うのですが他の方法がわかりません。 よろしくお願いいたします。 Dim appAccess As Object Dim acImport, fname As String, ffname As String acImport = "acImport" fname = ThisWorkbook.Path & "\取込.mdb" ffname = ThisWorkbook.FullName Set appAccess = CreateObject("Access.Application") appAccess.OpenCurrentDatabase fname appAccess.DoCmd.TransferSpreadsheet , 8, _ "torikomi", ffname, True, "torikomi" Set appAccess = Nothing
- ベストアンサー
- オフィス系ソフト
- Excel から Accessクエリーを実行したい
下記のようなマクロを組んでMS Accessのクエリー結果をExcelに出力したいのですが「レコードがない」というエラーになります。正しいコーディングを教えてください。 Sub DataFromAccess() Dim AccessApp As Object Set AccessApp = CreateObject("Access.Application") myDBName = "C:\MyAccess.mdb" '出力先フルパス xlsName = "C:\Invoice.xls" With AccessApp .Visible = True .OpenCurrentDatabase myDBName, acViewNormal .DoCmd.OutputTo acOutputQuery, "クエリー名", acFormatXLS, xlsName, True .CloseCurrentDatabase .Quit End With Set AccessApp = Nothing End Sub
- 締切済み
- その他(プログラミング・開発)
- Access2.0、テーブルのエクスポート
Access2.0のテーブルをWSHを使用してエクスポートしようとすると エラーとなってしまいます。 エラーメッセージは、以下のとおりです。 以前のバージョンのMicrosoft Accessデータベースにオブジェクトをインポートすることはできません。 以下に、コードを抜粋します。 Dim strName Dim objAccess Dim objDB Dim tbf Set objAccess = CreateObject("Access.Application") objAccess.Visible = False objAccess.OpenCurrentDatabase("c:\****.mdb") Set objDB = objAccess.CurrentDb objAccess.Docmd.TransferText 0,,"テーブル名","C:\****.txt" → ここで、エラーとなります。 どなたか、テーブルをエクスポートする方法を知ってる方、いらっしゃいませんか?
- 締切済み
- SE・インフラ・Webエンジニア
- ExcelからVBAを使ってAccess2007のデータをコピーしたいのですが、うまくできません
Access2000のDBをAccess2007に移行しましたが、Excel2007からAccessのDBを呼び出す事ができなくなりました。 DBを呼び出す方法はExcelからVBAでDBに接続し、オブジェクトを開く方法をとっていました。 AccessのDBの拡張子が○○.mdbならば接続できますが、○○.accdbになると接続できません。 VBAをDAOからADOに変更してみましたが、やはり、だめでした。 何かいい方法はないでしょうか。 お忙しいところ、申し訳ございませんが、何卒、よろしくお願い致します。 ちなみに下記のようなVBAを組んでいます。 Dim objDB As New ADODB.Connection Dim rcsTQ As New ADODB.Recordset Dim DBname Dim TQname Dim dbCol As Integer Dim rf As Field DBname = "\データの整理1.accdb" 'パス名とデータベース名を指定する。 TQname = "T受付データ" 'テーブル名、クエリー名を指定する。 'データベースに接続する objDB.Open _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.Path & DBname 'テーブル、クエリを開く rcsTQ.Open TQname, objDB '書き出しをする Range("a10").Value = "テスト書き出し" dbCol = 0 For Each rf In rcsTQ.Fields dbCol = dbCol + 1 Cells(11, dbCol).Value = rf.Name Next rf Range("a12").CopyFromRecordset rcsTQ objDB.Close Set objDB = Nothing End Sub
- ベストアンサー
- Visual Basic
- エラー3011
パス名もきちんと設定し、データもあっているのですが オブジェクトが存在しないか、名前、パス名が違うと エラーがでてしまいます。どこが違うのでしょうか? Dim db As String Dim db_Mdb As DAO.Database Dim rd_Mdb As DAO.Recordset Dim stSQL As String db = "C:\XXX\VB\kanri.mdb" 'パス名は、アドレスをコピー貼り付けしたので間違いないと思います) ”省略(データベースに接続)” stSQL = "select * from name where bango=0001;" Set rd_Mdb = db_Mdb.OpenRecordset(stSQL, dbOpenTable) お願いしますm(__)m
- ベストアンサー
- Visual Basic
- SQLコマンドを使ってテーブル名を任意に指定したい
Accessのテーブル(もしくはクエリー)をExcelにエクスポートしたいのですが、Excelのブック名が同じで、Accessのテーブル名(もしくはクエリー名)が同じだと、同じシートに上書きされますよね。同一ブックにシート名を変えてエクスポートするために、Accessのテーブル名を変えたいのですが、どのようにしたら任意設定できるのでしょうか?下記のコマンドを使用している途中で挫折しました。別の方法でもいいので教えてください。 (記) Dim SQL As String SQL = "SELECT (フィールド)INTO (ここを任意のテーブル名に)FROM (クエリーを参照しています)" DoCmd.RunSQL SQL DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8,(ここを任意のテーブル名に), (ブック名) 以上。。。
- ベストアンサー
- オフィス系ソフト
- パススルークエリ&ACCESSテーブル VBA抽出方法
ACCESSパススルークエリでSQLサーバーのテーブルからデータをインポートする場合において ACCESSのテーブルにあるデータを抽出条件としたいのですがSQL文の記述方法がわからなくて困っております。 根本的な考え方が間違っている可能性が高いのですがどのように記述したらよいか教えていただけますでしょうか。 よろしくお願いいたします。 ・SQLサーバーのテーブル名(S_USR) USRID MAIL 10001 10001@test.com 10002 10002@test.com 10003 10003@test.com ・ACCESSのテーブル名(T_USR) USRID 10001 10003 ・パススルークエリ名(Q_USR)←ACCESS上 ・欲しい結果(T_RESULT)←ACCESS上のテーブル USRID MAIL 10001 10001@test.com 10003 10003@test.com 自分で考えたVBAです。 Private Sub Command1_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim qDef As QueryDef Dim tDef As TableDef Dim SQLD As String Dim SQLA As String Set db = CurrentDb 'ACCESSテーブル内のデータを消す SQLD = "DELETE * FROM T_RESULT" DoCmd.RunSQL SQLD 'クエリの更新 db.QueryDefs.Delete "Q_USR" Set qDef = db.CreateQueryDef("Q_USR") 'ODBC接続実施 qDef.Connect = "ODBC;" 'フォームから取得したパラメーターを使ったクエリの設定 qDef.SQL = "select USRID, MAIL from S_USR where ID.USRID=S_USR" qDef.ReturnsRecords = True Set rs = qDef.OpenRecordset(dbOpenSnapshot,dsbSQLPassThrough,dbReadOnly) '追加クエリ SQLA = "INSERT INTO T_RESULT (USRID, MAIL) FROM Q_USR (USRID, MAIL) DoCmd.RunSQL SQLA rs.Close db.Close MsgBox "終了" Exit Sub End Sub
- 締切済み
- SQL Server
- VB6.0からAccess2007のマクロを呼び出す方法について
VB6.0からAccess2007のマクロを呼び出す方法について教えてください。 [vb6.0のソース] Private Sub ImportFile() Dim AccessMacro As Access.Application Set AccessMacro = GetObject("C:\test.mdb") AccessMacro.Run "Import" end Sub [test.mdbのマクロ] Public Sub Import() DoCmd.TransferText acImportDelim, "test インポート定義", "test", "C:\test.csv", False end Sub 上記の物を、XP+Access2003+VB6.0の環境でコンパイルし、Access2000が入っている環境で実行したところ、問題なくtest.mdbのマクロが実行できました。 (コンパイルした環境でも問題なく動作しました。) ところがこれをWin2003 + Access2007環境で実行したところ、 『実行時エラー 432 オートメーションの操作中にファイル名またはクラス名をみつけられませんでした。』 と表示されます。 おそらく、GetObject("C:\test.mdb")のところでエラーになっているものと思われるのですが、どのようにすれば原因が解消できるかが全くわかりません。 どなたがご教示ください。 よろしくお願いいたします。
- 締切済み
- Visual Basic
- アクセスのセキュリティの警告の非表示
現在、VBSでアクセスのマクロを起動させているのですが、 起動時にセキュリティの警告を聞いてこないようにしたいのですが、 なにか方法はあるのでしょうか? ちなみに現在のプログラムは '' データベース名・・・db.mdb(デスクトップにある場合) マクロ名・・・macro Dim AcApp Set AcApp = CreateObject("Access.Application") AcApp.visible = true AcApp.OpenCurrentDatabase "C:\Documents and Settings\×××\デスクトップ\db.mdb" AcApp.DoCmd.RunMacro "macro" AcApp.CloseCurrentDatabase AcApp.Quit Set AcApp = Nothing です。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- VBからACCESSのレポート出力
すみません。どうしてもわからないので、質問させて頂きます。 VB6.0 + ACCESS2000 で開発をしています。 インターフェイスはVB,DBはACCESSなのですが、帳票の出力も、 ACCESSで行いたいと思っております。 この時、クライアントにACCEESSが入っていない事も想定して、 ACCESSランタイムも用意しました。 デバッグマシン(OFFICEは入っていません)にランタイム(VB,ACCESS)を インストールして、実行ファイルを実行すると、印刷の部分で、「エラー429 Activeコンポーネントはオブジェクトを作成できません」とのエラーが出て、印刷ができません。 印刷以外は問題なく動いています。 開発マシンは、Win2000、デバッグマシンはWinXPで、ACCESSランタイムはOFFICE XP Developerで作成しました。 下記にソースコードも記載させて頂きます。 もちろん、開発ではきちんと動作しています。 Dim oleAccess As Access.Application Set oleAccess = GetObject(App.Path & "\data\data.mdb") Call oleAccess.DoCmd.OpenReport(ReportName, acPreview) oleAccess.DoCmd.Maximize oleAccess.Visible = True 当初は、「oleAccess.OpenCurrentDatabase」でDBを開いていたのですが、 ACCESSランタイム環境では、GetObjectの方が良いということを聞いたので、 上記の様になっています。 エラーが起きている行は、どうやら「GetObject」の行のようです(oleAccess.OpenCurrentDatabaseの場合でもエラー)。 ACCESSランタイムを使う事が初めてなので、手探りでやっているため、 的外れな所もあるかと思います。 何かアドバイスを頂ければ幸いでございます。 よろしくお願い致します。
- 締切済み
- Visual Basic
補足
1については解決しました。ありがとうございました。 2について、arataさんが言われている"フォーム"とはaccessのフォームのことでしょうか? VBのフォーム上のテキストボックスの値をクエリーが要求する引数として渡したいのですが、やっぱりそんなことはできないのでしょうか?