| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Excel VBA」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==Excel VBA== ===Tips=== [Excel] ====Excel操作==== *[Excel VBA セルからテキストを取得] [セルからテキストを取得] *[Excel VBA 最終更新日…」)
 
 
(同じ利用者による、間の20版が非表示)
1行目: 1行目:
==Excel VBA==
+
| [[Excel]] |  [[VB6]] |
===Tips===
+
==[[Excel VBA]]==
[Excel]
+
===[[Tips]]===
====Excel操作====
+
====[[Excel]]操作====
*[Excel VBA セルからテキストを取得] [セルからテキストを取得]
+
=====Excel関数をVBAから使用する=====
*[Excel VBA 最終更新日を取得] [最終更新日を取得]
+
*ワークシート関数をVBAで使用する(WorksheetFunctionプロパティ)
*[Excel VBA シートを設定ファイルとして利用する] [シートを設定ファイルとして利用する]
+
 
*[Excel VBA ユーザフォームを閉じさせない] [ユーザフォームを閉じさせない]
+
=====可変長引数=====
*[Excel VBA 確認のダイアログを表示させない] [確認のダイアログを表示させない]
+
 
*[Excel VBA 最後のセルを取得] [最後のセルを取得]
+
<pre>
*[Excel VBA オートフィルタをシート間で同期] [オートフィルタをシート間で同期]
+
Public Sub Hoge(ParamArray foo() as Variant)
*[Excel VBA オートフィルタをで行が隠れているか判定] [オートフィルタをで行が隠れているか判定]
+
End Sub
*[Excel VBA シート名を指定してハイパーリンクを作成] [シート名を指定してハイパーリンクを作成]
+
</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 すべてのシートに対して一括置換|すべてのシートに対して一括置換]]
 +
=====[[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進数表記] [16進数表記]
+
*[[Excel VBA 16進数表記|16進数表記]]
 
====ステートメント====
 
====ステートメント====
*[Excel VBA Shell関数の同期] [Shell関数の同期]
+
*[[Excel VBA Shell関数の同期|Shell関数の同期]]
*[Excel VBA Printステートメントで改行しない] [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を使う] [Mapを使う]
+
*[[Excel VBA Mapを使う|Mapを使う]]
*[Excel VBA インターフェースを使う] [インターフェースを使う]
+
*[[Excel VBA インターフェースを使う|インターフェースを使う]]
*[Excel VBA IEを使う] [IEを使う]
+
*[[Excel VBA IEを使う|IEを使う]]
*[VBA 起動中のInternetExplorerを操作する] [起動中のInternetExplorerを操作する]
+
*[[VBA 起動中のInternetExplorerを操作する|起動中のInternetExplorerを操作する]]
*[Excel VBA 正規表現を使う] [正規表現を使う]
+
*[[Excel VBA 正規表現を使う|正規表現を使う]]
*[Excel VBA GUIDを生成する] [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 レコード末尾にCRLF挿入v10.xls}}
+
*[[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プロパティ名称作成] [テーブル定義からJavaプロパティ名称作成]
+
*[[Excel VBA テーブル定義からJavaプロパティ名称作成|テーブル定義からJavaプロパティ名称作成]]

2022年3月5日 (土) 02:00時点における最新版

| Excel | VB6 |

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

部品

その他