ExcelVBA

dirコマンド結果のテキストファイルからフォルダサイズを抜き出す

フォルダのサイズを調べるときに、コマンドプロンプトからdirコマンドを実行してサイズを調べます。/Sオプションをつけると、サブディレクトリのフォルダに対しても表示してくれます。しかし、例えば、Cドライブ配下のすべてのフォルダのサイズを取得してい…

別ファイルのセル取得

VBAを実行しているファイルとは別のExcelファイルのデータをVBAを実行しているファイルのセルにもってくる(コピーする)プログラムを作成しました。データが入力してあるファイルは同じフォーマットの表を含む2ファイルにしました。 プログラムの処理としては…

Dictionaryオブジェクトを使ってみた

Dictionaryオブジェクトを使ってみました。Dictionaryオブジェクトは、まず、キーに要素(文字列など)を割り当てます。割り当てたオブジェクトのメソッドによりキーの文字列を取り出したり、削除したりできます。たとえば、"shusin1"というキーには"神奈川"と…

Rangeオブジェクトでセルを検索

Rangeオブジェクトを使ってある一定の範囲のセルを検索してみたいと思います。A2セルからA21セルに検索対象の文字列を入力します。(今回は歌手リストにしました。)C列の2行目から検索文字列(検索キー)を入力します。検索文字列一つ一つに対して、歌手リスト…

ファイル書き込み処理でバッチファイル作成

ファイル書き込み処理を使ってバッチファイルを作成してみたいと思います。ファイル書き込みにはTextStreamオブジェクトのWriteLineメソッドを使います。WriteLineメソッドはテキストファイルに一行ずつ文字列を書き込みます。バッチファイルのソースを一行…

戻り値の型がObjectだったら

戻り値の型がObjectのような場合もあります。たとえばActiveSheetは一例です。 この場合はとりあえずObject型(オブジェクトならなんでも入る型)で取得し、対象オブジェクトをウォッチ式の追加で見てみます。 そうすると、型のところにObject/Sheet1となって…

オブジェクトの型を指定する

オブジェクトの型をちゃんと指定するとプログラミングがしやすくなります。プログラムで変数を記述しているときにメンバプロパティなどを自動で参照して表示してくれるようになります。これが行われるためには、使用アプリケーションに対して参照設定が行わ…

指定フォルダ配下の画像貼り付け

画像ファイルが入っているフォルダを指定して、そのフォルダの中の画像ファイルをexcelシートに貼り付けるプログラムを作成しました。画像ファイルの貼り付けはActiveSheet.Pictures.Insert(ファイルパス)メソッドで行います。このメソッドは画像をアクティ…

保存したExcelファイルにシートを複数追加する

保存したExcelファイルにシートを複数追加するプログラムを作成してみました。今回は「新しいExcelのファイルを作成する」のシートとプログラムを流用します。A5セルから下に追加するシート名を入力します。 one、two、three、four、fiveというのが追加する…

新しいExcelのファイルを作成する

新しいExcelのファイルを作成するプログラムを書いてみました。新しいExcelファイルを作成する上で事前に決めておくことは、ファイルをどこのフォルダに作成するかということです。そこで、ファイルパスをセルに入力するようにします。 A2セルにファイルパス…

正規表現を使ってステップ数カウント

正規表現を使ってソースファイルのステップ数をカウントしてみたいと思います。方法としては、ソースファイルに対して、1行ずつ読み込んでいきます。読み込んだ1行分の文字列は正規表現で除外パターン(コメント行など)を検索します。除外パターンが存在しな…

テキストファイルの読み込み

テキストファイルを読み込むプログラムを作成してみたいと思います。TextStreamのReadLineというメソッドでテキストファイルから1行分読み込むことができます。簡単な例を以下に示します。 Sub ReadText() 'SystemObjectの生成 Dim objFS As FileSystemObjec…

テキストファイル出力

ExcelのVBAのプログラムを使って、テキストファイルに文字列を書き出して見たいと思います。まず、WriteLineメソッドという一行分文字列をファイルに書き込むメソッドがあります。引数に「abcd」という文字列を指定すると、テキストファイルに「abcd」という…

ファイル検索

指定のディレクトリ配下のファイルに対して、検索を行うプログラムを作成しました。基本的な処理の流れとしては、「検索対象ファイル名の取得」、「検索するディレクトリの取得」、「ファイルの検索」、「検索結果の表示」です。「検索対象ファイル名の取得…

ファイルコピー(コピー先ファイルチェック)

最後に、コピー先ファイルのチェックを行います。 Private Sub checkBFile() Dim y As Integer 'B2セルからB500セルまでループ For y = 2 To 500 If Cells(y, "B").Value = "" Then Exit For '←セルが空白になったらループを抜ける 'B列のファイルが存在した…

ファイルコピー(ファイルコピー)

C列が空白の場合に、A列のファイルをB列にコピーします。 Private Sub copyFile() Dim objFS As FileSystemObject Set objFS = CreateObject("Scripting.FileSystemObject") '←オブジェクトの生成 Dim objFile As File Dim y As Integer 'A2セルからA500セル…

ファイルコピー(コピー先フォルダチェック)

次に、コピー先フォルダのチェックを行います。 Private Sub checkBFolder() Dim y As Integer Dim pos As Integer Dim folName As String 'B2セルからB500セルまでループ For y = 2 To 500 If Cells(y, "B").Value = "" Then Exit For '←セルが空白になった…

ファイルコピー(コピー元ファイルチェック)

A列にコピー元ファイルを入力、B列にコピー先ファイルを入力しコピーします。 まず、コピー元ファイルのチェックを行います。 Private Sub checkAFile() Dim y As Integer 'A2セルからA500セルまでループ For y = 2 To 500 If Cells(y, "A").Value = "" Then…

複数ファイルの存在チェック

A列に記載された複数のファイルパスを取得し、それぞれに対して存在チェックを行います。 存在する場合は、B列にOKと表示させます。それ以外はNGと表示させます。 Sub checkfile() 'A列に入力セルが存在し、入力セルが500以下の場合ループ Dim y As Integer …

FileSystemObjectを利用する場合

以下の例はFileSystemObjectのFileExistsでファイルパスを指定して、存在する場合はメッセージを出力しています。 Sub bbb() 'オブジェクトの生成 Dim objFS As FileSystemObject Set objFS = CreateObject("Scripting.FileSystemObject") '「C:\work\13 約…

Dir関数を利用する場合

以下の例は引数にファイルパスを指定して、存在する場合はメッセージを出力しています。 Sub aaa() '「C:\work\13 約束.wma」が存在したらメッセージを出す If Dir("C:\work\13 約束.wma") <> "" Then MsgBox "存在します。" End Sub Dir関数はファイルが存…

指定したディレクトリのファイルを表示

あるディレクトリのファイル名を見る場合、普通はエクスプローラをみると思います。しかし、ディレクトリ内のファイルの一覧を作成したいときもあると思います。そのような場合は一つの方法としてコマンドプロンプトからdirコマンドを実行しテキストファイル…

指定ディレクトリ内のフォルダ名を表示(その1)の詳細

(その1)の詳細 Dir関数の引数としてディレクトリパスをわたすとディレクトリ内のフォルダ名1つを返します。 Sub aaa() '「C:\work」フォルダ配下のフォルダ名を1つ表示します。 MsgBox folder = Dir("C:\work\", vbDirectory) End Sub ※第二引数には「v…

指定ディレクトリ内のフォルダ名を表示(その3)

サブフォルダの再帰処理(その1)、(その2)ではサブフォルダの取得はおこなってましたが、サブフォルダのサブフォルダの取得はできません。folder\folder1\folder11←「folder1」取得、「folder11」は取得しない folder\folder1\folder12←「folder12」は…

指定ディレクトリ内のフォルダ名を表示(その2)

FileSystemObjectを使用する前回はDir関数を使用しました。 今回は前回と同様の処理をFileSystemObjectを使います。FileSystemObjectは以下のように生成します。 Dim objFS As FileSystemObject Set objFS = CreateObject("Scripting.FileSystemObject")GetF…