Top > ブックの操作

VBA通信教材申込み

VBA課題解決型実践塾セミナー内容

申込 ヤフーショッピング

ブックの操作

関数

ブックの操作はエクセル内での操作だけでなくWindowsからの操作が必要になる時があります。具体的にはApplicationはエクセル全体を表すオブジェクトです。
メソッドも多くあり使いこなせば応用が広いと思いますが、難しいです。
VBA実践塾は結果を出すことが目的ですので、必要なものを部品として活用するという考えで使ってください。

(a)ファイルを開く

関数

ファイルを開くダイアログが開きエクセルのファイルを開くと同じです。
Sub yobidasi()
  Dim OpenFileName As String
  OpenFileName = Application.GetOpenFilename("Excelブック,*.xlsx")
  If OpenFileName <> "False" Then
    Workbooks.Open OpenFileName
  End If
End Sub

(b)同じフォルダーのファイルを開く

関数

フォルダー(ディレクトリィ)の場所を変える。Change Directory
昔MSDOSのコマンドを勉強した人はCDが懐かしいでしょう。
Sub yobidasi1()
  Dim OpenFileName As String
  Dim myFol As String
  myFol = ThisWorkbook.Path
  ChDir myFol
  OpenFileName = Application.GetOpenFilename("Excelブック,*.xlsx")
  If OpenFileName <> "False" Then
    Workbooks.Open OpenFileName
  End If
End Sub

(c)同じフォルダーのファイルを開くShellを使う

Shellコマンドを使うとエクセルからほとんどのプログラムが実行できます。
Sub yobidasi2()
  Dim myFol As String
  myFol = ThisWorkbook.Path
  Shell "C:\Windows\Explorer.exe " & myFol, vbNormalFocus
End Sub

(d)ファイルを開く指定したファイル(ファイルが存在しているか判断)

関数

これもMSDOSでおなじみのコマンドDIRです。
Sub yobidasi3()
  Dim MyFile As String
  MyFile = "D:\大阪.xlsx"
  If Dir(MyFile) <> "" Then
    Workbooks.Open Filename:=MyFile
  Else
    MsgBox "そのブックは存在しません"
  End If
End Sub

(e)ファイルを開く指定したファイル(ファイルが開いているか判断)

関数

オブジェクト変数の繰り返しはFor Each文を使います。
事務処理ではあまり使いませんので部品として使ってください。
Sub yobidasi4()
  Dim flag As Boolean
  Dim wb As Workbook
  Dim MyFile As String
  MyFile = "D:\大阪.xlsx"
  flag = False
  For Each wb In Workbooks
    If wb.FullName = MyFile Then
      flag = True
      MsgBox MyFile & "は既に開いています"
      Exit Sub
    End If
  Next wb
  If flag = False Then
    MsgBox MyFile & "を開きます"
    Workbooks.Open MyFile
  End If
End Sub

(f)ファイルを開く指定したファイル(ファイルが存在しているか判断)(ファイルが開いているか判断)

ファイルを開くだけなら
Workbooks.Open"D:\大阪.xlsx"
だけでいけますがプログラムはエラー処理のために長く、難しくなります。
自分が使うプログラムであればエラー処理はあまり必要ないと思いますが他人が使う場合
その方のエクセルの習熟度によってプログラムが難しくなるものです。
そのためにオブジェクト変数も使わないといけません。
Sub yobidasi5()
  Dim flag As Boolean
  Dim wb As Workbook
  Dim MyFile As String
  MyFile = "D:\大阪.xlsx"
  If Dir(MyFile) <> "" Then
    flag = False
    For Each wb In Workbooks
      If wb.FullName = MyFile Then
        flag = True
        MsgBox MyFile & "は既に開いています"
        Exit Sub
      End If
    Next wb
    If flag = False Then
      MsgBox MyFile & "を開きます"
      Workbooks.Open MyFile
    End If
  Else
    MsgBox "そのブックは存在しません"
  End If
End Sub

(g)上書き保存

関数

保存のダイアログ(上書き・保存・名前を付けて保存・キャンセル)のダイアログを出すとそれの処理が必要となりますので上書きのみでダイアログを表示させません。
Workbooks("大阪.xlsx").Close SaveChanges:=True
Sub hozon()
  Dim flag As Boolean
  Dim wb As Workbook
  Dim MyFile As String
  MyFile = "D:\大阪.xlsx"
  For Each wb In Workbooks
    flag = False
    If wb.FullName = MyFile Then
      flag = True
      Exit For
    End If
  Next wb
  If flag = False Then
    MsgBox MyFile & "は開いていません"
    Exit Sub
  End If
  Workbooks("大阪.xlsx").Close SaveChanges:=True
  MsgBox "保存されました"
End Sub

(h)名前をつけて保存

関数

名前を付けるファイルが存在していると困るので保存する前にDir関数で判断しています。
Sub hozon1()
  Dim flag As Boolean
  Dim wb As Workbook
  Dim MyFile As String
  Dim MyFile1 As String
  MyFile = "D:\大阪.xlsx"
  MyFile1 = "D:\大阪1.xlsx"
  For Each wb In Workbooks
    flag = False
    If wb.FullName = MyFile Then
      flag = True
      Exit For
    End If
  Next wb
  If flag = False Then
    MsgBox MyFile & "は開いていません"
    Exit Sub
  End If
  If Dir(MyFile1) <> "" Then
    MsgBox "名前を変更するそのブックは存在しています"
    Exit Sub
  End If
  Workbooks("大阪.xlsx").SaveAs Filename:=MyFile1
  Workbooks("大阪1.xlsx").Close
  MsgBox "保存されました"
End Sub

塾長あいさつ
基本方針(考え方)
通信教育内容
課題解決セミナー内容
初心者基礎コース内容
カリキュラム・料金
案内地図・各種リンク
問合せ・申込み
アベノ塾
システムの内製化
アサイコンピュータACS
応用部品集(有料)
販売管理(事例)
財務管理(事例)
顧客管理(事例)
見積もり(事例)
給与(事例)
介護(事例)
ゴースト暗算(事例)
部品集(部品の基礎)
部品集(シート関連)
部品集(データベース)
部品集(セル関連)
部品集(関数)
部品集(フォーム関連)
部品集(ブック関連)
部品集(その他)
変数の勉強
繰り返しと条件文
マスター登録.訂正.削除
フォルダー内のファイル
項目をシート名で作成
ブックの操作
CSVファイルの取り込み
呼び出し元・先
商品マスター検索
エクセル関数をVBAで
エクセル関数を使う
よくつかうプログラム
販売管理(ソース)
財務管理(ソース)
給与管理(概要・画面)
見積もり(概要・画面)
工程管理(概要・画面)
原価管理(概要・画面)