ブックの保存されているパスがわかると,VBAからファイルなどを作成して保存するときに同一ディレクトリに保存したりするのが楽になると思います。結構簡単に取り出せます.
【事例】
Sub Get_Path()
path_name = ActiveWorkbook.Path
If path_name = "" Then
MsgBox "ブックを1度保存してから実行して下さい"
Exit Sub
End If
MsgBox "ブックのある場所は" & path_name & "です."
End Sub
上記のActiveWorkbook.Pathで取り出すことができます.あとは,煮るなり焼くなりしてください.
2006/11/18
配列数を後から入力する(動的配列)
通常,配列は
【事例】
Sub 配列()
Dim hairetsu() As String
Dim counter As Integer
Dim i As Integer
count = Range("A1").CurrentRegion.Rows.Count
Redim hairetsu(count - 1)
For i = 0 to count - 1
hairetsu(i) = cells(i + 1, "A").Value
Next
End Sub
配列数がわかっていない場合には,上記のようにすると配列数も完璧にわかるようになる.便利だー.
Dim hairetsu(20) As Stringなどとして定義して使うが時々配列数をExcelシートの列数などを数えてその総数を灰列数にしたい場合などがある.こういった場合,以下のようにします(いわゆる動的配列というやつです)。
【事例】
Sub 配列()
Dim hairetsu() As String
Dim counter As Integer
Dim i As Integer
count = Range("A1").CurrentRegion.Rows.Count
Redim hairetsu(count - 1)
For i = 0 to count - 1
hairetsu(i) = cells(i + 1, "A").Value
Next
End Sub
配列数がわかっていない場合には,上記のようにすると配列数も完璧にわかるようになる.便利だー.
Excelの関数をVBAで使う
2006/11/16
最終行の取得
ファイルの最終行が何行目になっているのかを調べるマクロです。私はこれができるようになってマクロの作成の幅がすごく広がりました。
【事例1】
Sub last_row()
Range("A1").Select
Selection.End(xlDown).Select
endcel = ActiveCell.Address
cellend = Mid(endcel, 4)
MsgBox "このシートの最終セル:" & cellend
End Sub
【事例2】
Sub last_row()
cellend=Range("A1").CurrentRegion.Rows.Count
MsgBox "このシートの最終セル:" & cellend
End Sub
なんでもないマクロですがこれで最終行が何行目なのかがわかれば、データベースなどから取り出したデータを用いてグラフを書くなどのマクロもイチコロになります.お試しあれ.
【事例1】
Sub last_row()
Range("A1").Select
Selection.End(xlDown).Select
endcel = ActiveCell.Address
cellend = Mid(endcel, 4)
MsgBox "このシートの最終セル:" & cellend
End Sub
【事例2】
Sub last_row()
cellend=Range("A1").CurrentRegion.Rows.Count
MsgBox "このシートの最終セル:" & cellend
End Sub
なんでもないマクロですがこれで最終行が何行目なのかがわかれば、データベースなどから取り出したデータを用いてグラフを書くなどのマクロもイチコロになります.お試しあれ.
VBAでテキストファイルを作る その4(ファイル新規作成)
この前は,すでに作成されているファイルにデータを継ぎ足すといったファイル作成をしたが新規にファイルを作成する方法は以下のようにする。これは,前回がわかればそんなに難しくない
【事例】
Sub fso_txt_create()
Dim fso As New Filesystemobject
Dim txt_create As textstream
Set txt_create = fso.CreateTextFile ("c:\temp\view.htm", forwriting) 'ファイル作成
End Sub
これはそんなに難しくないので…
【事例】
Sub fso_txt_create()
Dim fso As New Filesystemobject
Dim txt_create As textstream
Set txt_create = fso.CreateTextFile ("c:\temp\view.htm", forwriting) 'ファイル作成
End Sub
これはそんなに難しくないので…
VBAでテキストファイルを作る その3(ファイル作成)
FSOを使ってテキストファイルを作成することが出来ます.以下にソースコードを示します.
【事例】
Sub fso_txt_create()
Dim fso As New Filesystemobject
Dim txt_create As textstream
Set txt_create = fso.opentextfile("c:\temp\view.htm", forwriting) 'ファイル作成
head = "はなこ" '変数を使って入力する方法を試す
With txt_create
.WriteLine ("これはテストです。") 'テキストを書き込む
.WriteLine (head)
.WriteLine ("hoge")
.Close 'txtstreamオブジェクトを閉じる
End With 'Withステートメントを終了する
End Sub
【注意点】
ファイルを開く場合,.opentextfileメソッドを使うが既にテキストファイルが無いとエラーとなる.また,.opentextfileオブジェクトの2カラム目(今の場合,forwriting)でforreadingとすると読み取り専用で、forwritingで書き込み用で上書き、forAppendingで書き込み用で上書きせずに追記します。
【参考】
WriteLineをWriteにすると改行文字は書き込まれない書き込みをします。
【事例】
Sub fso_txt_create()
Dim fso As New Filesystemobject
Dim txt_create As textstream
Set txt_create = fso.opentextfile("c:\temp\view.htm", forwriting) 'ファイル作成
head = "はなこ" '変数を使って入力する方法を試す
With txt_create
.WriteLine ("これはテストです。") 'テキストを書き込む
.WriteLine (head)
.WriteLine ("hoge")
.Close 'txtstreamオブジェクトを閉じる
End With 'Withステートメントを終了する
End Sub
【注意点】
ファイルを開く場合,.opentextfileメソッドを使うが既にテキストファイルが無いとエラーとなる.また,.opentextfileオブジェクトの2カラム目(今の場合,forwriting)でforreadingとすると読み取り専用で、forwritingで書き込み用で上書き、forAppendingで書き込み用で上書きせずに追記します。
【参考】
WriteLineをWriteにすると改行文字は書き込まれない書き込みをします。
2006/11/15
VBAでテキストファイルを作る その2(ファイル取得)
前回設定したFSO(File System Object)を使用してファイルを取得するマクロを作成.
【事例】
sub fso_file_create()
Dim fso As New FileSystemObject
Dim fso_create As File
Set fso_create = fso.Getfile("C:\temp\test.xls") 'fso_createにtest.xlsファイルを格納
fso_create.move ("C:\test\test.xls") 'testフォルダにファイルを移動
End Sub
【注意】
指定したファイルが存在しない場合,エラーが発生するので注意が必要.
今日は,こんなもんで…
【事例】
sub fso_file_create()
Dim fso As New FileSystemObject
Dim fso_create As File
Set fso_create = fso.Getfile("C:\temp\test.xls") 'fso_createにtest.xlsファイルを格納
fso_create.move ("C:\test\test.xls") 'testフォルダにファイルを移動
End Sub
【注意】
指定したファイルが存在しない場合,エラーが発生するので注意が必要.
今日は,こんなもんで…
2006/11/14
VBAでテキストファイルを作る その1(設定)
最近興味のあることとして,Excel VBAでシートを介さないでファイル出力をする方法はないだろうか?ということであった。ついに見つけた。FSOメソッドがそれにあたるようだ(ファイルシステムオブジェクトというようだ)。いろいろな設定などが必要なので何回かに分けて書き込んでいきたいと思っている。続くだろうか。。。がんばる。
まず第一に、FSOを使う準備をする。VBEを立ち上げて「ツール?参照設定」を選択してMicrosoft Scripting Runtimeにチェックする。

まず第一に、FSOを使う準備をする。VBEを立ち上げて「ツール?参照設定」を選択してMicrosoft Scripting Runtimeにチェックする。

上記の設定をすることによってシートなどを介することなくテキストファイルを作成することができるようになる(まだ良く調べていないがこれは、WSHの延長上にあるランタイムではないかと思っています)。
今日は眠いのでこれまで。。。
登録:
投稿 (Atom)