Excel VBA Sample 2

					
Sub fairusakusei()			フォルダを指定してエクセルファイルをたくさん作る		
Dim counter As Integer, mynum As Integer					
Dim myname As Integer
'counterの数字をIDに割り振る
counter = 3000

Do
counter = counter + 1
myname = CStr(counter)

ChDir "C:\WINDOWS\デスクトップ\ankeito"
'同じファイル名のファイルがあっても無視。上書きしてしまえ
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs myname


Loop Until counter = 3200
End Sub
			
Private Sub Worksheet_SelectionChange(ByVal Target As Range)			
Dim i As Integer			選択セルのある行見出しの文字の強調
Range("a:a").Font.Size = 10			
i = Selection.Row			
Range("a" & i).Font.Size = 30			
End Sub			
			
Private Sub Workbook_Open()			アシスタントの表示

    Sheets(1).Select			
    Assistant.Visible = True			
    Assistant.Move 350, 400			
    			
    With Assistant.NewBalloon			
        .Icon = msoIconTip			
        .Heading = "集計の操作手順と注意"
        .Labels(1).Text = "1.広告郵便データを読み込みます。"
        .Labels(2).Text = "2.実行ボタン押下で集計を開始します。"
        .Labels(3).Text = "(注意)メニューのシートは削除しないでください。"
        .Button = msoButtonSetOK
        .Show
    End With
    
    Assistant.Visible = False
End Sub

Sub アプリケーションの起動()

Dim oWord As Object
Set oWord = GetObject("C:\My Documents\ワード文書\年賀状.doc")
oWord.Application.Visible = True
oWord.UserControl = True


End Sub


Sub 一つ前のシートを選択させる()
On Error GoTo z
ActiveSheet.Previous.Select
Exit Sub
z: ActiveSheet.Next.Select
End Sub

Sub 別シートのセルの値を参照する()
    Range("h2").Formula = "=g2-" & "'" & ActiveSheet.Previous.Name & "'" & "!g2"
    Range("h2").AutoFill Destination:=Range("h2:" & "h" & i)
end sub				
				
Sub 25名の席替え()				地道すぎるか・・・
Application.ScreenUpdating = False				
Range("a1:a5").Copy Destination:=Range("g1:g5")				
Range("b1:b5").Copy Destination:=Range("g6:g10")				
Range("c1:c5").Copy Destination:=Range("g11:g15")				
Range("d1:d5").Copy Destination:=Range("g16:g20")				
Range("e1:e5").Copy Destination:=Range("g21:g25")				

VBA.Randomize				
    With Range("h1")				
        .Formula = "=RAND()"				
        .AutoFill Destination:=Range("H1:H25"), Type:=xlFillDefault				
    End With				
    				
    Range("g1:H25").Select
    Selection.Sort Key1:=Range("H1"), Order1:=xlAscending
    
Range("g1:g5").Copy Destination:=Range("a10:a14")
Range("g6:g10").Copy Destination:=Range("b10:b14")
Range("g11:g15").Copy Destination:=Range("c10:c14")
Range("g16:g20").Copy Destination:=Range("d10:d14")
Range("g21:g25").Copy Destination:=Range("e10:e14")

ActiveSheet.UsedRange.Copy
 Range("a1").PasteSpecial Paste:=xlPasteValues
 Application.CutCopyMode = False
 Range("g1:h25").Clear
 Range("a1").Select
End Sub

Dim myie As Object		←ブックを開くと同時にIEたちあげ、閉じる時はもろともに。プロシージャの外で変数を宣言するのが味噌。
		
Private Sub Workbook_Open()		
   Dim url As String		
   url = "http://www2.moug.net/app/bbs/thread.php?cat=exvba"		
   On Error GoTo ERR1:		
   Set myie = CreateObject("InternetExplorer.Application")		
   myie.navigate url		
   myie.Visible = True		
   		
   '5秒待機・・・・		
   Application.Wait (Now + TimeValue("00:00:05"))		

ERR1:		
   Debug.Print Err.Number		
   Debug.Print Err.Description		
End Sub				

				
Private Sub Workbook_BeforeClose(Cancel As Boolean)				
    On Error Resume Next				
   myie.Quit				
   Set myie = Nothing				
End Sub				
				
Sub フィルター()				expression.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)
Dim database as range,Criteria as range				フィルターを解除するには何も条件を指定しないで再度フィルタを実行する
Range("Database").AdvancedFilter _				
    Action:=xlFilterInPlace, _				
    CriteriaRange:=Range("Criteria")				
    				
End Sub				

Sub フィルター2()
Dim database as range,Criteria as range
Range("Database").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Range("Criteria")
CopyToRange:=sheet2.range("a1")
End Sub

Sub ダイアログでファイルを開く()
    Dim vFileName As Variant
    Dim vObjFs As Variant
    Dim vGetFile As Variant
    Dim wMybook As Workbook

    vFileName = Application.GetOpenFilename( _
                FileFilter:="Excelファイル(*.csv),*.csv", _					
                Title:="ファイルの読み込み", MultiSelect:=False)					
    If vFileName = False Then Exit Sub					
    'ファイル情報取得					
    Set vObjFs = CreateObject("Scripting.FileSystemObject")					
    Set vGetFile = vObjFs.GetFile(vFileName)					
        With wMybook					
        Workbooks.Open vFileName					
        End With					

End Sub					
					
Private Sub Worksheet_Change(ByVal Target As Range)					更新後処理で時刻を表示させる

    Dim rngU As Range					
    Dim i As Range					

    Set rngU = Application _			
              .Intersect(Target, Me.Range("A2:A10"))			
    If rngU Is Nothing Then			
        Exit Sub			
    End If			
'******データ更新で時刻を変えたくない時は下の1行を入れる			
    'Application.EnableEvents = False			
    For Each i In rngU			
        i.Offset(0, 1).Value = Now			
    Next i			
    Application.EnableEvents = True			

End Sub			
			
Private Sub Workbook_Open()			アプリケーションの非表示
Application.Visible = False				
UserForm1.Show				
End Sub				
				
Sub ExcelからWordを起動して文書を開く()				エクセルからワードファイルを開く
Dim o_Myword As Object				
Dim o_myDocument As Object				
Dim s_Mypass As String				
'				
    s_Mypass = "C:\a\b\xxx.doc"              'フルパスを作成				
    Set o_Myword = CreateObject("Word.Application") 'Wordを起動する				
  o_Myword.Visible = True                       'Wordを表示する				
    Set o_Mydocument = o_Myword.documents.Open(s_Mypass) 'Word文書を開く				
End Sub				
				
Private Sub Document_Open()			開くワードファイルのオープンイベント	
    ActiveDocument.PrintPreview					


End Sub					
					エクセルファイルでMP3を鳴らす
	にゃご	2003/11/02(日)	パスワード		
		14:28:20			
こんにちは					

こんな方法でどうでしょう?					
(MP3ファイルの再生が、Windows Media Playerに関連付けら					
れているということで)					

1)Windows Media Playerに参照設定します。					

2)ワークシートへ					
  「表示」-「ツールバー」-「コントロールツールボックス」
   の「コントロールの選択」から Windows Media Playerを
   選択して、適当な大きさで貼り付けます。

3)貼り付けた図を、ダブルクリックするとVBEが開き、プロパ
   ティから、「URL」に再生したいMP3ファイルのフルパスを
   記入します。Windows Media Playerを非表示にしたければ
   「Visible」を「False」に設定します。

4)ワークシートへ戻って、デザインモードを終了させて、保
   存して終了します。

5)ブックを開けば、再生できると思います。

(注)連続再生する場合は、一工夫必要にゃ♪

役に立たなければごめんにゃ (^^♪   			
			
			
			
			
			
Sub test2()		シートの上書きの判断	
    Dim S As String			
    Dim S2 As String			
    Dim Theworkbook As String 'Thebook(フルパス)			
    Dim WBname As String			
    Dim Thesheet As Worksheet			
    Dim Thesheet2 As Worksheet			
    Dim Sht As Worksheet			
    Application.DisplayAlerts = False			
    Theworkbook = "C:\WINDOWS\デスクトップ\Thebook.xls"			
    WBname = "Thebook.xls"	
    Set Thesheet = ThisWorkbook.Sheets(1)	
    Set Thesheet2 = ThisWorkbook.Sheets(2)	

    S = "hogehoge"	
    Workbooks.Open Filename:=Theworkbook	
        Thesheet.Copy before:=Workbooks(WBname).Sheets(1)	
        For Each Sht In Workbooks(WBname).Sheets	
            If Sht.Name = S Then	
                If MsgBox("上書きしますか?", vbYesNo) = vbYes Then	
                    Workbooks(WBname).Sheets(S).Delete	
                    Exit For	
                Else	
                    Workbooks(WBname).Close savechanges:=False	     goto a
                  End	

                End If
            End If
        Next Sht
        Workbooks(WBname).Sheets(1).Name = S

a:
    S2 = "fushufushu"
        Thesheet2.Copy before:=Workbooks(WBname).Sheets(1)
        For Each Sht In Workbooks(WBname).Sheets
            If Sht.Name = S2 Then
                If MsgBox("上書きしますか?", vbYesNo) = vbYes Then
                    Workbooks(WBname).Sheets(S2).Delete
                Exit For
                Else
                    Workbooks(WBname).Close savechanges:=False
                    End
                End If
            End If
        Next Sht
            Workbooks(WBname).Sheets(1).Name = S2
    With Workbooks(WBname)
        With .Sheets(S).UsedRange
            .Copy
            .PasteSpecial Paste:=xlPasteValues
        End With
        With .Sheets(S2).UsedRange
            .Copy
            .PasteSpecial Paste:=xlPasteValues
        End With
    End With
    Application.CutCopyMode = False
    With Workbooks(WBname)
    .Save				
    .Close				
    End With				
    Exit Sub				
End Sub				



■シートとか行とか列の削除を禁止する
--------------------------------------------------------------------------------------
'ThisWorkBookモジュール
'このサンプルは Sheet1 の行の削除のみ許可し
'sheet1,2,3のシートの削除行列とセルの削除を禁止します。
'他のブックとシートに影響を与えません
Option Explicit
Private WithEvents BtnCellPuUpDelete As Office.CommandBarButton
Private WithEvents BtnDelete As Office.CommandBarButton
Private WithEvents BtnRwDelete As Office.CommandBarButton
Private WithEvents BtnClmDelete As Office.CommandBarButton
Private WithEvents BtnWSDelete As Office.CommandBarButton

Sub ignition()
    Set BtnDelete = Application.CommandBars.FindControl(, 478)
    Set BtnCellPuUpDelete = Application.CommandBars.FindControl(, 292)
    Set BtnRwDelete = Application.CommandBars.FindControl(, 293)
    Set BtnClmDelete = Application.CommandBars.FindControl(, 294)
    Set BtnWSDelete = Application.CommandBars.FindControl(, 847)
End Sub

Private Sub BtnDelete_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    If ActiveWorkbook Is ThisWorkbook Then
        If _
            ActiveSheet Is Sheet1 Or _
            ActiveSheet Is Sheet2 Or _
            ActiveSheet Is Sheet3 Then

        Call StopDelete(CancelDefault)
        End If
    End If
End Sub

Private Sub BtnRwDelete_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    Dim r As Range
    Dim dflg As Boolean: dflg = False
    If ActiveWorkbook Is ThisWorkbook Then
        If ActiveSheet Is Sheet1 Then
            For Each r In Selection.Rows
                If r.Row < 4 Then
                    dflg = True
                End If
            Next
        End If
        If dflg Then
            Call StopDelete(CancelDefault)
        End If
    End If
End Sub

Private Sub StopDelete(CancelDefault As Boolean)
    MsgBox "削除できません"
    CancelDefault = True
End Sub

Private Sub SetBtnUnEnabled(mode As Boolean)
    
    BtnCellPuUpDelete.Enabled = mode
    BtnRwDelete.Enabled = mode
    BtnClmDelete.Enabled = mode
    If ActiveSheet.Name = Sheet1.Name Then
        BtnRwDelete.Enabled = True
    End If
End Sub

Private Sub BtnWSDelete_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    If ActiveWorkbook Is ThisWorkbook Then
        If _
            ActiveSheet Is Sheet1 Or _
            ActiveSheet Is Sheet2 Or _
            ActiveSheet Is Sheet3 Then
        
            Call StopDelete(CancelDefault)
        End If
    End If
End Sub

Private Sub Workbook_Activate()
    Call SetBtnUnEnabled(False)
End Sub

Private Sub Workbook_Deactivate()
    Call SetBtnUnEnabled(True)
End Sub

Private Sub Workbook_Open()
    Call ignition
    
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If _
        Sh Is Sheet1 Or _
        Sh Is Sheet2 Or _
        Sh Is Sheet3 Then
        
        Call SetBtnUnEnabled(False)
    Else
        Call SetBtnUnEnabled(True)
    End If
    If Sh Is Sheet1 Then
        BtnRwDelete.Enabled = True
    End If
End Sub

--------------------------------------------------------------------------------------		
		
Sub File_Name()		ファイル名の取得
    Dim strWB As String, Mypos As Variant		
    strWB = "C:\windows\デスクトップ\エクセル.xls"		
    		
    Mypos = InStrRev(strWB, "\", Len(strWB), vbTextCompare)		
    'len(strWB)は-1としても文字列の長さを取得できる。		
    'そして、省略すると-1になるので、		
    'InStrRev(strWB,"\")と書いてもOK		
    Debug.Print "\の位置", Mypos; Len(strWB)						
    Debug.Print Right(strWB, Len(strWB) - Mypos)						
End Sub						
						
Private Sub UserForm_Initialize()			RowSourceの範囲にシート名まで指定する			
   With Me						
    .nen.RowSource = Sheets(2).Range("h1:h12").Address(external:=True)						
    .tuki.RowSource = Sheets(2).Range("i1:i12").Address(external:=True)						
    .hi.RowSource = Sheets(2).Range("j1:j31").Address(external:=True)						
   End With						
End Sub						

						
Private Sub Worksheet_SelectionChange(ByVal Target As Range)						
    If Application.CutCopyMode Then Exit Sub						コマンドボタンを常に一定のポジションの表示させる
    With Application.ActiveWindow.VisibleRange.Cells(1)						
        Me.CommandButton1.Left = .Left
        Me.CommandButton1.Top = .Top
    End With
End Sub
Sub メール()
Dim mySendTo As String
Dim mySubject As String
Dim myBody As String
Dim myCC As String
Dim myBCC As String
mySendTo = "xxx@xxxx.xx"
myCC = "abcd@xyz.co.jp"
'myBCC = "hoge@hogehoge.jp"
mySubject = "これが件名です。"
myBody = "これが本文です。" & vbCrLf & "2行目です。"
'myBody = Replace(Replace(myBody, vbCr, "%0D"), vbLf, "%0A")
ThisWorkbook.FollowHyperlink _
        "mailto:" & mySendTo _
        & "?CC=" & myCC _
        & "&BCC=" & myBCC _
        & "&Subject=" & mySubject _
        & "&Body=" & myBody

End Sub
Sub 列名の取得()
With Selection
        MsgBox Replace(.Address(False, False), .Row, "")
End With

End Sub
sub シートを追加してついでに名前をつける
    Worksheets.Add(after:=Worksheets.Count).Name = "hoge"
End Sub			
Sub Temp()			配列の足し算
     With Range("D1:D8000")			
         .Value = "=SUM(A1:C1)"			
         .Value = .Value			
     End With			
End Sub			
ワークシート1枚だけの新しいブックを作り、その中のシートの名前を「ふに			
ふに」にします。			
			
Sub addの定数()			
    Workbooks.Add(Template:=xlWBATWorksheet).Worksheets(1).Name = "ふ			
にふに"			
テンプレートを呼び出す書き方			
    Workbooks.Add Template:= _			
        "C:\WINDOWS\Application Data\Microsoft\Templates\test1.xlt"			
End sub	ひこ	2004/05/27(木)	削除できません
		0.034456019	
yamaV1.02βさん,こんにちは.			
>autofillってのがなぁ			
			
Sub 検索値が配列なら返り値も配列1()			
    With Sheets("Sheet1").Range("B2:B1000")			
        .Value = WorksheetFunction.VLookup( _			
            .Offset(, -1), _			
            Sheets("Sheet2").Range("a:g"), 7, True _			
        )			
    End With			
End Sub			

>なんだか野暮ったい気がしてきていて			
ん〜,でもカンタンで好きだなあ.			

Sub 検索値が配列なら返り値も配列2()
    Dim avntMatch As Variant, avntAns As Variant, avnt値を返す列の値 A
s Variant, Index As Long
    With Sheets("Sheet1").Range("B2:B1000")
        avntMatch = Application.Match( _
            .Offset(, -1), _
            Sheets("Sheet2").Range("A:A"), _
            1 _
        )
        ReDim avntAns(LBound(avntMatch) To UBound(avntMatch), 1 To 1)
        avnt値を返す列の値 = Sheets("Sheet2").Range("G:G").Value
        For Index = LBound(avntMatch) To UBound(avntMatch)
            '完全一致判定は眠いのでパス
            avntAns(Index, 1) = avnt値を返す列の値(avntMatch(Index, 1)
, 1)
        Next			
        .Value = avntAns			
    End With			
End Sub			





	上妻	2004/05/27(木)	削除できません
		0.332777778	
>・・・・照合の型って0じゃなくて・・・?			
大量データの検索をやる場合は、特に検査範囲が広い			
場合、Matchの照合の型0を使うのは馬鹿げたことです。			
毎回最初から一つ一つなめて検索していきますから、			
時間がかかってしょうがないです。			

Matchを使う場合は、検査範囲をソートして照合の型を
1(あるいは省略)にしたほうが良いですよ。
照合の型が0は逐次探索(馬鹿サーチ)なのにたいして、
照合の型が1や-1は二分探索(バイナリサーチ)なので、
速度が全然違います。

注意点は検査範囲はきちんとデータ範囲にすることです。
見出しを含めるのはもちろんご法度ですが、余分に
後ろの空白を含めるのもご法度です。
あべこべに照合の型0より遅くなってしまいます。

なお関数でのロジックは、ここにもどこかに書いた
はずですが、一般掲示板の
http://www2.moug.net/app/bbs/message.php?cat=exopr&id=20040518-000027
ここの2004/05/19(水)10:27:58にも書いてます。
これをコードにするだけです。
っていっても簡単ではないか。^^;
昔からあきるほど書いてるけど、残念ながら一部の
理解力のある人にしか浸透してないみたいですから。
Sub 四桁の2進数書き出し()
    Dim x(4) As String '()内が桁数
    Dim atai(4) As String
    Dim i As Long
    x(1) = 0
    x(2) = 0
    x(3) = 0
    x(4) = 0
        For i = 0 To 15
            x(4) = i Mod 2
            atai(1) = Int(i / 2)
            If atai(1) >= 2 Then
                x(3) = atai(1) Mod 2
                atai(2) = Int(atai(1) / 2)
                If atai(2) >= 2 Then
                    x(2) = atai(2) Mod 2
                    atai(3) = Int(atai(2) / 2)
                    atai(3) = Int(atai(2) / 2)
                            x(1) = atai(3) Mod 2
                Else: x(2) = atai(2)
                End If
            Else: x(3) = atai(1)
            End If
            Debug.Print x(1) & x(2) & x(3) & x(4)
        Next
End Sub
Private Sub SoushinOK_Click()
'シートのコピーを返信する
    Dim sendWB As Workbook
    Dim Kenmei As Variant
    Dim myTemp As String
    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With
    myTemp = Left(CurDir, InStr(1, CurDir, "\", vbBinaryCompare))
    Kenmei = Sheet1.Range("b18").Value & "取り戻し請求調査調書"
    'ファイル1時保存場所に同名のファイルを作らない処理
    i = 0
    'Debug.Print Dir(myTemp & Kenmei & ".xls")
    Do Until Dir(myTemp & Kenmei & ".xls") = ""
        i = i + 1
        Kenmei = Left(Kenmei, Len(Kenmei)) & "(" & i & ")"
    Loop
    For Each Workbook In Workbooks
    Debug.Print Workbook.Name
        If Workbook.Name = Kenmei & ".xls" Then
            i = i + 1
            Kenmei = Left(Kenmei, Len(Kenmei)) & "(" & i & ")"
        End If
        
    Next Workbook
    Kenmei = Kenmei & ".xls"
    If MsgBox("返信してよろしいですか?", vbDefaultButton2 + vbInformation + vbYesNo, _
        "確認をお願いいたします") = vbYes Then
        If MsgBox("[プログラムがメールを送信しようとしています]、或いは、[プロファイルの選択]という何らかのダイアログが表示されます。" & vbCrLf & _
        "[OK]を選択するとメールで送信されます。", vbInformation + vbOKOnly, "お願い") = vbOK Then
            With Sheet1
                If .Range("b18").Value = "" Then
                    MsgBox "為替番号が未入力です。" & vbCrLf & _
                    "入力を確認してからやり直してください。"
                    GoTo x
                ElseIf .Range("k8").Value = "" Then
                    MsgBox "担当者名が未入力です。" & vbCrLf & _
                    "入力を確認してからやり直してください。"
                    GoTo x
                ElseIf .Range("k9").Value = "" Then
                    MsgBox "電話番号が未入力です。" & vbCrLf & _
                    "入力を確認してからやり直してください。"
                    GoTo x
                End If
            End With
            Sheet1.Copy
            Set sendWB = ActiveWorkbook
            sendWB.SaveAs Filename:=myTemp & Kenmei
            With sendWB
                .SendMail Recipients:="xatsushi@tbb.t-com.ne.jp", Subject:=Kenmei, ReturnReceipt:=True
            End With
            If MsgBox("送信したシートを印刷しますか", vbDefaultButton1 + vbInformation + vbYesNo, "「はい」を選択すると画面を印刷します") = vbYes Then
                Sheet1.PrintOut
            End If
        End If
    End If
    sendWB.Close
    Kill myTemp & Kenmei
    Exit Sub
x:
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
    
End Sub
Sub dd()
'シート名の重複回避
Dim ii As Integer, i As Integer,intWS as integer
ii = 0
i = 0
On Error GoTo ERR_dd
Do Until i > 10
i = i + 1
Set WS = Worksheets.Add(after:=Worksheets(Sheets.Count))
shName = "aaa"
intWS=len(shName)
reName:
WS.Name = shName

Loop
Exit Sub
ERR_dd:
If Err.Number = 1004 Then
ii = ii + 1
    shName = Left(shName,intWS) & "(" & ii & ")"
    Resume reName
End If
MsgBox Err.Number & " :  " & Err.Description
End Sub
Sub 100のシートを新規ブックへ移動()
For i = 2 To 101
selectのfalseはシートオブジェクトのみの引数。それまで選ばれていたシートも選択したままさらにシートを選択する。
ActiveWorkbook.Sheets(2).Select Replace:=False
Next i
Windows(1)はactivewindowの事
Set WB2 = Windows(1).SelectedSheets.Move
End Sub
Sub ブック名の上書き回避()

Dim strWBname As String
Dim intI As Integer
Dim intWBname As Integer
On Error GoTo ERR_ブック名の上書き回避
Application.DisplayAlerts = False
intI = 0

strWBname = "sample"
intWBname = Len(strWBname)
myUndo:
If Dir(ThisWorkbook.Path & strWBname & ".xls") <> "" Then GoTo REname

ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & strWBname & ".xls"
Exit Sub
REname:
intI = intI + 1
strWBname = Left(strWBname, intWBname) & "(" & intI & ")"
GoTo myUndo
Exit Sub
ERR_ブック名の上書き回避:
MsgBox Err.Number & " : " & Err.Description

End Sub

Sub コンピューター名の取得()
Dim cmName As String
cmName = CreateObject("WScript.Network").ComputerName
Debug.Print cmName;
End Sub
Sub webのパスワードを突破パターン1()
    Dim ie    As Object
    Dim Obj1  As Object
    Set ie = CreateObject("internetexplorer.application")
    ie.Visible = True
    ie.navigate "http://www.google.co.jp/"
    While ie.busy
        DoEvents
    Wend
    Application.Wait Now + TimeValue("00:00:02")
    Set Obj1 = ie.document
    With Obj1.all
        .q.Value = "エクセル vba"
        .btnG.Click
    End With
End Sub
Sub webのパスワードを突破パターン2()
    Dim ie    As Object
    Dim Obj1  As Object
    
    Set ie = CreateObject("internetexplorer.application")
    ie.Visible = True
    ie.navigate "http://www.mapion.co.jp/"
    
    While ie.busy
        DoEvents
    Wend
    'Application.Wait Now + TimeValue("00:00:05")
    
    Set Obj1 = ie.document
    With Obj1.all
        .Find.Value = "埼玉県狭山市" 'Findはオブジェクトのname
        'Obj1.forms(0).submit			
        .form_1.submit			
        'Application.Wait Now + TimeValue("00:00:05")			
    End With			

'    Set Obj1 = Nothing			
'    ie.Visible = False			
'    Set ie = Nothing			
End Sub			

yamaV1.02β