2014年6月30日月曜日

第37回「vbaからexcelシート名を確認する」

第37回「vbaからexcelシート名を確認する」です。

Sub SheetChk()
    Dim ws As Worksheet
    For Each ws In Worksheets
        'If ws.Name = "Sheet1" And ws.Visible Then MsgBox ws.Name, vbInformation
        MsgBox ws.Name, vbInformation
    Next ws
End Sub



2014年6月29日日曜日

第36回「batからvbsファイルの先頭に変数を追加する」

第36回「batからvbsファイルの先頭に変数を追加する」です。

バッチファイルからvbsファイルの先頭に変数を追加して複数ファイルを作成します。

#######
test.bat
#######
@echo off
setlocal enabledelayedexpansion

set i=1

for /f  %%l in (test.txt) do (
echo Private Const TMP = "%%l"> dst_!i!.vbs
echo;>> dst_!i!.vbs
type test.vbs >> dst_!i!.vbs

set /a i=!i!+1
)

endlocal

第35回「vbsからvbaマクロを呼び出す」

第35回「vbsからvbaマクロを呼び出す」です。

EXCEL標準モジュールのマクロvbaをvbsから呼び出します。

#######
test.vbs
#######
Dim ExcelApp
Dim ExcelBook
Dim FilePath

FilePath = "C:\work\test.xls"

Set ExcelApp = CreateObject("Excel.Application")
Set ExcelBook = ExcelApp.Workbooks.Open(FilePath)
'ExcelApp.ActiveWorkbook.Worksheets("Sheet1").select
ExcelApp.Visible = True

ExcelApp.Run "test.xls!Macro1()"

'ExcelBook.Close True
'ExcelApp.quit

Set ExcelApp = Nothing
Set ExcelBook = Nothing

2014年6月27日金曜日

第34回「vbsから開いているIEを操作する」

第34回「vbsから開いているIEを操作する」です。

既に開いているIEのウィンドウ、タブがGoogleだったら、閉じます。

#####
ie.vbs
#####
Option Explicit

Private FSO
Private Browser
Private ProgName
Private BrowsersArray(),c

Set FSO = CreateObject("Scripting.FileSystemObject")
c = 0
For Each Browser In CreateObject("Shell.Application").Windows
    ProgName = FSO.GetFileName(Browser.FullName)
    If LCase(ProgName) = "iexplore.exe" Then
        ReDim Preserve BrowsersArray(c)
        Set BrowsersArray(c) = Browser
        c = c + 1
    End If
Next

Set FSO = Nothing
If c > 0 Then
    For Each Browser In BrowsersArray
        'WScript.Echo Browser.LocationURL
        'WScript.Echo Browser.LocationName
        If Browser.LocationName = "Google" Then
            Browser.Quit
        End If
    Next
End If

2014年6月15日日曜日

第33回「コマンドプロンプトからgrepする」

第33回「コマンドプロンプトからgrepする」です。

grepの代わりにfindstrコマンドを使用します。
パイプを組み合わせて使うと便利です。

> dir | findstr .txt
2014/06/15  00:26                35 hoge.txt

第32回「WindowsバッチファイルからTailする」

第32回「WindowsバッチファイルからTailする」です。

findの行数が3フィールド目に表示されるので、for tokensで3フィールド目(%%C)でsetし、
引き算して、moreします。

######
tail.bat
######
@echo off
set LINE=2
set FILE=hoge.txt
for /F "tokens=1,2,3 USEBACKQ" %%A in (`find /V /C "" %FILE%`) do set FL=%%C
set /A TAIL=%FL%-%LINE%
more +%TAIL% %FILE%
pause



第31回「Windowsバッチファイルから最新ファイルのみ表示する」

さて、第31回のお題は「Windowsバッチファイルから最新ファイルのみ表示する」です。

「dir /O-D /B パス」を指定。
/O-D 日時の新しい順に表示
/B ディレクトリ名とファイル名のみを表示

##################
newdayfile_echo.bat
##################
@echo off
set BATDIR=%~dp0
for /F "USEBACKQ" %%A in (`dir /O-D /B "" %BATDIR%`) do (
set FILE=%%A
goto break;
)
:break
echo %FILE%
pause

第30回「Excel関数でCase文させる」

さて、第30回のお題は「Excel関数でCase文させる」です。

=CHOOSE(1+SUM((A1={"一","二","三"})*{1,2,3}),"other","one","two","three")

A1が一なら、one
A1が二なら、two
A1が三なら、three
A1が一、二、三以外なら、other
になります。

2014年6月7日土曜日

第29回「Windowsバッチファイルからftpで自動取得させる」

さて、第29回のお題は「Windowsバッチファイルからftpで自動取得させる」です。

パスワードは手入力で、複数サイトで使いまわすようにします。

###########
autoftp.bat
###########
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

set BATDIR=%~dp0
set USER=root
set /P IN_PASS=rootパスワード:

echo > %BATDIR%ftp.txt
echo > %BATDIR%ftp.log

set CRLF=^


set FTP1=!CRLF!^
open localhost!CRLF!^
%USER%!CRLF!^
%IN_PASS%!CRLF!^
bin!CRLF!^
mget aaa*.txt!CRLF!^
bye

set FTP2=!CRLF!^
open 127.0.0.1!CRLF!^
%USER%!CRLF!^
%IN_PASS%!CRLF!^
bin!CRLF!^
mget bbb*.txt!CRLF!^
bye


set FTP1 | more +1 > %BATDIR%ftp.txt
ftp -i -s:%BATDIR%ftp.txt >> %BATDIR%ftp.log

set FTP2 | more +1 > %BATDIR%ftp.txt
ftp -i -s:%BATDIR%ftp.txt >> %BATDIR%ftp.log

del %BATDIR%ftp.txt

::pause

ENDLOCAL