この記事は、『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 を使用する方法