「Excel VBA」の版間の差分
ナビゲーションに移動
検索に移動
| (同じ利用者による、間の18版が非表示) | |||
| 1行目: | 1行目: | ||
| − | ==Excel VBA== | + | | [[Excel]] | [[VB6]] | |
| − | ===Tips=== | + | ==[[Excel VBA]]== |
| − | [[Excel]] | + | ===[[Tips]]=== |
| − | ==== | + | ====[[Excel]]操作==== |
| − | *[Excel VBA セルからテキストを取得] [セルからテキストを取得] | + | =====Excel関数をVBAから使用する===== |
| − | + | *ワークシート関数をVBAで使用する(WorksheetFunctionプロパティ) | |
| − | + | ||
| − | + | =====可変長引数===== | |
| − | + | ||
| − | + | <pre> | |
| − | + | Public Sub Hoge(ParamArray foo() as Variant) | |
| − | + | End Sub | |
| − | + | </pre> | |
| − | + | ||
| − | + | =====[[Excel VBA セルからテキストを取得|セルからテキストを取得]]===== | |
| + | ---- | ||
| + | [[Excel VBA セルからテキストを取得|セルからテキストを取得]] | ||
| + | |||
| + | =====[[Excel VBA 最終更新日を取得|最終更新日を取得]]===== | ||
| + | ---- | ||
| + | [[Excel VBA 最終更新日を取得|最終更新日を取得]] | ||
| + | =====[[Excel VBA シートを設定ファイルとして利用する|シートを設定ファイルとして利用する]]===== | ||
| + | ---- | ||
| + | [[Excel VBA シートを設定ファイルとして利用する|シートを設定ファイルとして利用する]] | ||
| + | =====[[Excel VBA ユーザフォームを閉じさせない|ユーザフォームを閉じさせない]]===== | ||
| + | ---- | ||
| + | [[Excel VBA ユーザフォームを閉じさせない|ユーザフォームを閉じさせない]] | ||
| + | =====[[Excel VBA 確認のダイアログを表示させない|確認のダイアログを表示させない]]===== | ||
| + | ---- | ||
| + | [[Excel VBA 確認のダイアログを表示させない|確認のダイアログを表示させない]] | ||
| + | =====[[Excel VBA 最後のセルを取得|最後のセルを取得]]===== | ||
| + | ---- | ||
| + | [[Excel VBA 最後のセルを取得|最後のセルを取得]] | ||
| + | =====[[Excel VBA オートフィルタをシート間で同期|オートフィルタをシート間で同期]]===== | ||
| + | ---- | ||
| + | [[Excel VBA オートフィルタをシート間で同期|オートフィルタをシート間で同期]] | ||
| + | =====[[Excel VBA オートフィルタをで行が隠れているか判定|オートフィルタをで行が隠れているか判定]]===== | ||
| + | ---- | ||
| + | [[Excel VBA オートフィルタをで行が隠れているか判定|オートフィルタをで行が隠れているか判定]] | ||
| + | =====[[Excel VBA シート名を指定してハイパーリンクを作成|シート名を指定してハイパーリンクを作成]]===== | ||
| + | ---- | ||
| + | [[Excel VBA シート名を指定してハイパーリンクを作成|シート名を指定してハイパーリンクを作成]] | ||
| + | =====[[Excel VBA すべてのシートに対して一括置換|すべてのシートに対して一括置換]]===== | ||
| + | ---- | ||
| + | [[Excel VBA すべてのシートに対して一括置換|すべてのシートに対して一括置換]] | ||
| + | =====[[Excel VBA 処理中一時的に自動計算をとめる|処理中一時的に自動計算をとめる]]===== | ||
| + | ---- | ||
| + | [[Excel VBA 処理中一時的に自動計算をとめる|処理中一時的に自動計算をとめる]] | ||
| + | |||
| + | =====選択された範囲を処理======= | ||
| + | <pre> | ||
| + | If TypeName(Selection) = "Range" Then | ||
| + | For Each c In Selection.Cells | ||
| + | Debug.Print c.Value | ||
| + | Next | ||
| + | End If | ||
| + | </pre> | ||
| + | |||
====文字列操作==== | ====文字列操作==== | ||
| − | *VB6 固定長のString | + | *[[VB6 固定長のString]] |
| − | *[Excel VBA 文字列をバイト配列に変換] | + | *[[Excel VBA 文字列をバイト配列に変換|文字列をバイト配列に変換]] |
| − | *[Excel VBA 正規表現を使う] | + | *[[Excel VBA 正規表現を使う|正規表現を使う]] |
====数値操作==== | ====数値操作==== | ||
| − | *[Excel VBA 16進数表記] | + | *[[Excel VBA 16進数表記|16進数表記]] |
====ステートメント==== | ====ステートメント==== | ||
| − | *[Excel VBA Shell関数の同期] | + | *[[Excel VBA Shell関数の同期|Shell関数の同期]] |
| − | *[Excel VBA Printステートメントで改行しない] | + | *[[Excel VBA Printステートメントで改行しない|Printステートメントで改行しない]] |
| − | *VB6 サブルーチンの呼び出し | + | *[[VB6 サブルーチンの呼び出し]] |
====ファイル操作==== | ====ファイル操作==== | ||
| − | *[Excel VBA ディレクトリのファイルを繰り返し処理] | + | ---- |
| − | *[Excel VBA ディレクトリの再帰処理] | + | *[[Excel VBA ディレクトリのファイルを繰り返し処理|ディレクトリのファイルを繰り返し処理]] |
| − | *[Excel VBA ドライブ、ディレクトリを指定してファイルを開くダイアログを表示] | + | *[[Excel VBA ディレクトリの再帰処理|ディレクトリの再帰処理]] |
| − | *[Excel VBA 固定長の構造体をファイルから読む] | + | *[[Excel VBA ドライブ、ディレクトリを指定してファイルを開くダイアログを表示|ドライブ、ディレクトリを指定してファイルを開くダイアログを表示]] |
| + | *[[Excel VBA 固定長の構造体をファイルから読む|固定長の構造体をファイルから読む]] | ||
| + | |||
| + | =====ディレクトリの存在チェック===== | ||
| + | <pre> | ||
| + | If Dir(pathName, vbDirectory) = "" Then | ||
| + | : | ||
| + | End If | ||
| + | </pre> | ||
====オブジェクト操作==== | ====オブジェクト操作==== | ||
| − | *[Excel VBA Mapを使う] | + | *[[Excel VBA Mapを使う|Mapを使う]] |
| − | *[Excel VBA インターフェースを使う] | + | *[[Excel VBA インターフェースを使う|インターフェースを使う]] |
| − | *[Excel VBA IEを使う] | + | *[[Excel VBA IEを使う|IEを使う]] |
| − | *[VBA 起動中のInternetExplorerを操作する] | + | *[[VBA 起動中のInternetExplorerを操作する|起動中のInternetExplorerを操作する]] |
| − | *[Excel VBA 正規表現を使う] | + | *[[Excel VBA 正規表現を使う|正規表現を使う]] |
| − | *[Excel VBA GUIDを生成する] [ | + | *[[Excel VBA GUIDを生成する|GUIDを生成する]] |
| + | =====起動メニューアイコンを表示===== | ||
| + | *[https://www.profaim.jp/tools/soft/excel/faceid/index.php FaceId] | ||
| + | <pre> | ||
| + | Private Const MY_APP_FILE_MK As String = "ツールバー名" 'ツールバー名 | ||
| + | Private Const BTN_MY_APP_FILE_MK As String = "ボタン名" 'ボタン名 | ||
| + | ' | ||
| + | 'ToolBarをセット | ||
| + | ' | ||
| + | Private Sub loadToolBar() | ||
| + | Dim cbrGatherImgs As CommandBar | ||
| + | Dim btnGetImages As CommandBarButton | ||
| + | On Error Resume Next | ||
| + | ' コマンド バーが既に存在するかどうかを確認します。 | ||
| + | ' Set cbrGatherImgs = CommandBars(MY_APP_FILE_MK) | ||
| + | ' コマンド バーが存在しない場合は作成します。 | ||
| + | If cbrGatherImgs Is Nothing Then | ||
| + | Err.clear | ||
| + | Set cbrGatherImgs = CommandBars.add(MY_APP_FILE_MK) | ||
| + | ' コマンド バーを表示します。 | ||
| + | cbrGatherImgs.Visible = True | ||
| + | ' ボタン コントロールを追加します。 | ||
| + | Set btnGetImages = cbrGatherImgs.Controls.add | ||
| + | |||
| + | With btnGetImages | ||
| + | .Style = msoButtonIconAndCaption | ||
| + | .Caption = BTN_MY_APP_FILE_MK | ||
| + | .Tag = BTN_MY_APP_FILE_MK | ||
| + | ' ボタンがクリックされたときに実行するプロシージャを指定します。 | ||
| + | .OnAction = "mayAppMain" | ||
| + | .FaceId = 270& | ||
| + | End With | ||
| + | Else | ||
| + | ' 既存のコマンド バーを表示します。 | ||
| + | cbrGatherImgs.Visible = True | ||
| + | End If | ||
| + | End Sub | ||
| + | ' | ||
| + | 'ToolBarを削除 | ||
| + | ' | ||
| + | Private Sub unloadToolBar() | ||
| + | 'On Error Resume Next | ||
| + | On Error GoTo errHandler | ||
| + | |||
| + | ' 存在するコマンド バーを削除します。 | ||
| + | CommandBars(MY_APP_FILE_MK).Delete | ||
| + | |||
| + | Exit Sub | ||
| + | errHandler: | ||
| + | 'NOP | ||
| + | End Sub | ||
| + | |||
| + | ' | ||
| + | 'ファイルを開いたときに実行 | ||
| + | ' | ||
| + | Public Sub Auto_Open() | ||
| + | Call loadToolBar | ||
| + | End Sub | ||
| + | ' | ||
| + | 'ファイルを閉じたときに実行 | ||
| + | ' | ||
| + | Public Sub Auto_Close() | ||
| + | Call unloadToolBar | ||
| + | End Sub | ||
| + | </pre> | ||
| + | |||
====マクロサンプル==== | ====マクロサンプル==== | ||
| − | *Microsoft Project から Excelに吐き出したタスクの見栄えをちょっと整えるマクロ | + | =====[[Microsoft Project から Excelに吐き出したタスクの見栄えをちょっと整えるマクロ]]===== |
| − | *Perl VBのプロパティプロシージャを生成 | + | *[[Microsoft Project から Excelに吐き出したタスクの見栄えをちょっと整えるマクロ]] |
| − | *Excel VBA 最初の空白でないセルを返す | + | =====[[Perl VBのプロパティプロシージャを生成]] ===== |
| − | ===ライブラリ=== | + | *[[Perl VBのプロパティプロシージャを生成]] |
| − | *Excel VBA Utility | + | =====[[Excel VBA 最初の空白でないセルを返す]]===== |
| − | *Excel VBA File Utility | + | *[[Excel VBA 最初の空白でないセルを返す]] |
| − | *Excel VBA Log Utility | + | =====[[Excel VBA ワークシートをHTMLテーブル]]===== |
| − | *{{ref | + | *[[Excel VBA ワークシートをHTMLテーブル]] |
| + | |||
| + | ==ライブラリ== | ||
| + | ===Web API (JSON)の取得=== | ||
| + | ---- | ||
| + | *以下の組み合わせで、Windowsに依存せず([[Mac]]でも)利用できる | ||
| + | ====[https://github.com/VBA-tools/VBA-JSON VBA-JSON]==== | ||
| + | *[https://github.com/VBA-tools/VBA-JSON VBA-JSON] | ||
| + | ====[https://github.com/VBA-tools/VBA-Web VBA-WEB]==== | ||
| + | *[https://github.com/VBA-tools/VBA-Web VBA-WEB] | ||
| + | ====[https://github.com/VBA-tools/VBA-Dictionary/releases VBA-DICTIONARY]==== | ||
| + | *[https://github.com/VBA-tools/VBA-Dictionary/releases VBA-DICTIONARY] | ||
| + | <pre> | ||
| + | Sub JsonTest() | ||
| + | Dim url As String | ||
| + | Dim wbClient As New WebClient | ||
| + | |||
| + | url = "https://xxxxxxxxxx" | ||
| + | |||
| + | Dim Response As WebResponse | ||
| + | Set Response = wbClient.GetJson(url) | ||
| + | |||
| + | Dim jsonText As String | ||
| + | jsonText = Response.Content | ||
| + | Debug.Print jsonText | ||
| + | |||
| + | Dim Json As Object | ||
| + | Set Json = JsonConverter.ParseJson(jsonText) | ||
| + | |||
| + | Debug.Print JsonConverter.ConvertToJson(Json) | ||
| + | Debug.Print JsonConverter.ConvertToJson(Json, Whitespace:=2) | ||
| + | |||
| + | Debug.Print Json("_fieldsProto")("imageURL")("stringValue") | ||
| + | |||
| + | End Sub | ||
| + | </pre> | ||
| + | |||
| + | ====部品==== | ||
| + | *[[Excel VBA Utility]] | ||
| + | *[[Excel VBA File Utility]] | ||
| + | *[[Excel VBA Log Utility]] | ||
| + | |||
| + | ====その他==== | ||
| + | *{{ref レコード末尾にC[[R]]LF挿入v10.xls}} | ||
**{{ref recsplt.exe}} VC++版 ↑遅すぎ | **{{ref recsplt.exe}} VC++版 ↑遅すぎ | ||
| − | *Excel VBA プロパティのコードを生成する | + | *[[Excel VBA プロパティのコードを生成する]] |
| − | *ファンクションポイント 簡易マクロ | + | *[[ファンクションポイント 簡易マクロ]] |
| − | *Visio ER図の情報を取得する | + | *[[Visio ER図の情報を取得する]] |
| − | *[Excel VBA テーブル定義からJavaプロパティ名称作成] | + | *[[Excel VBA テーブル定義からJavaプロパティ名称作成|テーブル定義からJavaプロパティ名称作成]] |
2022年3月5日 (土) 02:00時点における最新版
目次
- 1 Excel VBA
- 1.1 Tips
- 1.1.1 Excel操作
- 1.1.1.1 Excel関数をVBAから使用する
- 1.1.1.2 可変長引数
- 1.1.1.3 セルからテキストを取得
- 1.1.1.4 最終更新日を取得
- 1.1.1.5 シートを設定ファイルとして利用する
- 1.1.1.6 ユーザフォームを閉じさせない
- 1.1.1.7 確認のダイアログを表示させない
- 1.1.1.8 最後のセルを取得
- 1.1.1.9 オートフィルタをシート間で同期
- 1.1.1.10 オートフィルタをで行が隠れているか判定
- 1.1.1.11 シート名を指定してハイパーリンクを作成
- 1.1.1.12 すべてのシートに対して一括置換
- 1.1.1.13 処理中一時的に自動計算をとめる
- 1.1.1.14 選択された範囲を処理==
- 1.1.2 文字列操作
- 1.1.3 数値操作
- 1.1.4 ステートメント
- 1.1.5 ファイル操作
- 1.1.6 オブジェクト操作
- 1.1.7 マクロサンプル
- 1.1.1 Excel操作
- 1.1 Tips
- 2 ライブラリ
Excel VBA
Tips
Excel操作
Excel関数をVBAから使用する
- ワークシート関数をVBAで使用する(WorksheetFunctionプロパティ)
可変長引数
Public Sub Hoge(ParamArray foo() as Variant) End Sub
セルからテキストを取得
最終更新日を取得
シートを設定ファイルとして利用する
ユーザフォームを閉じさせない
確認のダイアログを表示させない
最後のセルを取得
オートフィルタをシート間で同期
オートフィルタをで行が隠れているか判定
シート名を指定してハイパーリンクを作成
すべてのシートに対して一括置換
処理中一時的に自動計算をとめる
選択された範囲を処理==
If TypeName(Selection) = "Range" Then
For Each c In Selection.Cells
Debug.Print c.Value
Next
End If
文字列操作
数値操作
ステートメント
ファイル操作
ディレクトリの存在チェック
If Dir(pathName, vbDirectory) = "" Then : End If
オブジェクト操作
起動メニューアイコンを表示
Private Const MY_APP_FILE_MK As String = "ツールバー名" 'ツールバー名
Private Const BTN_MY_APP_FILE_MK As String = "ボタン名" 'ボタン名
'
'ToolBarをセット
'
Private Sub loadToolBar()
Dim cbrGatherImgs As CommandBar
Dim btnGetImages As CommandBarButton
On Error Resume Next
' コマンド バーが既に存在するかどうかを確認します。
' Set cbrGatherImgs = CommandBars(MY_APP_FILE_MK)
' コマンド バーが存在しない場合は作成します。
If cbrGatherImgs Is Nothing Then
Err.clear
Set cbrGatherImgs = CommandBars.add(MY_APP_FILE_MK)
' コマンド バーを表示します。
cbrGatherImgs.Visible = True
' ボタン コントロールを追加します。
Set btnGetImages = cbrGatherImgs.Controls.add
With btnGetImages
.Style = msoButtonIconAndCaption
.Caption = BTN_MY_APP_FILE_MK
.Tag = BTN_MY_APP_FILE_MK
' ボタンがクリックされたときに実行するプロシージャを指定します。
.OnAction = "mayAppMain"
.FaceId = 270&
End With
Else
' 既存のコマンド バーを表示します。
cbrGatherImgs.Visible = True
End If
End Sub
'
'ToolBarを削除
'
Private Sub unloadToolBar()
'On Error Resume Next
On Error GoTo errHandler
' 存在するコマンド バーを削除します。
CommandBars(MY_APP_FILE_MK).Delete
Exit Sub
errHandler:
'NOP
End Sub
'
'ファイルを開いたときに実行
'
Public Sub Auto_Open()
Call loadToolBar
End Sub
'
'ファイルを閉じたときに実行
'
Public Sub Auto_Close()
Call unloadToolBar
End Sub
マクロサンプル
Microsoft Project から Excelに吐き出したタスクの見栄えをちょっと整えるマクロ
Perl VBのプロパティプロシージャを生成
Excel VBA 最初の空白でないセルを返す
Excel VBA ワークシートをHTMLテーブル
ライブラリ
Web API (JSON)の取得
- 以下の組み合わせで、Windowsに依存せず(Macでも)利用できる
VBA-JSON
VBA-WEB
VBA-DICTIONARY
Sub JsonTest()
Dim url As String
Dim wbClient As New WebClient
url = "https://xxxxxxxxxx"
Dim Response As WebResponse
Set Response = wbClient.GetJson(url)
Dim jsonText As String
jsonText = Response.Content
Debug.Print jsonText
Dim Json As Object
Set Json = JsonConverter.ParseJson(jsonText)
Debug.Print JsonConverter.ConvertToJson(Json)
Debug.Print JsonConverter.ConvertToJson(Json, Whitespace:=2)
Debug.Print Json("_fieldsProto")("imageURL")("stringValue")
End Sub
部品
その他
- {{ref レコード末尾にCRLF挿入v10.xls}}
- テンプレート:Ref recsplt.exe VC++版 ↑遅すぎ
- Excel VBA プロパティのコードを生成する
- ファンクションポイント 簡易マクロ
- Visio ER図の情報を取得する
- テーブル定義からJavaプロパティ名称作成
© 2006 矢木浩人