DoCmd.OpenReport "レポート名", View:=acViewPreview, WhereCondition:=条件
SyntaxHighlighter
2013-11-12
AccessからExcelに出力
参考資料:Export from ACCESS to Excel using VBA
AccessからVBAでExcelに出力は次のようなコードで実行できる。
似ている方法で、Excelオブジェクトを作成してからそこに出力を書き込む方法もある。
あるいは次のように
ところで、AccessからExcelに出力してからPivot Tableを作成するという手法がある。
但し、次のコードはExcelから直接にAccessのデータベースへ接続してデータを取り出しているようです。
AccessからVBAでExcelに出力は次のようなコードで実行できる。
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "tbl_lookup_ird", "c:\temp.xls", True
似ている方法で、Excelオブジェクトを作成してからそこに出力を書き込む方法もある。
Public Sub QueryToExcel(ExcelFile As String) Dim db As Database Dim qdf As QueryDef Dim qryCount As Integer Dim SheetName As String Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) 'Make the worksheet visible. xlSheet.Application.Visible = True Set db = CurrentDb() With db qryCount = 0 For Each qdf In .QueryDefs qryCount = qryCount + 1 ' Output qryCount, .Name and .SQL to the next line ' in a sheet in the Excel file With xlSheet.Cells(qryCount, 1) .Value = Str(qryCount) .Font.Size = 12 .Font.Bold = True End With With xlSheet.Cells(qryCount, 2) .Value = qdf.Name .Font.Size = 12 .Font.Bold = True End With With xlSheet.Cells(qryCount, 3) .Value = qdf.SQL .Font.Size = 10 End With Next qdf End With 'Save the new worksheet, close Excel and clear the object variable. xlSheet.SaveAs ExcelFile xlSheet.Application.Quit Set xlSheet = Nothing ' Create new sheets in the newly created Excel file for ' the results of each of the queries With db qryCount = 0 For Each qdf In .QueryDefs With qdf qryCount = qryCount + 1 SheetName = "Query" & Trim(Str(qryCount)) ' Create a new sheet in the specified Excel file with ' the output of the named query. ' If there is a pre-existing one with the same name ' the new sheet will have a "1" appended to its name. ' Problems or issues: ' 1. Invalid queries will error out ' 2. Action queries will error out ' 3. Queries with parameters will require user input DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _ .Name, ExcelFile, , SheetName End With Next qdf .Close End With End Sub
あるいは次のように
Dim appExcel As Excel.Application Dim wbk As Excel.Workbook Dim wks As Excel.Worksheet Dim rng As Excel.Range Dim fileName As String Set appExcel = Excel.Application appExcel.Visible = True Set wbk = appExcel.Workbooks.Add Set wks = wbk.Worksheets(1) Set rng = wks.Range("A2:I4001") wks.Cells(1, 1).Value = "Generating data..." Set rst = CurrentDb.OpenRecordset(customQuery) If (rst.RecordCount > 0) Then cnt = 1 For Each fld In rst.Fields wks.Cells(1, cnt).Value = fld.Name cnt = cnt + 1 Next fld Call rng.CopyFromRecordset(rst, 4000, 26) End If fileName = ExportDir & "\Molenproductie" & DateTimeFrom & "-" & DateTimeTo & ".xls" wks.SaveAs (fileName) rst.Close Set rst = Nothing
ところで、AccessからExcelに出力してからPivot Tableを作成するという手法がある。
但し、次のコードはExcelから直接にAccessのデータベースへ接続してデータを取り出しているようです。
Sub DAOCopyFromRecordSet(DBFullName As String, TableName As String, _ FieldName As String, TargetRange As Range) ' Example: DAOCopyFromRecordSet "C:\FolderName\DataBaseName.mdb", _ "TableName", "FieldName", Range("C1") Dim db As Database, rs As Recordset Dim intColIndex As Integer Set TargetRange = TargetRange.Cells(1, 1) Set db = OpenDatabase(DBFullName) Set rs = db.OpenRecordset(TableName, dbOpenTable) ' all records 'Set rs = db.OpenRecordset("SELECT * FROM " & TableName & _ " WHERE " & FieldName & _ " = 'MyCriteria'", dbReadOnly) ' filter records ' write field names For intColIndex = 0 To rs.Fields.Count - 1 TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name Next ' write recordset TargetRange.Offset(1, 0).CopyFromRecordset rs Set rs = Nothing db.Close Set db = Nothing End Sub
2013-11-06
Access在VBA中執行SQL
在Access中執行後台SQL
可在VBA中使用下面的程式來執行sql文
easy?
可在VBA中使用下面的程式來執行sql文
strSQL = "INSERT INTO table (column1, column2) VALUES (v1,v2)" CurrentDb.Execute strSQL
easy?
Access 2010データベースファイルを2003にダウングレードする方法
Access 2010の環境で開発する際、新しいファイル(ACCDB)は古いAccessでは使えないため、旧形式のMDBファイルに変換する必要性がある。
但し、変換されたファイルに、VBAコードはうまく変換できない/VBAコードが削除されることが多々ある。
故に、次のステップで変換すると、無事(?)に変換できる。
やり方は簡単。AccessのVBA Editorを開いて、プロジェクトエクスプローラの中にあるそれぞれフォーム名に右クリックして、「ファイルのエクスポート(E)...」をクリックして、コードを.clsファイルにエクスポートする。無論、標準モジュールも同様。
※標準モジュールはバックアップする必要ないかもしれないが、一応…
上記の設定をすると、保存する時にVBAコードが削除されるので、ステップ1のVBAコードエクスポートをちゃんと確認してから進めなさい。
参考URL: Access 2010から2003へ下位バージョンへ変換する方法
故に、次のステップで変換すると、無事(?)に変換できる。
1. VBAのエクスポート
Accessファイルに書き込まれているVBAコードを、全てのフォーム、レポート、標準モジュールを含めて、すべて別々にエクスポートして保存しておいてください。やり方は簡単。AccessのVBA Editorを開いて、プロジェクトエクスプローラの中にあるそれぞれフォーム名に右クリックして、「ファイルのエクスポート(E)...」をクリックして、コードを.clsファイルにエクスポートする。無論、標準モジュールも同様。
※標準モジュールはバックアップする必要ないかもしれないが、一応…
2. コード保持設定の変更
Accessの編集画面に戻り、それぞれフォームとレポートのプロパティの「コード保持」を「いいえ」に変更する。上記の設定をすると、保存する時にVBAコードが削除されるので、ステップ1のVBAコードエクスポートをちゃんと確認してから進めなさい。
3. 2003形式ファイルに保存
別名で保存をして、「Access 2002-2003形式(MDB)」に保存する。4. Access 2003でVBA再導入
Access 2003で先保存したMDBファイルを開ける。そして、VBA Editorでステップ1でエクスポートしたコードファイル(cls)をそれぞれのフォームやレポートにインポートする。フォームやレポートも同じようにインポートできますが、もし、できない場合はエクスポートしたプログラムはエディタ(メモ帳や秀丸など)で開くことができるので、そのままコピー&ペーストを行えばいいでしょう。先頭に「VERSION 1.0 CLASS」や「BEGIN」~「END」、「Attribute VB_~」などが書かれているので削除してしまいましょう。とか言われたので、入れる時に注意する必要があるかもしれない。
参考URL: Access 2010から2003へ下位バージョンへ変換する方法
あと書き
Access 2010で開発が大丈夫の場合、最悪Access 2007/2010 Runtime Libraryをインストールすれば実行できる…但し編集できないので、最低限Access 2010を所有するPCが1台必要だ。もし実行の方で細かくプログラムの改正や編集する必要がない場合、Runtime Libraryだけで十分と思います。
登録:
投稿 (Atom)
人気の投稿
-
指令/英文 翻譯1 翻譯2 2D Solid 二維實體 2D 實面 2D Wireframe 二維線框 3D Array 三維陣列 3D 陣列 3D Dynamic View 三維動態觀察 3D 動態檢視 3d objects 三維物體 3D 物件 3D Orbit...
-
ノート程度: 線の太さを画面に反映させる Win: ツール>オプション でオプションウィンドを開き 作図スタイル>アクティブな作図スタイル>線のフォント で [ グラフィック領域で太さを表示]にチェックを入れる。 Mac: System Menu → 設定 /...
-
☆日本一 子煩悩な県 問題: 1.休日はたいてい子どもと遊ぶ 2.配偶者より子どもが大事である 3.外食するときは、まず子どもに何を食べたいか聞く 4.携帯の待ち受けは子どもの写真だ 5.子どもの寝顔を見て感動のあまり泣いたことがある ランキング 1.熊本県 2.北海道 3.山...
-
日本で結婚するときに、台湾の戸籍謄本の訳本が要る。 検索したら、いろいろ有用な先人たちの情報があります。 I♥TAIWAN - 日本小雪さんのブログ、最初ここからスタートして多分いちばん間違いなし。 在日台灣太太連絡簿 - 最低限の必要単語が載っている。 梅と桜 ...
-
這東西搞了兩個多禮拜,終於讓我找到合理的計算方式。 真圓度的計算方法,若使用半徑法,目前有 4種方式(參考Wikipedia(en)資料) 去取假想圓中心。 1. 最小區域圓法 Minimum Zone circle (MZC) 這是ISO及JIS B0621有規定的正式...
-
AutoCADではボタンで1クリック切り替えですけどね DraftSightではややめんどくさい 印刷シート(シートタブ)内で、全空間(モデルタブ)の特定の場所だけ出力させたい時に、ペーパー空間(シート ワークスペース)よりモデル空間(モデル ワークスペース)へ切り替える必...
-
第一關,...沒啥好寫的簡單 右鍵找出網頁原始碼之後就會看到密碼了 h4x0r ...NEXT
-
x64環境のSDKを使ってコンパイルするときに、GWL_WNDPROCなどシステムの定数が使えないことになります。 それは、SDKでは、x64環境であれば(#ifdef _win64)、それらの変数の定義をキャンセルした(undef)のです。 解決法として、GWL_WNDPROC...
-
大多數人使用iReport生成都會使用SQL來抓取資料庫檔案,但是iReport畢竟只是個設計表單用的程式,資料還是要靠Java餵給他。 一般的使用法,就像我以前做的 1. 在iReport中寫死SQL查詢句( SELECT xxx FROM yyy WHERE zzz )...
-
Access 2010の環境で開発する際、新しいファイル(ACCDB)は古いAccessでは使えないため、旧形式のMDBファイルに変換する必要性がある。 但し、変換されたファイルに、VBAコードはうまく変換できない/VBAコードが削除されることが多々ある。 故に、次のステッ...