
VBA エキスパート Professional 試験は、Office System としての活用を推進し、エンドユーザーの作業効率を最大に引き出すシステムデベロパーとしての役割を果たしている方を対象とします。
Excel や Access といった単体のアプリケーションを利用するというだけではなく、他のアプリケーションとの連携、他のデータベースへの接続、さらに、Office アプリケーションをバージョンアップするマイグレーションなど多岐に渡ります。
また、設問についても、VBA に関する知識はもちろん、エラー処理やプログラムの高速化に関する問題など、より実践的な内容となります。

次のプロシージャの実行結果として、正しいものを1つ選びなさい。
Sub Sample1()
Dim myRange As Range
On Error Resume Next ――①
If myRange = Null Then ――②
Debug.Print "OK" ――③
Else
Debug.Print "NO" ――④
End If
End Sub

次の3つのプロシージャは、すべて変数myBufに同じ文字列を代入する処理を行う。もっとも処理速度の遅いプロシージャを1つ選びなさい。
Sub Sample1()
Const fCOUNT As Long = 1000000
Dim i As Long, j As Long
Dim myRowBuf As String
Dim myLen As Long
Dim myBuf As String
Dim myTmpStr As String
myRowBuf = "Excel"
myLen = Len(myRowBuf) * fCOUNT + fCOUNT * 3
myBuf = String(myLen, vbNullChar)
For i = 1 To fCOUNT
myTmpStr = myRowBuf & "1" & vbCrLf
Mid(myBuf, j + 1, Len(myTmpStr)) = myTmpStr
j = j + Len(myTmpStr)
Next
End SubSub Sample2()
Const fCOUNT As Long = 1000000
Dim i As Long
Dim myRowBuf(1 To fCOUNT) As String
Dim myBuf As String
For i = 1 To fCOUNT
myRowBuf(i) = "Excel" & "1"
Next
myBuf = Join(myRowBuf, vbCrLf)
End SubSub Sample3()
Const fCOUNT As Long = 1000000
Dim i As Long
Dim myRowBuf As String
Dim myBuf As String
myRowBuf = "Excel"
For i = 1 To fCOUNT
myBuf = myBuf & vbCrLf & myRowBuf & "1"
Next
End Sub
次のそれぞれのコードによって定義されるクラスは、人を表すクラスで、データとして氏名を保持している。このとき、データである変数myNameがカプセル化されているものをすべて選びなさい。
Public myName As StringPrivate myName As String
Public Property Get personName() As String
personName = myName
End Property
Public Property Let personName(ByVal myNewName As String)
myName = myNewName & "さん"
End PropertyPrivate myName As String
Public Property Get personName() As String
personName = myName
End Property
Public Property Let personName(ByVal myNewName As String)
If Len(myNewName) < 2 Then Exit Property
myName = myNewName
End Property
次の、まったく同じ処理を行う4つのプロシージャの中から、もっとも編集効率が良いものを1つ選びなさい。
Function Sample1(price As Currency) As Currency
Sample1 = price + price * 0.05
End FunctionFunction Sample2(price As Currency) As Currency
Dim taxRate As Currency
taxRate = 0.05
Sample2 = price + price * taxRate
End FunctionFunction Sample3(price As Currency) As Currency
Const taxRate As Currency = 0.05
Sample3 = price + price * taxRate
End FunctionFunction Sample4(price As Currency) As Currency
Const taxRate As Currency = 0.05 '消費税率
Sample4 = price + price * taxRate
End Function
次のプロシージャは、XMLファイルのデータを、新規ブックにリスト形式で開くものである。①に入るものを1つ選びなさい。
Sub Sample()
Application.DisplayAlerts = False
Workbooks.( ① ) Filename:="C:\Sample.xml", _
LoadOption:=xlXmlLoadImportToList
Application.DisplayAlerts = True
End Sub
Open Format:=xlXMLSpreadsheet,OpenOpenXML Format:=xlXMLspreadsheetOpenXML
Excel2003で搭載されたウィンドウを[並べて比較する]機能で、並べて比較するブックを同時にスクロールするかどうかを指定するSyncScrollingSideBySideプロパティの説明について、正しいものを1つ選びなさい。

次のプロシージャは、指定したMDBデータベースのテーブルのレコード件数を取得して、イミディエイトウィンドウに表示するものである。
①に入る値として、適切なものを1つ選びなさい。なお、ADODBライブラリに対して参照設定しているものとする。
Sub Sample()
Dim myConnection As ADODB.Connection
Set myConnection = New ADODB.Connection
With myConnection
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=C:\Sample.mdb"
.Open
End With
With New ADODB.Recordset
Set .ActiveConnection = myConnection
.Source = "T_Sample"
.CursorType = ( ① )
.Open
Debug.Print .RecordCount
.Close
End With
myConnection.Close
Set myConnection = Nothing
End Sub
adOpenDynamicadOpenStaticadOpenForwardOnly
次の中から、WordライブラリのApplicationクラスで定義されていないメンバをすべて選びなさい。

SHDocVwライブラリのInternetExplorerクラスで定義されているプロパティで、現在表示されているページのURLを表すプロパティはどれか。1つ選びなさい。
CurrentURLLocationURLURLName