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…

配列から不要文字を削除して返す

関数を書くほどでもないかもしれないが、使用頻度はそこそこあるので作ってみた。 使用例 Sub Main() Dim testAry() As Variant: ReDim testAry(2) testAry(0) = "1,1" testAry(1) = "2,2" testAry(2) = "3,3" testAry = RemoveChar(testAry, ",") End Sub …

指定したテキストデータを一行ずつ配列に取り込む

指定したテキストデータを一行ずつ配列データに取り込む関数。 使用例 Sub Main() Dim lineTxt As Variant lineTxt = ImportTxt("C:\bin\test.txt") End Sub

指定したフォルダ以下の指定した種別ファイルパスを取得する

指定したフォルダの下位フォルダも再帰処理で検索対象とする関数。ポイントはStatic変数。再帰処理でDimを使うと消えてしまうので。 使用例 Sub Main() Dim filePath As Variant filePath = RecursionFile("C:\bin", "*.xlsx") End Sub

指定したフォルダから指定した種別のファイル名を取得する

Dir関数で指定フォルダの指定した種別のファイル名を取得する関数。配列の最後にブランクのデータが出来てしまうため、Loop終わりでもReDimしている。もっとスマートなやり方がないものか。 使用例 Sub Main() Dim fileName As Variant fileName = SearchFil…

別ブックからシートをコピーする

シートをコピーするにはCopyメソッドを使用します。例えば、同じブック内の"コピー元"という名前のシートを"Sheet3"という名前のシートの後ろにコピーする場合 Sheets("コピー元").Copy After:=Sheets("Sheet3") 別ブックに存在する"コピー元"シートをコピー…

ダイアログボックスで指定したExcelBookを開く

ExcelBookを開くにはWorkbooks.Openを使用する。書式 Workbooks.Open Filename:=開くBookのパス, ReadOnly:=False 開くBookのパスは直接記述しても良いが、先日の書いた"ダイアログボックスで指定ファイルのパスを取得する関数"を使うと汎用性が高まる。 kon…

ダイアログボックスで指定したフォルダのパスを返す

ダイアログボックスで指定したフォルダのパスを取得したい場合に使用する関数。 使用例 Sub Main() Dim folderPath As String folderPath = DecideFolder() If folderPath = "" Then Exit Sub End Sub

ダイアログボックスで指定したファイルのパスを返す

ダイアログボックスで指定したファイルの絶対パスを取得したい場合に使用する関数。 使用例 Sub Main() Dim filePath As String filePath = DecideFile() If filePath = "" Then Exit Sub End Sub

copyコマンドでテキストファイルを結合する

copyコマンドは非常に便利。ファイルをコピーするだけでなく、ある特定のディレクトリ内にある複数のテキストファイルを結合するといった処理も可能。 書式 cd テキストファイルがあるディレクトリ copy *.txt 結合後ファイル名.txt

ビジネスバッグの中身

仕事ではCOACHのメトロポリタンブリーフケースを使用しています。 COACHを使う前は「ひらくPCバッグ」を愛用していました。 superclassic.jp 本当によく考えられたバッグで3年くらい愛用していましたが、客先へ訪問する機会が増え、ショルダーバッグでは抵抗…

robocopyでファイルをコピーする

手動でのファイルコピーはミスが起こりやすいため、大量のデータを扱う場合などは「robocopy」というコマンドが便利。*WindowsVista 以降のOSに標準搭載。 書式 robocopy コピー元ファイルのパス コピー先ファイルのパス オプション 例えば、「C:\test」の…

Mac使いがWindows機を買いに行った話

少し前の話になります。現職へ転職した際、内定から入社まで少し日数があったため「この期間でVBAできるようにしておいて」と言われました。当時の私は空前のAppleブーム。家中Apple製品ばかりでWindows環境なんてありません。MacにBoot CampでWindowsをイン…

整理を兼ねて自己紹介文を考えてみた

はじめまして、コニフグといいます。幼い頃からゲーマーだった私は自然とプログラムにも興味を持ち、専門学校でC、VB、SQLを学び、社内SEとして中小企業の商社に就職しました。そこでは販売管理システムの運用保守がメインであり、プログラムを書く機会はほ…