③ 故障となったファイルを共有していただいたら、以下の事が分かった。 a. 書き方サンプルをコピーし、仕様として決められたシート名に変更し ていなかった b. 書き方サンプルをコピーし、仕様として決められたシート名に変更し たのち、それを非表示にしてしまい、慌てて書き方サンプルに内容を 記載していた ⇒標準アクティビティに、使えそうなアクティビティがない!
L10:エントリメソッドの出口 Public Function AllSheetName() Dim ix As Integer AllSheetName = "" For ix = 1 To ActiveSheet.Parent.Sheets.Count AllSheetName = AllSheetName & vbTab & ActiveSheet.Parent.Sheets(ix).Name Next ix AllSheetName = Mid(AllSheetName, 2) End Function 1 2 3 4 5 6 7 8 9 10 InvokeVBA.bas
・使用PCのEXCELの信頼オプションを確認しよう! Public Function AllSheetName() Dim ix As Integer AllSheetName = "" For ix = 1 To ActiveSheet.Parent.Sheets.Count AllSheetName = AllSheetName & vbTab & ActiveSheet.Parent.Sheets(ix).Name Next ix AllSheetName = Mid(AllSheetName, 2) End Function 1 2 3 4 5 6 7 8 9 10 InvokeVBA.bas
Mid関数を使用し、最初のタブを除去する L10:エントリメソッドの出口 Public Function VisibleSheetName() Dim ix As Integer VisibleSheetName = "" For ix = 1 To ActiveSheet.Parent.Sheets.Count If ActiveSheet.Parent.Sheets(ix).Visible = -1 Then VisibleSheetName = VisibleSheetName & vbTab & ActiveSheet.Parent.Sheets(ix).Name End If Next ix VisibleSheetName = Mid(VisibleSheetName, 2) End Function 1 2 3 4 5 6 7 8 9 10 InvokeVBA.bas
Functionの戻り値の実行例 Public Function Dateを返します() As Date Dateを返します = DateSerial(1960, 11, 11) + TimeSerial(1, 2, 3) End Function Public Function 文字列配列を返します() As String() Dim WK() As String ReDim WK(2) WK(0) = "A" WK(1) = "B" WK(2) = "C" 文字列配列を返します = WK End Function CType(Object型, Int16) CType(Object型, DateTime)
For ix = 1 To ActiveSheet.Parent.Sheets.Count If ActiveSheet.Parent.Sheets(ix).Visible = -1 Then VisibleSheetName = VisibleSheetName & vbTab & ActiveSheet.Parent.Sheets(ix).Name End If Next ix VisibleSheetName = Mid(VisibleSheetName, 2) End Function 他のロボットでも使いやすくしてみよう! VBAの呼び出し.ToString.split(ControlChars.Tab) • [VBAの呼び出し]の戻り値(Object型)を、 • .ToStringして文字列変換し、 • tabコードで.Splitし、 • 配列化する VBAファイルを展開してもよいが、 • VBAファイルが書き換えられてしまう • 戻り値.ToString.split(ControlChars.Tab)をロボ側でやらねばならない手間 ライブラリ機能で実装してみよう!