Learning Note

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

CSVに記載されたパスへファイルをコピーするアプリ

GitHubへPythonのアプリを上げてみました。github.com同ディレクトリに コピー元, コピー先 のパスを格納した "rename.csv"を用意すれば順番にコピーしていきます。コピー先のパスはリネームしてもOK。1行目はヘッダとみなしてスキップします。

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 ブックの変更を保存して閉じます。 …

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

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