Get Statment考 CSVファイルを読み込む WS_OLEObjectのイベントクラス

Excel VBA Sample 1

Cls_Mailer.cls

pw_tool

mark_tool2

Option Explicit
Sub tashizan()
Dim mystarttime As Single
Dim mykasan As Variant, i As Variant, x As Variant
Dim mymsg As String, mytitle As String
mymsg = "いくつまで足すか整数を指定してください"
mytitle = "1から指定した数まで加算する"
mykasan = Application.InputBox(prompt:=mymsg, Title:=mytitle, Default:=10000000, Type:=1)
'mytime = (Timer - mystarttime)
If mykasan = False Then
End
ElseIf InStr(2, mykasan, ".") = 0 Then
mystarttime = Timer


i = 1
x = 0
Do
x = x + i
i = i + 1

Loop While i <= mykasan
If mykasan = 10000000 Then
Range("b6").Value = Timer - mystarttime
Else
Range("b9").Value = Timer - mystarttime
Range("b8").Value = "1から" & mykasan & "までの加算処理に"
Range("b10").Value = "秒かかりました"
End If

MsgBox x & "です", vbOKOnly, "1から" & mykasan & "まで加算した結果は"


Else
MsgBox "整数を指定してください"


End
End If
End Sub

Sub tashizanyukapi() Dim sTime As Single Dim mykasan As Currency, i As Currency, x As Currency Dim mymsg As String, mytitle As String mymsg = "いくつまで足すか整数を指定してください" mytitle = "1から指定した数まで加算する" mykasan = Application.InputBox(prompt:=mymsg, Title:=mytitle, Default:=10000000, Type:=1) If InStr(2, mykasan, ".") = 0 Then sTime = Timer '----------------------ここから---- For i = 1 To mykasan x = x + i Next '----------------------ここまで---- 'MsgBox DateDiff("s", sTime, eTime) MsgBox Timer - sTime MsgBox x & "です", vbOKOnly, "1から" & mykasan & "まで加算した結果は" Else MsgBox "整数を指定してください" End End If End Sub Sub tashizansagawa() Dim sTime As Single Dim mykasan As Variant, i As Variant, x As Variant Dim mymsg As String, mytitle As String mymsg = "いくつまで足すか整数を指定してください" mytitle = "1から指定した数まで加算する" mykasan = Application.InputBox(prompt:=mymsg, Title:=mytitle, Default:=10000000, Type:=1) If InStr(1, mykasan, ".") = 0 Then 'instrを使うと15桁まで。16桁は"."を含まない数値でも0を返さない。 'If (mykasan Mod 1) = 0 Then 'modを使うと10桁まで。11桁はオーバーフローする。 MsgBox (mykasan Mod 3) sTime = Timer 'timer関数は午前0時から経過した秒数を表す単精度浮動小数点数型の値を返します。 '----------------------ここから---- sample x = (mykasan + 1) * (mykasan / 2) 'For i = 1 To mykasan 'x = x + i 'Next '----------------------ここまで---- Range("d7").Value = Timer - sTime MsgBox x & "です", vbOKOnly, "1から" & mykasan & "まで加算した結果は" Else MsgBox "整数を指定してください" MsgBox InStr(1, mykasan, ".") ' End If End Sub Sub ブックの作成() Workbooks.Add End Sub Sub ブックを開く() Workbooks.Open Filename:="c:\my documents\スケジュール.xls" End Sub Sub ブックを開く2() Workbooks.Open Filename:="XXX.xls" End Sub Sub ブックを閉じる() Workbooks.Close End Sub Sub ブックを閉じる2() ActiveWorkbook.Close End Sub Sub ブック名を指定して閉じる() Workbooks("excel.xls").Close End Sub Sub 番目に開いたブックを閉じる() Workbooks(2).Close End Sub Sub 確認メッセージを表示させないでブックを閉じる() Workbooks("excel.xls").Close savechanges:=True End Sub Sub ブックを保存しないで閉じる() Workbooks("excel.xls").Close False 'SaveChanges:=を省略している End Sub Sub プロパティの値を調べる() Dim myname As String myname = Worksheets(1).Name MsgBox myname End Sub Sub プロパティの値を変更する() Dim myname As String myname = "myname" Worksheets(1).Name = myname MsgBox "元に戻します" Worksheets(1).Name = "sample" End Sub Sub シートの挿入() Worksheets.Add after:=Worksheets(1), Count:=2 End Sub Sub 複数のシートを選択する() Worksheets(Array(2, 4)).Select 'ActiveWindow.SelectedSheets.Delete End Sub Sub シート数を数えて最後のシートを削除する() Dim i As Integer i = Worksheets.Count Worksheets(i).Delete End Sub Sub 配列から値を取得する() Dim myweek As Variant '配列はvariantに格納される。他の型だと配列として認識しない。 myweek = Array("日", "月", "火", "水", "木", "金", "土") MsgBox myweek(1) End Sub Sub testresult() 'ユーザー定義関数1 Range("e37").Select MsgBox testmsg End Sub Function testmsg() As String 'タイトル行でデータ型を定義 Select Case ActiveCell.Value Case Is > 80 testmsg = "優" Case Is > 60 testmsg = "良" Case Is > 40 testmsg = "可" Case Else testmsg = "不可" End Select Case節の書き方 値が1,2,3のいずれかである場合             →Case 1,2,3 値が1から5までの範囲のどれかである場合        →Case 1 To 5 値が1,2か5から10までの範囲のどれかである場合  →Case 1,2,5 To 10 値が10以上の場合                       →Case Is>=10 End Function Function で割る(割られるもの As Single, 割る物 As Single) で割る = 割られるもの / 割る物 End Function Function myhex(十進数 As Double) myhex = Hex(十進数) End Function Function Uni(Moji As String) As String Application.Volatile If Moji = "" Then Uni = "" Else Uni = Right("0000" & Hex(AscW(Moji)), 4) End If End Function Sub 色つきのセルをカウントする() Dim myhani As Range, myrng As Range, mycount As Integer, i As Integer Set myhani = Range("g57:g66") For Each myrng In myhani If myrng.Interior.ColorIndex <> xlNone Then mycount = mycount + 1 End If 'i = i + 1 Next Range("g72") = mycount End Sub Sub シートの移動() Worksheets("sample").Move after:=Worksheets("関数") End Sub Sub シートの移動を戻す() Worksheets("sample").Move before:=Worksheets("関数") End Sub Sub 四角() Dim i As Integer For i = 0 To 100 Worksheets(1).Shapes.AddShape(msoShapeRectangle, 122 + i, 1222 + i, 8 + i, 6 + i).Select Next End Sub Sub 四角を削除() Dim Sh As Object, mydocument As Object Set mydocument = Worksheets("sample") For Each Sh In mydocument.Shapes If Sh.Type = msoShapeRectangle Then Sh.Delete End If Next End Sub Sub test() Dim MyStr, MyInt ' Let ステートメントを使って変数を代入します。 Let MyStr = "Hello World" Let MyInt = 5 MsgBox MyStr & MyInt End Sub Sub zu() '追加用 Dim i As Integer For i = 0 To 200 With Worksheets(1).Shapes.AddShape(msoShapeRectangle, _ 122 + i, 1222 + i, 8 + i, 6 + i) .Name = "XX" & .Name End With Next End Sub Sub zu2() '削除用 Dim Sh As Shape For Each Sh In Worksheets(1).Shapes If Sh.Type = msoAutoShape Then If Sh.AutoShapeType = msoShapeRectangle _ And Sh.Name Like "XX*" Then Sh.Delete End If End If Next End Sub Sub グラフシートの削除() Dim mychart As Chart '単にcharts.deleteとするとグラフシートが無い時にエラーがでる。 For Each mychart In Charts mychart.Delete Next End Sub Sub シートを非表示にする1() Worksheets(3).Visible = False 'ツール→シート→表示しない、と同じ操作 End Sub Sub シートを非表示にする2() Worksheets(3).Visible = xlVeryHidden 'vbaからでないと再表示できないバージョン End Sub Sub 再表示() Worksheets(3).Visible = True End Sub Function シートの名前関数(suuji As Integer) Application.Volatile シートの名前関数 = Worksheets(suuji).Name End Function Sub シートを移動() Worksheets(1).Move after:=Worksheets(3) End Sub Sub 他のブックへシートを移動() Worksheets(3).Move before:=Workbooks("dummy.xls").Worksheets(1) End Sub Sub 新規ブックにワークシートを移動する() Worksheets(1).Move 'moveメソッドの引数を省略すると新規ブック内にシートが移動する。 End Sub Sub シートをコピーする1() Worksheets(1).Copy after:=Worksheets(3) End Sub Sub シートのコピー2() Worksheets(1).Copy before:=Workbooks("XXX.xls").Sheets(2) '別のブック内にコピーする End Sub Sub 共有ブックに変更を受け入れさせる() ActiveWorkbook.AcceptAllChanges End Sub Sub 関数の見出しのセルを塗りつぶす() ' Dim myrange As Range For Each myrange In Range("a:a") If (Left(myrange.Value, 3) = "Sub" Or Left(myrange.Value, 3) = "Fun") Then With myrange.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With myrange.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With myrange.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With myrange.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With myrange.Interior .ColorIndex = 6 .Pattern = xlSolid End With With myrange.Font .Name = "MS Pゴシック" .Size = 20 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End If Next End Sub Sub マーカーのクリア() Range("a:a").ClearFormats End Sub Sub データの最下行の行ナンバーを取得する() Dim n& 'rowプロパティはlongで宣言する。longの宣言型はアンパサンド Range("a200").End(xlUp).Select n = Selection.Row MsgBox n End Sub Sub a列データの最下行から上3セルを選ぶ() Dim n& 'rowプロパティはlongで宣言する。longの宣言型はアンパサンド Range("a200").End(xlUp).Select n = Selection.Row If n < 3 Then Range("a1:a3").Select Else Range(Cells(n, 1), Cells(n - 2, 1)).Select End If End Sub Sub 今日の日付のセルを選ぶ() Dim myrange As Range, mycell As Range Set myrange = Worksheets(1).Range("1:1") For Each mycell In myrange If mycell.Value = Day(Date) Then mycell.Select End If Next mycell End Sub Sub ふりがな情報をもたない漢字に振り仮名を振る() Application.ScreenUpdating = False With Selection .SetPhonetic .Phonetic.Visible = True End With Application.ScreenUpdating = True End Sub Sub inputboxメソッド() '数値を入力させるす Dim mycopy As Integer Dim mymsg As String, mytitle As String mymsg = "印刷部数を指定してください" mytitle = "このシートを印刷する" mycopy = Application.InputBox(prompt:=mymsg, Title:=mytitle, Default:=1, Type:=1) If mycopy <> 0 Then Worksheets("code").PrintOut copies:=mycopy Else MsgBox "印刷指定はキャンセルされました" End If End Sub Sub 印刷範囲の選択を促す() Dim mycell As Range Dim mymsg As String, mytitle As String Worksheets("code").Activate mymsg = "印刷範囲をマウスでドラッグしてください" mytitle = "印刷範囲の指定" On Error Resume Next Set mycell = Application.InputBox(prompt:=mymsg, Title:=mytitle, Type:=8) '8はセル参照。typeを省略するとテキストを返す If mycell Is Nothing Then Exit Sub With ActiveSheet .PageSetup.PrintArea = mycell.Address .PrintOut End With Sub inputbox関数() 'アプリケーションモーダル(フォーム出現中はシートの操作が出来ない) Dim myno As Integer Dim mymsg As String, mytitle As String mymsg = "削除する伝票No.を指定してください" mytitle = "売上データ削除" myno = Val(InputBox(prompt:=mymsg, Title:=mytitle)) If myno <> 0 Then MsgBox myno & "を削除No.に指定しました" Else MsgBox "処理を中段しました" End If End Sub Sub 選択範囲の行と列の取得() Dim R As Range Set R = Selection MsgBox R.Row & vbCrLf _ & R.Column & vbCrLf _ & R.Row + R.Rows.Count - 1 & vbCrLf _ & R.Column + R.Columns.Count - 1 End Sub Sub ユーザー側のみシートを保護する() ActiveSheet.Protect userinterfaceonly:=True Dim i As Integer For i = 1 To 22 With Worksheets(2) .Select .Unprotect password:="mypassword" .Range(Cells(9 + (i - 1) * 43, 4), Cells(10 + (i - 1) * 43, 34)).Locked = True .Range(Cells(16 + (i - 1) * 43, 4), Cells(16 + (i - 1) * 43, 34)).Locked = True .Protect password:="mypassword" End With Next i end sub Sub 全てのコマンドバー・スクロールバーを非表示タイトルバーのカスタマイズ() Application.ScreenUpdating = False Dim mycb As CommandBar '全てのコマンドバーを非表示にする On Error Resume Next For Each mycb In Application.CommandBars mycb.Visible = False Next mycb On Error GoTo 0 Application.CommandBars("Worksheet Menu Bar").Enabled = False Application.DisplayFormulaBar = False Application.Caption = "分給用" 'タイトルバー名の定義 If Worksheets(3).Shapes("復帰ボタン").Visible = False And Worksheets(2).Range("c41").Value = 2 Then myname1 = Worksheets(3).Range("a1").Value & "給与月" & Worksheets(3).Range("b1").Value & "月度バックアップ" With ActiveWindow .DisplayHeadings = False .DisplayWorkbookTabs = False .Caption = "梶怐" & myname1 .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With end sub Sub ie_make_table_test() site="http://www.ken3.org/vba/" Dim objIE As Object 'IEオブジェクト参照用 Dim objTAG As Object 'TAGのオブジェクトを代入 Dim y As Integer Dim x As Integer Dim objTableItem As Object 'TABLE内のITEM検索用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) '文字列で指定したURLに飛ぶ 'objIE.Navigate "http://www.ken3.org/cgi-bin/cnt/test.asp" objIE.Navigate "C:\WINDOWS\デスクトップ\郵便事業経営情報システム7.htm" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '.body のデータをループする For Each objTAG In objIE.document.body.all 'テーブルのタグを探す If objTAG.tagName = "TABLE" Then '新規ブックを追加する Workbooks.Add 'カウンタの初期化 y = 0 '行カウンタ 'テーブル内のITEMでループする For Each objTableItem In objTAG.all If objTableItem.tagName = "TR" Then y = y + 1 '行カウンタを+1 x = 1 '列カウンタを1(左端にする) End If If objTableItem.tagName = "TD" Then 'テキストデータをセットする Cells(y, x) = objTableItem.innerText x = x + 1 '列カウンタを+1(次にする) End If Next End If Next End Sub Private Sub Worksheet_Change(ByVal Target As Range) ワークシートのイベント。4桁数値を時間表示にする Dim Temp As String With Target Temp = Format(.Text, "00:00") If IsDate(Temp) Then Application.EnableEvents = False .Value = Temp Application.EnableEvents = True End If End With End Sub Sub TestMain()'シート上のhtmlリンクのページ画面をエクセルに貼り付ける ' 参照設定:Microsoft Forms 2.0 Object Library ' 参照設定:Microsoft HTML Object Library ' 参照設定:Microsoft Internet Controls Dim i As Range Dim j As Shape Dim wkURL As String Dim shtA As Worksheet Set shtA = ActiveSheet For Each i In shtA.UsedRange On Error Resume Next wkURL = "" wkURL = i.Hyperlinks(1).Address On Error GoTo 0 If Not wkURL = "" Then Call prcPaste(wkURL) End If Next i For Each j In shtA.Shapes On Error Resume Next wkURL = "" wkURL = j.Hyperlink.Address On Error GoTo 0 If Not wkURL = "" Then Call prcPaste(wkURL) End If Next j End Sub Private Sub prcPaste(ByVal AURL As String) Dim wkIE As New SHDocVw.InternetExplorer Dim wkDoc As MSHTML.HTMLDocument Dim wkHTML As String Dim wkDO As New MSForms.DataObject wkIE.Visible = True wkIE.Navigate AURL Do DoEvents Loop Until (Not wkIE.Busy) And _ (wkIE.readyState = READYSTATE_COMPLETE) Set wkDoc = wkIE.document wkHTML = wkDoc.body.innerHTML wkIE.Quit wkDO.Clear wkDO.SetText wkHTML wkDO.PutInClipboard Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Range("A1").PasteSpecial wkDO.SetText "" wkDO.PutInClipboard End Sub Sub ie_の起動() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '文字列で指定したURLに飛ぶ objIE.Navigate "http://www2.tba.t-com.ne.jp/yamazaki/" 'objIE.Navigate "C:\WINDOWS\デスクトップ\tefutefu.htm" Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop End Sub Private Sub CommandButton2_Click() refeditの使い方 Application.ScreenUpdating = False Range(RefEdit1.Value).Copy With Worksheets("局名データベース") .Range("i2").PasteSpecial Paste:=xlValues .Range("i:i").Replace what:=" ", replacement:="", lookat:=xlPart, _ searchorder:=xlByRows, MatchCase:=False .Range("i:i").Replace what:=" ", replacement:="", lookat:=xlPart, _ searchorder:=xlByRows, MatchCase:=False End With End Sub Sub 矢印を描く() Dim mydocument As Worksheet Set mydocument = Worksheets(1) With mydocument.Shapes.AddLine(10, 10, 20, 30).Line '(始点の左端からのpx値,始点の上端からのpx値 ',終点の左端からのpx値,終点の上端からのpx値) .BeginArrowheadLength = msoArrowheadShort .BeginArrowheadStyle = msoArrowheadOval .BeginArrowheadWidth = msoArrowheadNarrow .EndArrowheadLength = msoArrowheadLong .EndArrowheadStyle = msoArrowheadTriangle .EndArrowheadWidth = msoArrowheadWide End With Private Sub Workbook_Open() ブックを開く時別のブックを開き、非表示にする。さらに閉じる時に表示させる Workbooks.Open Filename:= _ C:\WINDOWS\デスクトップ\visible.xls ActiveWindow.Visible = False Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("visible.xls").Activate ActiveWindow.Visible = True End Sub

yamaV1.02β