Learning Note

できるようになったことを記録しています

Accessのif関数でNullを使うポイント

Microsoft Accessのクエリでif関数を使用する場合 書式 label:IIf(★=★★,"TRUE","FALSE") ★と★★が一致すれば"TRUE"を返すが、値がNull同士の場合TRUEにならないため、Is Nullを用いて条件を追加する。 label:IIf(Is Null(★)And Is Null(★★),"TRUE",IIf(★=★★,"…

指定したフォルダ以下の指定した拡張子ファイルを検索する

fnmatchの引数に拡張子を指定することで、指定した拡張子のみを検索して表示する。

指定したフォルダ以下のファイルやフォルダをCSVに出力する

以前似たような記事を書いたが、今回はCSVファイルへ出力する応用編。ファイルの場合 フォルダの場合 検索で見つかったファイルやフォルダをfor文で1行ずつCSVファイルへ出力している。

2列のCSVファイルを列ごとに別配列へ取り込む

拡張モジュールのnumpyとか使えばもっとスマートにできるのかも。

CSVファイルを1行ずつ配列へ取り込む

読み込んだCSVファイルを1行ずつappendで配列へ取り込んでいる。appendの代わりにextendを使う方法もあるが、違いは以下の通り。 append リストオブジェクトそのものを追加 [["A"],["B"],["C"],["D"],["E"]] extend リストの最後に追加 ["A", "B", "C", "D",…

CSVファイルへ1行ずつ出力する

csvモジュールのwriter関数で書き込みます。

VBEでシンタックスハイライトを設定する

熟練プログラマの作業画面を除くと、よく黒基調な画面で作業しているのを見かけます。 今までは「昔風な画面が好きなのかな?」程度に留めていましたが、自身でプログラムを書く時間も増え、その配色の意味を身をもって痛感しました。VBEでも背景色や文字色…

Surface Pro3でスクリーンショットを取る方法

Surface Pro3のタイプカバーにはプリントスクリーンキーが無いため、 「Win」+「Fn」+「Space」キーを同時押しする。タイプカバー無しの場合は、 本体の「Win」+「ボリューム‐」ボタンを同時押しする。余談ですが、私がブログ用の画像を作成する場合は以…

セルの最終行を調べる

今更な感じの基本的なテクニックだが、ほかの言語を触るとすぐに忘れてしまうので記事にしておく。 Dim MaxRow As Long MaxRow = Cells(Rows.Count, 1).End(xlUp).Row "Rows.Count"はsheetの最終行 xlsxなら1048576、xlsファイルなら65536.Endプロパティは …

Pythonの開発環境変更

Pythonでプログラムを書く際、今まで標準のIDE(統合開発環境)で作成していましたが、変数の確認とか効率が悪かったため、他のIDE導入を決意。"Atom"とか"Visual Studio Code"とかPythonに対応した有名どころが色々ある中、"Anaconda"に含まれている"Spyder"…

CSVファイルを1行ずつ読み込む

csvモジュールのreader関数で読み込みます。読み込んだデータをfor文で1行ずつ出力しています。

ファイルをコピーしてリネームする

shutilモジュールのcopy関数を使用して"fromPath"の内容を"toPath"へコピーします。

フルパスからディレクトリが存在しなければ作成する

os.path.dirname()でフルパスからディレクトリ名を返す。 os.path.exists()でファイルやディレクトリの有無を調べる。 os.makedirs()でディレクトリを作成する。

指定フォルダ以下のフォルダを再帰的に検索

Python3.6で指定したフォルダ以下に存在するフォルダ名を表示する処理。

指定したフォルダ以下のファイルを再帰的に検索

Python3.6で作成。指定したフォルダ以下のファイルを再帰的に検索し、画面に表示する。過去記事でVBAでも同じ処理を作成したが、Pythonだと10行足らずで書けてしまう。import osでOSモジュールをインポート。 os.walk()でパス以下のファイル・ディレクトリ一…

ネットワーク上のPCからデータをrobocopyする

ネットワーク上に存在する他PCのデータをrobocopyする際は、net useコマンドで事前にネットワークドライブとして接続しておく。 net use e: /delete net use e: \\PC-01\Share password /user:PC-01\username robocopy e:\ d:\Share /E /MIR /R:1 /W:1 /XO /…

ファイルをコピーしてリネームする

FileCopyステートメントでファイルをコピーする関数。コピー先の同名ファイルが存在する場合は上書きされる。

GitHubを使うためにSourceTreeをインストール

アカウントを取得したまま、ブラウザ画面のとっつきにくさから放置していたGitHub。最近ブログにソースを貼り付けるため、Gist(断片コードの管理)を使用し始めましたが、もっと本格的に使用するべく「SourceTree」というソフトをインストール。ダウンロード…

Python始めます

きっかけはAmazonが勧めてきたPythonの書籍。普段VBAやPowerShellで処理していることも簡単にできそうだったので、これを機に覚えてみます。ダウンロードはこちらから www.python.org インストール時に環境変数PATH設定を忘れずに。

連想配列を用いて配列内重複チェック

Dictionaryオブジェクトで連想配列を作成。重複データを登録できない特性を生かして重複データが存在しないかチェックする。

配列の文字列を半角に変換して返す

配列を引数として渡し、全角の文字を半角に変換して返す関数。カタカナが入っているようなデータは要注意。

存在しないフォルダでも作成する

SHCreateDirectoryExというAPIを使用して存在しないフォルダでも1回の処理で作成する。

配列を1行ずつテキストファイルへ出力する

配列をテキストファイルへ1行ずつ出力するサブプロシージャ使用例 Sub Main() Dim tmp(2) As String tmp(0) = "one" tmp(1) = "two" tmp(2) = "three" Call OutputText(tmp) End Sub

ログファイルを出力する

ログファイルを出力するサブプロシージャ 処理日時+引数の"category"で処理種別+"msg"で処理内容を出力する。 使用例 Sub Main() Dim folderPath As String folderPath = ThisWorkbook.Path Dim i As Long For i = 1 To 5 Call M_Logging.WriteLog(folderP…

シート名を配列に格納する

シート名を配列に格納する関数 使用例 Sub main() Dim WB as Workbook Set WB = ActiveWorkBook Dim mySheetName As Variant mySheetName = CheckSheetName(WB) End Sub

新しいブックを作成する

ブックを作成するにはAddメソッドを使用する。 WorkBooks.Add 使用例 Sub Main() Dim WB As WorkBook Set WB = WorkBooks.Add WB.SaveAs "C:\bin\新しいブック.xlsx" End Sub

ブックを保存する

ブックを保存するにはSaveメソッドを使用する。 ActiveWorkBook.Save 他にも、以下のような書き方ができる。 SaveAs 名前を付けて保存 SaveCopyAs コピーを保存 使用例 Sub Main() ActiveWorkbook.SaveAs Filename:="c:\bin\名前を付けて保存.xlsm" ActiveWo…

ブックを閉じる

ブックを閉じるにはCloseメソッドを使用します。 Workbooks("ブック名.xlsx").Close また、引数により保存して閉じる、保存しないで閉じる、名前を付けて保存を選択することができます。 引数 定数 内容 SaveChanges True ブックの変更を保存して閉じます。 …

自分なりのVBAコーディング規約

変数や関数の名前を特にルールを設けずコーディングしていたので今のうちに整理しておきたい。また、今後追加があればこの記事に追記していく。命名規則・Sub、Function→Pascal形式(大文字始まり。単語と単語のつなぎ目は大文字) ・動詞、名詞の順で繋げて命…

配列を多次元配列に変換する

配列データを多次元配列に変換するための関数。多次元配列は途中で列数を増やすことができないため、事前に設定された列数より取り込む要素が多い場合は処理を終了するようにした。 使用例 Sub Main() Dim lineTxt As Variant lineTxt = ImportTxt("C:\bin\t…