Openメソッドの一段下に If Err.Number 0Then Exit Sub End If Err.Number = 0 と入れたら途中で開いた後に余計なことしないから少しだけ終わるの早くなるかな?
@reinejy3 жыл бұрын
それだとエラー出たら(パスワード違っていたら)終わっちゃいますよ やるんならOpenメソッドの下に If err.Number = 0 Then '開いたときにエラーが出なかったら↓の処理 Debug.Print "Password:= " & i Exit Sub ’このForのループの後に処理を入れたかったらExit Forで End If Err.Clear '次のエラーが発生する前にいったんクリアする みたいな感じで、開いたらイミディエイトウィンドウにパスワードを記録して終了するって感じ
@zerocode96603 жыл бұрын
開いたら止めたいなら例えば下記の様にすれば良い。 for i = 1 to 9999 err.clear workbooks.open filename:=fn,password:=i if err.number = 0 then exit for next
Dim cells as Integer と打って実行すると、欠陥を持ったxlsmファイルに生まれ変わります。 (コマンド「cells」をユーザ変数に定義してしまったからーです) Dim Count as Integer もやりがち。(1,2,3と数えるためのユーザー変数として使おうとして墓穴を掘る)
少しかじったからこれは分かる さいしょの Dim i As long これはlong型(整数値を格納するもの) のiと言う変数を作る。 次の For i=1 To 9999 ------ Next i はFor ○○ ~Next のところまでをiに1を足しながら9999迄行くことを示している。iがもし9999まで行ったらこのループを抜けることにしている その中身のWorkbooks.open(~) は動画の通りそのworkbookを開くこと。 実際には 最初のworkbooksは範囲を指定していて、そこに対してOpen(開く動作)を指定している。引数にpassword,ファイルのパス名 C:¥◇おふざけ¥機密情報.xlsm を指定しているから、これを改良するなら 最初に Dim file As string file = inputbox("どのファイルを開きますか?") 的なことをいれた方がいい気がする。 (総当たりでは) (このままこのVBE のコードが使えるとは限らないよ) 追記 Workbooks.open(file,,, i) とする