【Excelマクロ(VBa)】Excelファイルの起動・保存・終了


 新規ブックを起動する


下記の様に [ツール] - [参照設定] で 【Microsoft Excel 1x.0 Object Library】にチェックをします。



ソースは下記となりますが、「AppExcel.Visible = True」を抜かすとバックグラウンドで起動するので注意です!

'Excel新規ブックを起動
Dim AppExcel As Excel.Application
Set AppExcel = New Excel.Application

AppExcel.Workbooks.Add  'ブックを新規追加
AppExcel.Visible = True  '表示



 新規ブックを保存(名前を付けて保存)・閉じる


名前を付けて保存・終了する場合は下記の様に記述します。

'Excel新規ブックを起動
AppExcel.ActiveWorkbook.SaveAs Filename:="c:\test\test.xlsx"  '名前を付けて保存
AppExcel.Quit                        'Excelブックを閉じる




 既存ブックを起動する


ソースは下記1行となります。

'既存のExcelブックを起動
Workbooks.Open "C:\test\test.xlsx"




 既存ブックを上書き保存・閉じる


ソースは下記となります。

'既存のExcelブックの保存
  Workbooks("test.xlsx").Save
  Workbooks("test.xlsx").Close




 既存ブックを別ファイルで保存・閉じる


ソースは下記となります。ファイルを閉じる時は、別名で保存した名前で閉じる点が注意です。

'既存のExcelブックを別名で新規保存
Workbooks("test.xlsx").SaveAs Filename:="C:\test\test2.xlsx"
Workbooks("test2.xlsx").Close

間違えないように下記の様にDir関数を使ってvbNormalを指定すると良いかもしれません。

'既存のExcelブックを別名で新規保存
Dim strFromFile As String   '既存ファイル
Dim strToFile As String    '新規ファイル

strFromFile = "C:\test\test.xlsx"   '既存ファイルの設定
strToFile = "C:\test\test2.xlsx"   '新規ファイルの設定
'名前を付けて保存
Workbooks(Dir(strFromFile, vbNormal)).SaveAs Filename:=strToFile
'ファイルを閉じる
Workbooks(Dir(strToFile, vbNormal)).Close

カテゴリー: VBa(Excelマクロ), システム開発 | コメントする

【Excelマクロ(VBa)】Excel情報取得


 Excelブックの情報取得


現在アクティブになっているExcelブックのパス・ブック名の取得方法をご紹介します。

Dim BookPath As String
Dim BookName As String

BookPath = ActiveWorkbook.Path   'パスの取得
BookName = ActiveWorkbook.Name   'ブック名の取得

現在オープンしているExcelブックのパス・ブック名の取得方法をご紹介します。
Workbooks.Count は 現在オープンしているExcel数を取得します。

'■ 変数定義・・数が未定なため動的配列とする
Dim AllBookPath() As String
Dim AllBookName() As String
Dim i As Integer

'配列の要素数を定義
ReDim AllBookPath(Workbooks.Count)
ReDim AllBookName(Workbooks.Count)

For i = 1 To Workbooks.Count
  AllBookPath(i - 1) = Workbooks(i).Path   'パスの取得
  AllBookName(i - 1) = Workbooks(i).Name   'ブック名の取得
Next i



 Excelワークシートの情報取得


現在アクティブになっているExcelワークシート名の取得方法をご紹介します。

'■ 変数定義
Dim WorkSheetName As String

WorkSheetName = ActiveWorkbook.ActiveSheet.Name   'ワークシート名の取得

1ブック中の全Excelワークシート名の取得方法をご紹介します。
Worksheets.Count は 1ブック中のワークシート数を取得します。

'■ 変数定義・・数が未定なため動的配列とする
Dim AllWorksheetName() As String
Dim i As Integer

'配列の要素数を定義
ReDim AllWorksheetName(Worksheets.Count)

For i = 1 To Worksheets.Count
  AllWorksheetName(i - 1) = Worksheets(i).Name   'ワークシート名の取得
Next i




 Excelブック・ワークシートの情報を取得し一元管理する


変数はグローバル変数として下記のように構造体を作成すると良いと思います。

'Excel情報の構造体
Type ExcelData
  BookPath As String    'ブックのパス
  BookName As String    'ブック名
  WorksheetCnt As Integer    'ワークシートの件数
  WorksheetName() As String    'ワークシート名
End Type

Global ExcelInfo() As ExcelData    'Excel情報の配列
Global ExcelInfoCnt As Integer    '件数

下記のように関数化して GetExcelInfo を call してはいかがでしょうか。

'Excelブック・ワークシートの情報を取得
Sub GetExcelInfo()

  'カウンター
  Dim i As Integer
  Dim j As Integer

  '構造体の初期化
  Erase ExcelInfo

  'オープンしているブック数を取得
  ExcelInfoCnt = Workbooks.Count
  '構造体の配列を動的にブック数に変更する
  ReDim ExcelInfo(Workbooks.Count)

  'ブック数分 ループする
  For i = 1 To ExcelInfoCnt
    'ブックのパス・ブック名を取得する
    ExcelInfo(i - 1).BookPath = Workbooks(i).Path
    ExcelInfo(i - 1).BookName = Workbooks(i).Name
  Next i

  'ブック数分 ループする
  For i = 1 To ExcelInfoCnt
    '該当のブックをアクティブにする
    Workbooks(ExcelInfo(i - 1).BookName).Activate
    'ワークシート数を取得する
    ExcelInfo(i - 1).WorksheetCnt = Worksheets.Count

    '構造体のワークシートの変数配列を動的にワークシート数に変更する
    ReDim ExcelInfo(i - 1).WorksheetName(ExcelInfo(i - 1).WorksheetCnt)

    'ワークシート数分 ループする
    For j = 1 To ExcelInfo(i - 1).WorksheetCnt
      'ワークシート名を取得する
      ExcelInfo(i - 1).WorksheetName(j - 1) = Worksheets(j).Name
    Next j
  Next i

End Sub

カテゴリー: VBa(Excelマクロ), システム開発 | コメントする

【Excelマクロ(VBa)】Excelマクロの作成(Excel2010)


 まず最初に...


Excelをインストールして、そのまま利用すると「開発」タブが無く、マクロを作ろうとしてもメニューがありません。この場合、開発タブを表示させる必要があります。

1.まず「ファイル」タブを選択します。



2.下記画面が表示されるので「ヘルプ」の下にある[オプション]をクリックします。



3.下記「Excelオプション」画面が起動するので右側にある「メインタブ」の[開発]にチェックを入れ、OKボタンを押します。



4.下記画面のように「開発」タブが表示されました。






 ボタンを作ってメッセージボックスを表示させてみる


簡単な動作確認をしてみましょう。Excel上にボタンを作って、押したらメッセージボックスを表示させてみます。

1.まず「開発」タブを選択し、下記画面のように[挿入]-[ActiveX コントロール]のボタンを選択します。



2.シート上にボタンを作ります。



3.「開発」タグのリボン上にある[プロパティ]を押してみましょう。下記画面が表示されます。プロパティでは、ボタンのようなオブジェクトの名前・色・表示/非表示など、色々な属性を設定する事が出来ます。


4.今回はメッセージボックスを表示させるので、ボタンに表示されている「CommandButton1」を「メッセージ」に変えてみます。プロパティの「Caption」という項目を「メッセージ」に書き直す事で出来ます。



5.通常はオブジェクト名も変更しますが、今回は初期値「CommandButton1」でメッセージボックスを表示させます。作成したボタンをダブルクリックしてみましょう。するとコードを書く下記画面が起動します。



6.それでは、「Private Sub CommandButton1_Click()」 と 「End Sub」(subプロシージャ)の中に「MsgBox "こんにちは"」とコードを書いてみましょう。



Private Sub CommandButton1_Click()

  MsgBox "こんにちは"

End Sub

7.Excelに戻って実際にExcelマクロを動かしてみますが、デザインモードになっていると思いますので、リボン上の「デザインモード」をクリックして解除し、「メッセージ」ボタンを押してみましょう。



8.下記のようにメッセージボックスが表示出来ました。



カテゴリー: VBa(Excelマクロ), システム開発 | コメントする

【ポケモンGO】ポケモン146種類ゲットだぜ!

ベビーポケモン2体追加した事によって、ゲットしたポケモンの種類が144種類から1つ飛び越えて146種類になりました。



タマゴからの孵化のみは、や・め・て・ほ・し・い!!

カテゴリー: ポケモンGO | コメントする

【ポケモンGO】ベビーポケモン2体孵化しました!

年末年始にポケストを回すと、1日1個孵化装置がゲットできたのと、課金をして孵化装置を買いまくりました。

そして、ほぼ全てのタマゴに孵化装置を付けて歩き回りますが・・・10Kmタマゴはしんどい・・・。

5Kmばかり出るのと、ベビーポケモンが孵化しやすいというワリには、トゲピー以降、なかなか生まれません。トゲピーが孵化した時の1割は良い方だったのかなぁ。

5Kmからはドードー・メノクラゲがよく孵化しました(T_T)



またトゲピー・・・(生まれないよりは良いけど偏りますね)



ここでププリンげっとしました!!


更に・・エレキッド!!



これで2016年は終わりました。

カテゴリー: ポケモンGO | コメントする