Excel2000でVBAを組んでいます。

IBM製のPCではうまく動いているのですが,富士通製のPCで
マクロを起動すると

 Windows("****.xls").Activate の実行時に,
「実行時エラー '9'」が出てしまいます。
 Workbooks("****").Worksheets("@@@@").Activate
とモジュールを変更したのですが,同様のエラーが
発生します。

どちらの命令も,IBM機では問題なく動きます。
設定等で問題があるのでしょうか。

OS・Office は,共に Windows2000で,Office2000です。
ご存知の方がいらっしゃったら教えてください。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

単純に考えるとファイルが無い場合ですが。


ファイルがあることを確認ください。
また、ディレクトリも。
ファイルオープンとのからみも
あると思います。
ソースを見ないと何とも言えませんが。

この回答への補足

ご回答ありがとうございます。
ご指摘のとおり,エラーの内容から考えるとそのとおりなのですが
Excelのシートは全てサーバーの同一フォルダーで保管して
あります。
実行しているフォルダーも同様のためファイルがないということは
ありません。
ちなみにモジュールは
=========================
file_name = ThisWorkbook.Path & "\****.xls"
Application.ScreenUpdating = False
Workbooks.Open Filename:=file_name
Windows("****.xls").Activate
=========================
と記述しています。

Windows("****.xls").Activate のところを
Workbooks("****").Worksheets("####").Activate

と変えても同様で,PCによってエラーが出てくるものと
出てこないものがあるのですが・・・

へんな質問で申し訳ありません。
何か思い当たるものがあればよろしくお願いいたします。

補足日時:2002/02/18 08:13
    • good
    • 0

単純なことで申し訳ありませんが


実行をステップインで行った時の
変数file_nameの内容は何ですか。
機種間で違いはありませんか。

不明な点ですが
Workbooks.Open Filename:=file_name

Workbooks.Open file_name
ではだめですか。

他で開かれている可能性はありませんか。
富士通機でファイルを
開く、更新、保存の
手作業の処理は可能ですか。

オープンがうまくいっているとしたら
ツールバーの「ウィンドウ」のところに表示されますか。
(同じくステップインで見れませんか)
オープン済みブックの確認は下記でも可
Dim ブック名 As Variant
For Each ブック名 In Workbooks
MsgBox ブック名.Name
Next

ディレクトリ内のほかのファイルではどうですか。
サーバーでなくローカルのファイルではどうですか。
サーバーとの設定が機種間で違うところはありませんか。
(ファイル共有)
以前からだめですか。
(まだ一度も成功したこと無い?)

しばらく ScreenUpdating は解除して
変数の推移など様子を眺めてみてはどうでしょうか。

エラー処理はどのようなことをしていますか。
(オープン時エラーは回避する、等はありますか)

同じソースでのエラーは機種間の設定が心配です。
ネットワークファイルの扱いが気になります。

たいした事が書けなくてすいません。
何かありましたら質問ください。

この回答への補足

ご丁寧にありがとうございます。

1)実行をステップインで行った時の変数file_nameの内容は何ですか。
機種間で違いはありませんか。
--->機種間での違いはないです。

2)Workbooks.Open Filename:=file_nameは
Workbooks.Open file_nameではだめですか。
--->どちらでもOKだと思います。

3)他で開かれている可能性はありませんか。
富士通機でファイルを開く、更新、保存の手作業の処理は可能ですか。
--->手作業は問題ありません。手作業のさいにブックの使用中の警告が
出てこないので,他で使用している可能性はないと思われます。

4)オープンがうまくいっているとしたらツールバーの「ウィンドウ」の
ところに表示されますか(同じくステップインで見れませんか)
--->表示はされます。異常終了の際にWindowsのタスクバーにオープン
したブックが出ていますので。

5)ディレクトリ内のほかのファイルではどうですか。
 --->最初にユーザーの認証を行うため,別のブックを開いています。
   そちらは問題なく動作します。
サーバーでなくローカルのファイルではどうですか。
--->試してみます。
 サーバーとの設定が機種間で違うところはありませんか(ファイル共有)。
 --->特に違いはないと思います。アプリケーション自体がサーバーの共有
   ファイルにあり,参照するブックも同じフォルダー内にありますので。 
--->以前からだめですか。 (まだ一度も成功したこと無い?)
一度も成功していません(>_<)
6) エラー処理はどのようなことをしていますか(オープン時エラーは回避する
  等はありますか)
--->オープン時エラーは回避する等の処理はいれていません。
    On Error Resume Next 等をいれれば回避されるとは思うのですが
    その場はよくても後のメンテナンスが厄介そうなので・・・・

以上です。
色々と説明不足で申し訳ありませんでした。
私も色々と試してみます。うまくいったら報告させてもらいます。

補足日時:2002/02/18 12:28
    • good
    • 0
この回答へのお礼

Workbooks("****").Worksheets("@@@@").Activate
に限らず,既にActivateが,かかっているワークブック("****")
に対して,
Workbooks("****").Worksheets("@@@@").Close savechanges:=False
などの処理もうまくいかないことがわかりました。
コードを,

ActiveWorkbook.Close savechanges:=False 等に変更することで
とりあえずはエラーを回避しました。

ただ,同じモジュールをそのまま使ってPCによって現象が出るものと
出ないものがあるのが気がかりです。
NEC製のPCや他の富士通製のノートPCでは現象が出ないため,
現象が出るのは同時期にまとめて購入した特定の型のPCのようです。
1台を除き全てのPCで現象がでました。

以上です。色々とありがとうございました。

お礼日時:2002/02/21 16:26

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで同じA列の中に、1,2,3,4,5,6,2,3,4,2,1,3,2,2,2,3,1という

エクセルで同じA列の中に、1,2,3,4,5,6,2,3,4,2,1,3,2,2,2,3,1,3,1というような順番で数字が並んでいます。

その数字の中で、1→3と3→1になるものがいくつあるか求めたいのですが、出す関数・マクロがわかりません。
教えていただけないでしょうか?

よろしくお願いします。

Aベストアンサー

こんばんは!

>A列の中に
とは行方向に数値が入っている!というコトでしょうか?

そうであれば
表示したいセルに
=COUNTIFS(A1:A1000,1,A2:A1001,3)+COUNTIFS(A1:A1000,3,A2:A1001,1)
としてみてください。

「1」の次の行が「3」の場合と
「3」の次の行が「1」の場合をプラスしています。m(_ _)m

QExcelの列'A' 'B' 'C'...や、行'1' '2' '3'...の文字の大きさや種類

Excel2002を使っていますが、Excelの上にある列'A' 'B' 'C'...や、左にある行'1' '2' '3'...の文字の大きさや種類は変えることはできるのでしょうか?もし、変えれるのでしたらどうやって変えるのですか?

Aベストアンサー

「書式」「スタイル」「標準」の状態で「変更」を押して「フォント」の内容を変更してください。
列と行の文字フォントとサイズが変更されます。

Qエクセル マクロ実行時エラー’1004’

For~Next構文内でシートコピーしていると途中で、
実行時エラー'1004’
WorksheetクラスのCopyメソッドが失敗しました。
が表示されることがあります。

該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。
理由/対処方法がわかればありがたいと思い質問させていただきます。

**該当コード**
Sub 評価シート作成()
  Sheets(社員一覧).Select
  行 = 1
  Do
    ReDim Preserve 社員CD(行)
    ReDim Preserve 氏名(行)
    社員CD(行) = Cells(行 + 1, 1).Value
    氏名(行) = Cells(行 + 1, 2).Value
    行 = 行 + 1
  Loop Until Cells(行, 1) = ""
  人数 = 行 - 2
  For 回数 = 1 To 人数
    Sheets(評価シート).Select
    Sheets(評価シート).Copy after:=Sheets(評価シート)
    ActiveSheet.Name = 氏名(回数)
    Cells(4, 5) = 氏名(回数)
    Cells(4, 3) = 社員CD(回数)
  Next 回数
End Sub
*****************************
よろしくお願いします

For~Next構文内でシートコピーしていると途中で、
実行時エラー'1004’
WorksheetクラスのCopyメソッドが失敗しました。
が表示されることがあります。

該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。
理由/対処方法がわかればありがたいと思い質問させていただきます。

**該当コード**
Sub 評価シート作成()
  Sheets(社員一覧).Select
  行 = 1
  Do
    ReDim Preserve 社員CD(行)
   ...続きを読む

Aベストアンサー

ひょっとしてこれに該当するのかな?

Excel でプログラムを使用してワークシートをコピーするとランタイム エラー 1004 が発生する
http://support.microsoft.com/kb/210684/ja

Q実行エラー'424' ????

エクセルでユーザーフォームを作成しました。
(オブジェクト名) UserForm7 です。
これを 開くマクロは
Sub 受入フォームの表示()
UserForm7.Show
End Sub
です。
すると
実行エラー'424' オブジェクトが必要です。と デバックします。
ちなみにUserForm1も作成してあり
マクロは
Sub 仕入先マスタ表示()
Dim mytbl As Range
Set mytbl = Worksheets("T_仕入先").Range("仕入先リスト1")
UserForm1.Caption = "仕入先選択"
UserForm1.Label1.Caption = "■仕入先一覧■"
With UserForm1.ListBox1
.ColumnCount = mytbl.Columns.Count
.ColumnWidths = "2cm;3cm"
.List = mytbl.Value
End With
UserForm1.Show
  End sub
は問題なくフォームが表示します。
どこがわるいのでしょうか?

エクセルでユーザーフォームを作成しました。
(オブジェクト名) UserForm7 です。
これを 開くマクロは
Sub 受入フォームの表示()
UserForm7.Show
End Sub
です。
すると
実行エラー'424' オブジェクトが必要です。と デバックします。
ちなみにUserForm1も作成してあり
マクロは
Sub 仕入先マスタ表示()
Dim mytbl As Range
Set mytbl = Worksheets("T_仕入先").Range("仕入先リスト1")
UserForm1.Caption = "仕入先選択"
UserForm1.Label1.Caption = "■仕入先一覧■"
Wi...続きを読む

Aベストアンサー

Sub 受入フォームの表示()
UserForm7.Show
End Sub
に不具合があるのではなくて
UserForm7の
Private Sub UserForm_Initialize()
・・・
End Sub
とかがあってその中にエラーが隠れているかもしれませんね。

QExcel'97で 実行時エラー '1004' が出る

毎日更新されるCSVファイルがあります。
このファイルをExcelに変換して、他のファイルにリンクしています。
CSVファイルを開かなくても、データを更新できるよう、マクロを組みました。
Excel2000では、問題なく動くのですが、’97で実行すると、
実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。
メインに使っているPCが'97なので、
色々調べてみたのですが、私の知識ではわからず、困っています。
詳しい方がいらっしゃれば、教えて頂きたく思います。
コードは以下のようなものです。

Private Sub Workbook_Open()

Dim Workbooks As Variant
Dim Sheets As Variant
Dim Filename As Variant
Dim wR As Long

ThisWorkbook.Sheets("Sheet1").Activate
Cells.ClearContents
Filename = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv")

ここで、デバック
   ↓
  With ActiveSheet.QueryTables.Add _
(Connection:="TEXT;" & Filename, Destination:=Range("A1"))
.TextFileCommaDelimiter = True

さらにここでも、デバック(実行時エラー1004 外部データ範囲を
更新するためのテキスト ファイルが見つかりません)
      ↓
.Refresh BackgroundQuery:=False

End With

With ActiveSheet
.Columns("B:C").Delete shift:=xlToLeft
'(CSVファイルのA,B列は不要のため、削除)
wR = .Range("B" & Rows.Count).End(xlUp).Row
.Range("A1") = "=B1&C1&D1"
.Range("A1").AutoFill Destination:=Range("A1:A" &wR), Type:=xlFillDefault

End With

End Sub

毎日更新されるCSVファイルがあります。
このファイルをExcelに変換して、他のファイルにリンクしています。
CSVファイルを開かなくても、データを更新できるよう、マクロを組みました。
Excel2000では、問題なく動くのですが、’97で実行すると、
実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。
メインに使っているPCが'97なので、
色々調べてみたのですが、私の知識ではわからず、困っています。
詳しい方がいらっしゃれば、教えて頂きたく思います。
コー...続きを読む

Aベストアンサー

追伸:

#換えればよいだけです
ちょっと、バカなことを書いてしまいました。(^^;
ではなくて、統一してしまえばよいです。

>#If numVer = 8 Then   'ディレクティブ
>   LineBuf = ex97Split(TextLine, DELIM)
>   #Else
>   LineBuf = Split(TextLine, DELIM)
>#End If
   ↓

LineBuf =ex97Split(TextLine,DELIM)
としてしまってください。


このカテゴリの人気Q&Aランキング

おすすめ情報