頻出パターン:
ブラウザ(IE)を自動操作したい
https://language-and-engineeri...
' IE起動
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http:// www.google.co.jp/"
ie.Visible = True
頻出パターン:
ブラウザ(IE)を自動操作したい
https://language-and-engineeri...
' IE起動
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http:// www.google.co.jp/"
ie.Visible = True
ブラウザを自動操作
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http:// www.google.co.jp/"
ie.Visible = True
' ビジー状態の間待つ
Do While ie.Busy = True Or ie.readystate <> 4
DoEvents
Loop
Sleep 100
ブラウザを自動操作
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http:// www.google.co.jp/"
ie.Visible = True
' ビジー状態の間待つ
Do While ie.Busy = True Or ie.readystate <> 4
DoEvents
Loop
Sleep 100
入力候補のサジェスト機能を作る:
セルの「入力規則」を
VBAで動的に書き換える。
ActiveCell.Validation.Delete
ActiveCell.Validation.Add Type:=xlValidateList, Formula1:="山田,山川"
ActiveCell.Validation.ShowError = False
https://language-and-engineeri...
入力候補のサジェスト機能を作る:
セルの「入力規則」を
VBAで動的に書き換える。
ActiveCell.Validation.Delete
ActiveCell.Validation.Add Type:=xlValidateList, Formula1:="山田,山川"
ActiveCell.Validation.ShowError = False
https://language-and-engineeri...
頻出パターン
IEを自動操作する際,
「COMイベント」を使いたい。
https://language-and-engineeri...
' イベント検知機能付き
Set objIE = CreateObject("InternetExplorer.Application")
' イベントフック
Private Sub objIE_OnQuit()
MsgBox "IEを閉じた"
End Sub
頻出パターン
IEを自動操作する際,
「COMイベント」を使いたい。
https://language-and-engineeri...
' イベント検知機能付き
Set objIE = CreateObject("InternetExplorer.Application")
' イベントフック
Private Sub objIE_OnQuit()
MsgBox "IEを閉じた"
End Sub
IEを自動操作する際,
「COMアプリケーションイベント」を使う
ツール→参照設定 から,
「Microsoft Browser Helpers」に
チェックを入れて参照設定しておくこと。
' COMイベントと関連付けて IE を定義
Public WithEvents objIE As InternetExplorer
IEを自動操作する際,
「COMアプリケーションイベント」を使う
ツール→参照設定 から,
「Microsoft Browser Helpers」に
チェックを入れて参照設定しておくこと。
' COMイベントと関連付けて IE を定義
Public WithEvents objIE As InternetExplorer
Debug.Print Round(2.5, 0), Round(3.5, 0)
結果は2と4です。.5は偶数側に丸められます。金額計算では注意しましょう。
#VBA #ExcelVBA #Round #金額計算
Debug.Print Round(2.5, 0), Round(3.5, 0)
結果は2と4です。.5は偶数側に丸められます。金額計算では注意しましょう。
#VBA #ExcelVBA #Round #金額計算
表計算ソフト:
#Excel関数を使いこなす
#ExcelVBAマクロを使いこなす
#GAS・GoogleAppsScriptの勉強
他のオフィスソフト:
#Wordの使い方Tips
#メールとメーラーの知識
マルチメディア系:
#AviUtlで動画編集する方法
入力候補のサジェスト機能を作りたい:
セルに文字列を入力したら
その入力文字列を確定するために
Enter キーではなく,Ctrl + Enter を押す。
・そうすれば,文字列を確定した時に
カーソルが移動しない。
・押下直後にWorkbook_SheetChangeイベントが走る
入力候補のサジェスト機能を作りたい:
セルに文字列を入力したら
その入力文字列を確定するために
Enter キーではなく,Ctrl + Enter を押す。
・そうすれば,文字列を確定した時に
カーソルが移動しない。
・押下直後にWorkbook_SheetChangeイベントが走る
入力候補のサジェスト機能を作る:
・アクティブなセルの
「入力規則」(Validation)を,
リアルタイムで変化させてゆく。
・セルの「入力規則」を,マウスを使わずに
キー入力だけで表示させるには
Alt+下キーを押せばよい。
・キャンセルは Esc キー
入力候補のサジェスト機能を作る:
・アクティブなセルの
「入力規則」(Validation)を,
リアルタイムで変化させてゆく。
・セルの「入力規則」を,マウスを使わずに
キー入力だけで表示させるには
Alt+下キーを押せばよい。
・キャンセルは Esc キー
Debug.Print StrConv("ABC123", vbNarrow)
結果はABC123です。氏名や商品コードの表記ゆれをなくし、検索や照合のミスを減らせます。
#VBA #ExcelVBA #StrConv #データ整形
Debug.Print StrConv("ABC123", vbNarrow)
結果はABC123です。氏名や商品コードの表記ゆれをなくし、検索や照合のミスを減らせます。
#VBA #ExcelVBA #StrConv #データ整形
入力候補のサジェスト機能:
Excelの「入力規則」機能で
セルに特定のデータしか入力できないよう制限できる。
[データ]タブ
→データの入力規則
→入力値の種類
→リスト
「石川,山田」と設定しておけば
「石川」と「山田」がドロップダウンに現れる。
入力候補のサジェスト機能:
Excelの「入力規則」機能で
セルに特定のデータしか入力できないよう制限できる。
[データ]タブ
→データの入力規則
→入力値の種類
→リスト
「石川,山田」と設定しておけば
「石川」と「山田」がドロップダウンに現れる。
頻出パターン:
複数ブック間でVBAコードを共有したい
→マクロのコードを
外部テキストファイル内に保管すればよい。
https://language-and-engineeri...
' テキストファイル内のVBAコードを標準モジュールに登録
ThisWorkbook.VBProject.VBComponents.Import file_path
頻出パターン:
複数ブック間でVBAコードを共有したい
→マクロのコードを
外部テキストファイル内に保管すればよい。
https://language-and-engineeri...
' テキストファイル内のVBAコードを標準モジュールに登録
ThisWorkbook.VBProject.VBComponents.Import file_path
入力候補のサジェスト機能を作りたい:
Excelの「入力規則」は,実用上は
ごく少数の入力候補しか使えない。
入力候補の数が増えてくると
ドロップダウンが巨大化して使いにくい。
検索のヒントを与えて自動補完する
「サジェスチョン機能」ではないのだ。
入力候補のサジェスト機能を作りたい:
Excelの「入力規則」は,実用上は
ごく少数の入力候補しか使えない。
入力候補の数が増えてくると
ドロップダウンが巨大化して使いにくい。
検索のヒントを与えて自動補完する
「サジェスチョン機能」ではないのだ。
マクロのコードを
外部テキストファイル内に保管することのメリット:
https://language-and-engineeri...
・複数のブックで,常に共通のマクロを利用できる。
・マクロに変更があっても,たった1箇所の修正ですむ。
・Git等で差分管理しやすい。
マクロのコードを
外部テキストファイル内に保管することのメリット:
https://language-and-engineeri...
・複数のブックで,常に共通のマクロを利用できる。
・マクロに変更があっても,たった1箇所の修正ですむ。
・Git等で差分管理しやすい。
頻出パターン:
別ブック内のマクロを実行したい
(複数ブック間でVBAコードを共有)
https://language-and-engineeri...
' 別ブックを開く
Workbooks.Open Filename:="D:\hoge\a.xlsx", ReadOnly:=True
Application.Run("'a.xlsx'!HogeModule.hello")
頻出パターン:
別ブック内のマクロを実行したい
(複数ブック間でVBAコードを共有)
https://language-and-engineeri...
' 別ブックを開く
Workbooks.Open Filename:="D:\hoge\a.xlsx", ReadOnly:=True
Application.Run("'a.xlsx'!HogeModule.hello")
頻出パターン:
入力ボックスやセルに,
「入力サジェスト機能」(検索候補の自動補完)
を付けたい。
https://language-and-engineeri...
「山」と入力したら
山田,山川などの候補をドロップダウンで表示。
最初の1文字だけ入力すればよく
楽だし,ミスタイプもない。
.
頻出パターン:
入力ボックスやセルに,
「入力サジェスト機能」(検索候補の自動補完)
を付けたい。
https://language-and-engineeri...
「山」と入力したら
山田,山川などの候補をドロップダウンで表示。
最初の1文字だけ入力すればよく
楽だし,ミスタイプもない。
.
頻出パターン:
シートやセルの「編集・可/不可」を切り替え
https://computer-technology.ha...
' シート保護解除
ActiveSheet.Unprotect
' セルのロック解除
If CheckBox1.Value = True Then
Range("E5").Locked = False
End If
' シート保護
ActiveSheet.Protect
頻出パターン:
シートやセルの「編集・可/不可」を切り替え
https://computer-technology.ha...
' シート保護解除
ActiveSheet.Unprotect
' セルのロック解除
If CheckBox1.Value = True Then
Range("E5").Locked = False
End If
' シート保護
ActiveSheet.Protect
頻出パターン:
配布したExcelブックで,中身のVBAコードを
見れないようにしたい。
https://language-and-engineeri...
VBE上で
ツール>VBAプロジェクトのプロパティ>保護
「プロジェクトを表示用にロックする」
「プロジェクトのプロパティ表示のためのパスワード」
頻出パターン:
配布したExcelブックで,中身のVBAコードを
見れないようにしたい。
https://language-and-engineeri...
VBE上で
ツール>VBAプロジェクトのプロパティ>保護
「プロジェクトを表示用にロックする」
「プロジェクトのプロパティ表示のためのパスワード」
シート保護時
各種オプションを設定可能
https://excel-ubara.com/excelv...
' セルの書式変更を許可
' 行挿入を許可
' 行削除を許可
sheet1.Protect _
AllowFormattingCells:=True, _
AllowInsertingRows:=True, _
AllowDeletingRows:=True
シート保護時
各種オプションを設定可能
https://excel-ubara.com/excelv...
' セルの書式変更を許可
' 行挿入を許可
' 行削除を許可
sheet1.Protect _
AllowFormattingCells:=True, _
AllowInsertingRows:=True, _
AllowDeletingRows:=True
VBAから画面キャプチャを自動撮影
この時,
Excelそのものが画面に表示されていてはダメ。
(スクリーンショットに余計な情報が混ざってしまう)
VBA上で,Excelを非表示に切り替えてから
PrintScreen処理を走らせよう。
撮影完了後に再表示すればよい。
VBAから画面キャプチャを自動撮影
この時,
Excelそのものが画面に表示されていてはダメ。
(スクリーンショットに余計な情報が混ざってしまう)
VBA上で,Excelを非表示に切り替えてから
PrintScreen処理を走らせよう。
撮影完了後に再表示すればよい。
「実行時エラー
変更しようとしているセルやグラフは保護されているシート上にあります。変更するには,シートの保護を解除してください。」
http://officetanaka.net/excel/...
ActiveSheet.Unprotectで
シート保護を解除すればよい。
「実行時エラー
変更しようとしているセルやグラフは保護されているシート上にあります。変更するには,シートの保護を解除してください。」
http://officetanaka.net/excel/...
ActiveSheet.Unprotectで
シート保護を解除すればよい。
シートやセルの「編集・可/不可」
・VBAから「セルのロック」を解除したい場合
RangeのLockedプロパティを操作する。
・シート保護が有効だと
「RangeクラスのLockedプロパティを設定できません。」 というエラーになるので
いったんシート保護の解除が必要。
シートやセルの「編集・可/不可」
・VBAから「セルのロック」を解除したい場合
RangeのLockedプロパティを操作する。
・シート保護が有効だと
「RangeクラスのLockedプロパティを設定できません。」 というエラーになるので
いったんシート保護の解除が必要。
' VBAで画面キャプチャ実行(PrintScreen)
keybd_event vbKeySnapshot, 0&, fKEYDOWN, 0&
keybd_event vbKeySnapshot, 0&, fKEYUP, 0&
' キャプチャ結果のスクショ画像をシートに貼り付け
Sheets("sheet1").Activate
Range("A1").Select
ActiveSheet.Paste
' VBAで画面キャプチャ実行(PrintScreen)
keybd_event vbKeySnapshot, 0&, fKEYDOWN, 0&
keybd_event vbKeySnapshot, 0&, fKEYUP, 0&
' キャプチャ結果のスクショ画像をシートに貼り付け
Sheets("sheet1").Activate
Range("A1").Select
ActiveSheet.Paste
頻出パターン:
フォルダ上の画像を,VBAで
シート上に読み込みたい
https://language-and-engineeri...
ActiveSheet.Shapes.AddPicture( _
Filename:=file_path, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=~, Top:=~, Width:=~, Height:=~)
頻出パターン:
フォルダ上の画像を,VBAで
シート上に読み込みたい
https://language-and-engineeri...
ActiveSheet.Shapes.AddPicture( _
Filename:=file_path, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=~, Top:=~, Width:=~, Height:=~)
VBAから,画面のスクショを自動撮影
&ブック内に保存
直前にシート内の全画像を削除しよう。
Sheets("sheet1").Activate
' このシート内の全画像について
For Each pic In ActiveSheet.Pictures
' 削除
pic.Delete
Next
https://language-and-engineeri...
VBAから,画面のスクショを自動撮影
&ブック内に保存
直前にシート内の全画像を削除しよう。
Sheets("sheet1").Activate
' このシート内の全画像について
For Each pic In ActiveSheet.Pictures
' 削除
pic.Delete
Next
https://language-and-engineeri...