ray88’s diary

お仕事で困ったとき用の自分用の覚書

2020-01-01から1ヶ月間の記事一覧

サブフォームに表示されたデータシートをCSV出力するコード

■サブフォームに表示されたデータシートをCSV出力ボタンを押してCSV出力する Private Sub btnCsv_Click() funcOutputCSV 日付sub, "Q日にち検索", "サブフォーム出力" End Sub Function funcOutputCSV(subForm As subForm, strQueryName As String, strFileN…

テキストファイルを生成する

Sub test1() Dim strPath As String Dim FSO As Object 'ファイルシステムオブジェクトをインスタンス化 Set FSO = CreateObject("Scripting.FilesystemObject") '生成するファイルのパスを指定 strPath = "C:\Users\デスクトップ\test.csv" 'ファイルを生成…

UTF-8形式のCSVファイルをテーブルインポートできるよう加工

■UTF-8形式のままテーブルインポートしようとすると文字化けするので、ANSI形式で保存しなおす。ついでに、データの各項目にダブルクォーテーションもつける・編集前UTF-8形式のCSVファイル ・編集後UTF-8形式のCSVファイル ・インポート前テーブル ・インポ…

罫線を引く(格子・枠線・N行ごとに下線・セルの上下の値が相違する場合のみ下線を引く)

■罫線の設定 ・LineStyleプロパティ:罫線の種類(必須) ・Weightプロパティ:罫線の太さ(省略可) ・ColorIndexプロパティ:罫線の色(省略可) ■格子罫線を引く object.Borders.LineStyle = xlContinous (例) Sheet1のセル範囲B2:D5に格子罫線を引く Sub…

CSVにダブルクォーテーションを付けて編集後、新たなCSVファイルに書き出し(文字コード日本語の場合)

■ダブルクォーテーションなしのCSVにダブルクォーテーションを付けて加工する。 書き出す際にOpenメソッドのOutPutモードで書き出そうとすると ダブルクォーテーションが2重についてしまい失敗する(””項目”” の様になる) 読み取りをOpenメソッドのInputモ…

参照設定でチェックを入れる場所と変数宣言の仕方

■ADODBを事前バインディングする際は参照設定の 「Microsoft ActiveX Data Objects 6.1 Library」にチェックを入れる変数の宣言の仕方 Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Set CN = New ADODB.Connection Set RS = New ADODB.Recordset ■…

パラメータクエリを実行後レコードセットに格納してテーブルに挿入

関連記事:レコードセットでなく、SQLで挿入する方法はこちら↓ ray88.hatenablog.com ■ 以下のようなパラメータクエリ「Q_インサート」を作成したとします。 パラメータはフィールド部分の 担当者:[Offfiser] と 抽出条件部分の >=[price] の部分 このクエリ…

Dir関数(ファイルの存在確認・フォルダ内の全てのファイルを調べる)

■Dir関数 ファイルの存在確認。パスを含まないファイル名を返す。(つまり戻り値String型) Dir("ファイルパス") ・引数に指定したファイル名が存在しないと空欄を返す。 ・引数にワイルドカード「*」を指定した場合はいかのような動きをする。 ①最初にDir関…

ファイルが既に開かれているかどうか調べる

※こちらの方法もあり↓こちらの方が使い勝手良いかも。。。 Excel VBA ファイルが既に開かれているかどうか調べる その② - ray88’s diary ■使用にあたっての注意事項 たとえば、各部署ごとにフォルダが分かれていて、各同じファイル名のファイルが格納されて…

パラメータクエリを実行後、SQLを実行してクエリ実行結果をテーブルに挿入する

関連記事:SQLではなく、レコードセットで挿入したいときはこちら↓ ray88.hatenablog.com■パラメータクエリの結果をテーブルにインサートするときのコード ※通常、パラメータクエリを定義のみだと先にパラメータを指定し、 QueryDefsでクエリをしていするが…

AccessVBAでSQLを実行する

■ただ単に、複雑なことなにもせず、指定したSQL文を実行したいときのコード Sub testCommandDelete() Dim strSQL As String strSQL = "DELETE FROM T_テストテーブル" DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True End Sub

列の最終行にSUM関数を挿入する

■列の最終行にSUM関数を挿入する (例)B列に入力された数値の合計を求める Sub test() Range("B2").End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(Range("B2"), Range("B2").End(xlDown)).Address(False, False) & ")" End Sub

文字型の日付をスラッシュ入りの yyyy/MM/dd 形式 の日付型に変換する

■テーブル定義では文字型のカラムでyymmだけど、抽出条件で一か月後とかなってた時に 一旦数値型に変換するときに使った Sub testDayChange() Dim strDay As String Dim dteDay As Date 'もし取得した値がyyyymmの場合は..... strDay = "201905" '"0"を足し…

CSVファイルデータを読み込む

① Openメソッドで読み込む方法 ② ADODBでレコードセットに格納して読み込む方法 '-------------------------------------------------------------------①まずはOPENメソッドでデータを読込む方法 Sub testReadText1() Dim buf As String Dim dataArray As V…

フルパスから拡張子なしのファイル名と拡張子を求める

※FileSystemObjectを事前バインディングする際は参照設定の 「Microsoft Scripting Runtime」にチェックを入れる Sub testGetFileInfo() Dim TargetPath As String Dim fileName As String Dim strExtension As String '-----------------------------------…

フルパスからファイル名とフォルダパスを取得する

■まずは、単純に取得する方法 Sub testGetFileInfo() 'フルパスからファイル名を取得 strFileName = Dir(strTempFilePath) 'フルパスからフォルダパスを取得 strFolderPath = Replace(strTempFilePath, strFileName, "") End Sub ■FileSystemObjectを使用し…

コード埋め込みのテスト

Sub testsetRecordSet2() Dim targetPath As String Dim targetPath2 As String Dim strFileName As String Dim targetFolderPath As String Dim strSQL As String Dim strSQL2 As String Dim intIndex As Long Dim dbFileName As String Dim strName As Str…

レコードセットの件数を取得

■キーワード:レコードセット Recordset 数 件数 -1 RecordCount レコードセットの件数を取得する:RS.RecordCount ただし、レコードセットを開く際、カーソルタイプがadOpenKeyset(定数1)か adOpenStatic(定数3)になっていないと取得できない-1が返…

とりいそぎ CSVのエラーチェックとテーブルインポート

Sub testsetRecordSet2() Dim targetPath As String Dim targetPath2 As String Dim strFileName As String Dim targetFolderPath As String Dim strSQL As String Dim strSQL2 As String Dim intIndex As Long Dim dbFileName As String Dim strName As Str…

とりいそぎ、ADODBの遅延バインディングに関する参考URL

■あとで見られるように貼り付け https://ateitexe.com/vba-ado-not-reference/■遅延バインディングした場合、定数の値(数字)で指定する Open メソッド (ADO) ■SQLの結果をテーブル格納する Windows 2000 - Development Guide for Business Applications

csvにヘッダーつける(とりいそぎ)

Sub AddressMasterChange() Dim strKenallCsvpath As String Dim strHeaderFilePath As String 'マスタメンテナンス画面よりCSVファイルパス取得 strKenallCsvpath = "C:\デスクトップ\郵便csv\KEN_ALL.CSV" '住所マスタの全レコード削除 Call CommandDelete…

Excelを遅延バインディングした時にエラーになる件について

■開発していると参照設定したくても、納品先のお客様の使用環境が どのバージョンを使用しているか不明のため、コード規約で参照設定が 禁止されているケースが多いです。なので、遅延バインディングします。 AccessからExcelを遅延バインディングしてWorkbo…

検索フォームでサブフォームのデータを検索する際のクエリ(あいまい検索等)

■以下のような検索フォームで検索する際、サブフォームの元となるクエリの設定の 仕方 基本的な処理を覚書 ■IDの抽出条件(オートナンバー型ですが、以下の式で正常に動作) Like IIf(IsNull([Forms]![日にち検索]![ID]),"*",[Forms]![日にち検索]![ID]) ■タ…

オートフィル

■同じ値でオートフィル(関数のオーフィルなどもこの方法でOK) ************************************************************************* (例)セルB1に1を入力し、B10まで1をオートフィルで入力 Sub test1() Range("B1").Value = 1 Range("B1").AutoFil…

最終行を取得するコード

①特定のセルから見てデータの入っている一番下の行を取得 (途中う空白有の場合は使えない) ■ 最終行 = Range("B2").End.End(xlDown).Row ②エクセル全体の最終行を取得し、そこから順に上を見ていき、指定した列の データのある行を取得(途中空白ありもOK…

AccessでCSV出力の際に日付に時間が入らないようにする

・例として、以下フォームのサブフォームをCSV出力します。 ・サブフォーム内の項目に開始日と終了日の項目はyyyy/MM/ddの形式ですが、 CSV出力すると勝手にyyyy/MM/dd HHmm の形式に変換されてしまいます。 ・CSV出力の際の元となるクエリ(サブフォームの…

現在のデータベースのPath・ファイル名を参照する(ExcelのThisWorkBook.Pathにあたる)

・CurrentProject.Path 現在のデータベースファイルが格納されているフォルダを参照 ・CurrentProject.Name 現在のデータベースファイルのファイル名を参照 ・CurrentProject.FullName 現在のデータベースファイルのフルパスを参照

サブフォームに表示するデータシートの項目を並べ替える

サブフォームに表示されるデータシートの項目の並び順を後から変更したくなった場合 ①サブフォームをデザインビューで開いてプロパティシートの赤枠の箇所が「はい」 になっているか確認する。(ここが「いいえ」になっていると編集できない。ここが「はい」…

Accessの検索フォームでYESNO型のチェックボックスのチェックあり・なし・全てを検索するクエリ

検索フォームにコンボボックスを追加 選択肢を全て、チェックあり、チェックなしの3択にする。 全てを選択したときにYesNo型のチェックありなしのデータ全てを抽出 チェックありを選択でチェックありのみを抽出 チェックなしを選択でチェックなしのみを抽出…