アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロ初心者です
仕事で使っていたエクセルのマクロにエラーが出てしまいました。

「実行時エラー1004アプリケーション定義またはオブジェクト定義のエラーです。」

os:win2000

x = 0
y = 1
w_prv = "*"
Do While rc.EOF = False
If w_prv = "*" Or w_prv <> rc.Fields("種別名") Then
If w_prv <> "*" Then
NewSheet.Cells(y, x).FormulaR1C1 = "=SUM(RC[" & (2 - x) & "]:RC[-1])"
End If
y = y + 1
x = 2
End If
If y = 2 Then
NewSheet.Cells(1, x) = rc.Fields("所属名")
End If
If x = 2 Then
NewSheet.Cells(y, 1) = rc.Fields("種別名")
End If

NewSheet.Cells(y, x) = rc.Fields("数量計")
x = x + 1
w_prv = rc.Fields("種別名")
rc.MoveNext
Loop

NewSheet.Cells(y, x).FormulaR1C1 = "=SUM(RC[" & (2 - x) & "]:RC[-1])"

y = y + 1

For i = 2 To x
NewSheet.Cells(y, i).FormulaR1C1 = "=SUM(R[" & (2 - y) & "]C:R[-1]C)"
Next

NewSheet.Cells(1, x) = "合計"
NewSheet.Cells(y, 1) = "合計"

rc.Close

Call closeDB

End Sub

**************************************************

NewSheet.Cells(y, x).FormulaR1C1 = "=SUM(RC[" & (2 - x) & "]:RC[-1])"

ここでエラーが出ているみたいです。
エクセルのマクロで入力したデータをアクセスに落としそこから新しいシートで月ごとの統計をとれるようになっていたのですが、とれなくなってしまいました。

こんな説明でお分かりになりますでしょうか?
まったくの初心者なので…
よろしくお願いいたします。

A 回答 (2件)

こんにちは。



>エクセルを終了させる際、保存はしないことになっているのですが
>もしかしたら保存して終了しまったかも…

その部分は関係がないと思います。

>マクロは実行されませんでした。。

というよりも、『同じエラーが出るかどうか』、ということですね。

>「実行時エラー1004アプリケーション定義またはオブジェクト定義のエラーです。」

このエラーは、今回のようなケースで、かなり原因が絞られるようですが、なんと言っても、こちらも試すことがあまり出来ないのです。同じスタイルで組めることは組めるのですが、手間が掛かりそうなのです。

ただ、もし、マクロが詳しい方なら、どうしてもうまくいかない場合は、EXCEL内については、EXCEL内で行わせてしまうという方法があるとは思うのですね。EXCEL側のブックを開いて、NewSheet を作った後、ActiveSheet として、シート内に数式を作ってしまうことも可能なのです。いくつか手立てはあるものの、ある程度のマクロというか、VBAの知識が必要になってしまいます。
    • good
    • 0
この回答へのお礼

ご回答いただき本当にありがとうございました。

初心者にはやっぱり無理ですね(^_^;)
これをきっかけに少し勉強してみようと思います。
ありがとうございました

お礼日時:2008/04/15 00:33

こんにちは。



内容はわかるけれども、途中からというのはどうも、あまり質問としては良くないですね。一応、ある程度、答えが必要なら、他人にわからせるためのコードは提供してもらいたいなって思います。

まったくの初心者が、ADO オブジェクトを使うというのも、少し無理があるとは思いますし、

>エクセルのマクロで入力したデータをアクセスに落としそこから新しいシートで月ごとの統計をとれるようになっていたのですが、とれなくなってしまいました。

とれなくなってしまったという、根本的な原因とか、それはわかりませんが、それらの数式に、全部、「'(シングルクォーテーション)」を入れたらどうでしょうか?しかし、そのままでは、文字列ですから、「=」の数式の入ったところは、少し遅くなるけれど、以下のように変えてみたらどうでしょうか?



NewSheet.Cells(y, x).FormulaR1C1 = "=SUM(RC[" & (2 - x) & "]:RC[-1])"
y = y + 1
For i = 2 To x
NewSheet.Cells(y, i).FormulaR1C1 = "=SUM(R[" & (2 - y) & "]C:R[-1]C)"
Next

      ↓
'-----------------------------------

With NewSheet
 .Cells(y, x).FormulaR1C1 = "'=SUM(RC[" & (2 - x) & "]:RC[-1])"
 .Cells(y, x).Value = .Cells(y, x).Value '(たぶん必要)
y = y + 1
For i = 2 To x
  .Cells(y, i).FormulaR1C1 = "'=SUM(R[" & (2 - y) & "]C:R[-1]C)"
  .Cells(y, i).Value = .Cells(y, i).Value '(たぶん必要)
Next
End With

'-----------------------------------
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。

ご指摘のとおり、実はどこからコードを書いてよいのかわからず、
エラーの出ている分の近くから書いてしまいました。すみませんでした。

>まったくの初心者が、ADO オブジェクトを使うというのも、少し無理があるとは思いますし、

そうですね…おっしゃるとおりです。。。

>とれなくなってしまったという、根本的な原因とか、それはわかりませんが

エクセルを終了させる際、保存はしないことになっているのですが
もしかしたら保存して終了しまったかも…

教えていただいた部分を削除して貼り付けしてみましたが、
マクロは実行されませんでした。。
やはり初心者には無理がありますね。

助けていただきありがとうございました。

お礼日時:2008/04/09 00:51

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