この記事は、『VBA : 一ヶ月の予定リストの作成』の続きです。テンプレートシートをコピーして作業シートを作成する関数 "対象" という名前のシートがあればそれを使い、無ければ "テンプレート" シートをコピーして、"対象" と言う名前に変更します。
Function LoadSheet()
' ********************
' データ処理をする Sheet
' ********************
Dim sheet As Worksheet
' ********************
' "対象" Sheet の取得
' ********************
On Error Resume Next
Set sheet = Worksheets("対象")
On Error GoTo 0
' "対象" Sheet が無い場合は テンプレート をコピーして作成
If sheet Is Nothing Then
Call Worksheets("テンプレート").Copy(, Worksheets("年月入力"))
' コピーした Sheet の名前を変更
Application.ActiveSheet.Name = "対象"
' 変数にコピーした Sheet をセット
Set sheet = Application.ActiveSheet
End If
Set LoadSheet = sheet
End Function
※ 戻り値は、Worksheet オブジェクトです。 FileSystemObject は、ThisWorkbook に定義 Workbook_Open イベントで一度だけ実行して作成し、ブックを閉じるまでずっとそれを使います。![]()
Public Fs As Object
Private Sub Workbook_Open()
Set Fs = CreateObject("Scripting.FileSystemObject")
End Sub
※ Open から Line Input を使わないのは、FileSystemObject ならば 他の VB 系でも使用可能で汎用性が高いからです。 処理 ※ Fs は、ThisWorkbook に定義されているので、ThisWorkbook.Fs と参照します
Sub ボタン2_Click()
' ********************
' データ処理をする Sheet
' ********************
Dim sheet As Worksheet
' ********************
' 戻り値を取得
' ********************
Set sheet = LoadSheet
' ********************
' ファイルを開く
' ********************
Dim Path As String
Path = Application.GetOpenFilename("CSV,*.csv,全て,*.*", , "CSVファイルを選択して下さい")
If Path = "False" Then
Exit Sub
End If
' ********************
' オープン
' ********************
On Error Resume Next
Set InObj = ThisWorkbook.Fs.OpenTextFile(Path, 1)
If Err.Number <> 0 Then
MsgBox (Err.Description)
Exit Sub
End If
On Error GoTo 0
Dim Buffer As String
Dim row As Integer: row = 0
Dim Data() As String
' ********************
' CSV ファイルより
' データを読み込み
' ********************
Do While Not InObj.AtEndOfStream
Buffer = InObj.ReadLine
row = row + 1
Data = Split(Buffer, ",")
sheet.Cells(row, 3).Value = Data(0)
sheet.Cells(row, 4).Value = Data(1)
Loop
' ********************
' ファイルクローズ
' ********************
InObj.Close
End Sub
Application.GetOpenFilename の第二引数(FilterIndex)は省略しています。その代わり、第三引数を指定しています( タイトル文字列の指定 ) Split 関数 OpenTextFile メソッド ReadLine メソッド
|
|
【VBAの最新記事】
- VBA : 一ヶ月の予定リストの作成して、csv を読み込んでデータを表示する
- Excel で 角丸四角形や1つの角を切り取った四角形で、角丸や切り取った長さを一定に設定する為の VBA Sub プロシージャ
- Excel の VBA : ブックを開いたら、フォームを表示してボタンをクリックしたらセルにデータをセットする
- VBA : Microsoft Access(.accdb) の読み込み
- VBA : livedoor お天気API の JSON データを読み込んで利用する
- VBA : シートの保護と部分的なセル入力の許可
- VBA : 挿入した『テキストボックス』にアクセスする
- VBA : InternetExplorer.Application 経由で JSON.parse を使用する方法






