質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

469閲覧

ログファイル作成 他の端末 動かない

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2018/11/28 02:37

前提・実現したいこと

現在Excelを開いた際に開いたユーザ名のログを残したく別ディレクトリにある
Excelを開いて日時とユーザ名を追記するようにしています。

何卒宜しくお願い致します。

発生している問題・エラーメッセージ

私の端末では動いてくれるのですが、
他の端末によっては起動せず下記のエラーメッセージが表示されます。

実行時エラー 91 オブジェクト変数またはWithブロック変数が設定されていません。

該当のソースコード

VBA

1Private Sub Workbook_Open() 2 Dim apPath As String 3 4 '現在のパスを取得 5 apPath = ActiveWorkbook.Path 6 7 'ユーザ名取得 8 LoginName = CreateObject("WScript.Network").UserName 9 Const logFile As String = "Log.xlsx" 10 11 'カレントディレクトリのpathに\を付ける 12 If Right(apPath, 1) <> "\" Then 13 apPath = apPath & "\" & "../log/" & logFile 14 End If 15 16 Dim log_file_sheet As Worksheet 17 Dim log_book As Workbook 18 Dim blank_cell As Range 19 20 '非表示 21 Application.ScreenUpdating = False 22 23 Workbooks.Open Filename:=apPath 24 Set log_book = Workbooks("Log.xlsx") 25 log_book.Activate 26 27 Set log_file_sheet = log_book.Worksheets(1) 28 Set blank_cell = log_file_sheet.Range("A1") 29 30 Do Until blank_cell.Value = "" 31 Set blank_cell = blank_cell.Offset(1, 0) 32 Loop 33 34 blank_cell.Value = Now & " " & LoginName 35 36 With log_book 37 Application.DisplayAlerts = False 38 .SaveAs apPath, FileFormat:=xlWorkbookDefault 39 .Close False 40 Application.DisplayAlerts = True 41 End With 42End Sub

試したこと

変数に型が無いのがあったので型宣言しました。

補足情報(FW/ツールのバージョンなど)

office2010

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takito

2018/11/28 02:56

動かない端末のエクセルバージョンは同じですか?その端末デバッグした場合にどの部分でエラーになりますか?
退会済みユーザー

退会済みユーザー

2018/11/28 03:03

ご回答ありがとうございます。Excelのバージョンは同じです。デバックなのですが、起動した最初のみエラーメッセージが表示されその後開発タブから実行してもエラーメッセージが表示されず処理が完了してしまうのです汗
退会済みユーザー

退会済みユーザー

2018/11/28 03:54

開発タブにてステップ実行しているのですが、正常な動きをします。しかし、一度Excelを閉じて再度起動するとまた同じメッセージが表示されます
ttyp03

2018/11/28 04:15

エラーが出るのはどの行ですか?
退会済みユーザー

退会済みユーザー

2018/11/28 04:18

エラーが出る行なのですが、開発タブから再度実行してもエラーにならず行が特定できません。
ttyp03

2018/11/28 04:20

DEBUG.PRINTでデバッグ文を仕込んでおけば、ある程度どこまで進んだかはわかるかと思います。
退会済みユーザー

退会済みユーザー

2018/11/28 08:22 編集

先程動かない端末にて Dim apPath As String の直下に Debug.Print "1"
退会済みユーザー

退会済みユーザー

2018/11/28 04:57

apPath = ActiveWorkbook.Path の直下に Debug.Print "2" と入れて実施致しました。
退会済みユーザー

退会済みユーザー

2018/11/28 05:06

イミディエイトウィンドウには1としか表示されませんでした
退会済みユーザー

退会済みユーザー

2018/11/28 05:37 編集

すいません、先ほど確認したところ私のPC本体は64bitでしたが、エラーが起きているPCは32bitでした。Excelのバージョンと使用bit数は同じです。試しに拡張子をxlsmからxlsに変更して実行してみましたが、同様のエラーが起きています。
guest

回答1

0

ベストアンサー

はっきりした原因はわからないものの、DEBUG.PRINTの情報が正しいのであれば、ActiveWorkbookが存在しないということになります。
これが環境の違いなのか、タイミングの違いなのかはわかりませんが。。。
ひとまずActiveWorkbookを止め、ThisWorkbookにしたらどうなるでしょうか。
ThisWorkbookであれば自分自身を指すので、オブジェクトが存在しないというタイミングはないはずです。

投稿2018/11/28 05:50

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/11/28 08:20 編集

先ほどActiveWorkbookを削除し、 apPath = ActiveWorkbook.Path のパス名を文字列で指定するよう変更しました。再度実行したところ If Right(apPath, 1) <> "\" Then apPath = apPath & "\" & "../log/" & logFile End If Debug.Print "4 のデバックまで表示されました。 log_book.Activate Debug.Print "5" の5は表示されませんでした
ttyp03

2018/11/28 06:12

apPathの末尾が¥か否かの処理で、¥のときの処理がないので、もしかしたらそちらの流れになっていないでしょうか。 そうなるとapPathにはパス名しか入らず、ファイル名が付加されていないので、Openに失敗している可能性があります。 こうするべきかと。 If Right(apPath, 1) <> "\" Then apPath = apPath & "\" & "../log/" & logFile Else apPath = apPath & "../log/" & logFile End If
退会済みユーザー

退会済みユーザー

2018/11/28 06:59

先ほど頂いた内容で修正致しました。 エラーメッセージの内容が変わったのでお伝えします 実行時エラー 1004 Activateメソッドは失敗しました'_Workbook' オブジェクト
ttyp03

2018/11/28 07:02

apPath をDEBUG.PRINTで出力してみてください。 正しい値になっていますか? あとエラーになっているActivateの処理は不要なので削除しましょう。
退会済みユーザー

退会済みユーザー

2018/11/28 08:02

先ほど無事完了致しました。 apPath = ActiveWorkbook.Pathと log_book.Activate が不必要でありエラーを起こしていたみたいです。 理由はこれから調べていきたいと思います 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問