プロが教える店舗&オフィスのセキュリティ対策術

ExecuteExcel4Macroを使いブックを開かずに別ブックのセル内容を
転記する下記のような制御を真似て書きましたが、別ブックにパスワードが設定してあるとセルの個数分パスワードを聞いてきます。
制御の中でパスワードを解除する方法はありますか。
Sub GetFromFile()
Application.ScreenUpdating = False
Dim FileName, CellName, PathName, SheetName, arg As String
Dim result
Dim I
PathName = "C:\"
FileName = "Book1.xls"
SheetName = "Sheet1"
For I = 1 To 5
CellName = Application.Choose(I, "A", "B", "C", "D", "E")    & "1"
arg = "'" & PathName & "[" & FileName & "]" & SheetName     & "'!" & Range(CellName).Range("A1").Address(, , xlR1C1)
result = ExecuteExcel4Macro(arg)
Worksheets(1).Cells(1, I).Value = result
Next
End Sub

A 回答 (1件)

こんにちは。



>制御の中でパスワードを解除する方法はありますか。

Ver.4 マクロで取る方法自体では、

Application.SendKeys "password"
Application.SendKeys "{Enter}", True
result = Execute .....

とするのですが、画面がちらついてしまいます。(バージョンによって、若干、感じが違います。

ただ、そこまでするなら、Workbooks.Open するか、CreateObject("Excel.Application") でオブジェクトを作って、画面非表示で開けばよいのではありませんか?

>CellName = Application.Choose(I, "A", "B", "C", "D", "E")    & "1"
>arg = "'" & PathName & "[" & FileName & "]" & SheetName     & "'!" & Range(CellName).Range("A1").Address(, , xlR1C1)

それと、その二行は、この一行と同じだと思います。

arg = "'" & PathName & "[" & FileName & "]" & SheetName & "'!" & Cells(1, i).Address(1, 1, 0)
    • good
    • 0
この回答へのお礼

ありがとうございました。
SENDKEYなどを使ってやってみようと思います。
また、構文の簡素化も勉強になりました。
今後ともよろしくお願いします。

お礼日時:2007/12/07 22:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!