EXCEL2007とEXCEL2000でマクロのエラーが発生する

このQ&Aのポイント
  • EXCEL2007で動くマクロがEXCEL2000だとエラーが出ます。具体的には、「メソッドまたはデータメンバーが見つかりません」というエラーメッセージが表示されます。
  • このエラーは、EXCEL2007で作成したマクロに含まれる「wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換える」という処理がEXCEL2000では正常に動作しないために発生します。
  • 対処方法としては、wdPasteDefaultではなく適切な貼り付け方法を使用することが挙げられます。具体的には、wdPasteTextやwdPasteBitmapなど、EXCEL2000に対応している貼り付けオプションを選択することです。
回答を見る
  • ベストアンサー

EXCEL2007で動くマクロがEXCEL2000だとエラーが出ます。

下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるEXCEL2007で作成したマクロですが、EXCEL2000で動かすと「メソッドまたはデータメンバーが見つかりません」のエラーが出ます。初心者につき、対処方法を教えて下さい。 Dim wordApp As Word.Application Dim wordDoc As Word.Document Dim wordRange As Word.Range Set wordApp = New Word.Application Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\ひな型用ドキュメント.docx") (途中略) Set wordRange = wordDoc.Content wordRange.Find.Execute "@一覧表", Forward:=True Range("B3:E9").Copy wordRange.PasteAndFormat (Word.wdPasteDefault) ←エラー *エラーは、wdPasteDefaultで出ます。

質問者が選んだベストアンサー

  • ベストアンサー
  • ple_mania
  • ベストアンサー率42% (9/21)
回答No.2

エラーは同じ箇所で出るのですか? Pasteメソッドには引数はないと思いましたたが。Pasteのどこかにカーソルを置いてF1キーを押せばヘルプが見えます。確認してみてください。 もし他の場所にでるなら同様に確認しながら修正する訳ですが、2000と2007の両方で使うなら逆に2007で動くかも確認する必要があります。 判らなくなったらまた質問してください。

pegasusv
質問者

お礼

Pasteメソッドには引数はありませんでした。 引数を削除するとうまく動きました。 再度の回答およびヘルプの使い方も教えて頂き、本当に有難うございました。

その他の回答 (1)

  • ple_mania
  • ベストアンサー率42% (9/21)
回答No.1

こんにちは。 日がたっているのですでに自己解決されているかもしれませんが、 Word2000のRangeオブジェクトにはPasteAndFormatというメソッドが ないのではないでしょうか。それとwdPasteDefaultという定数も。 OfficeのVBAはバージョンによってあるものないもの、また仕様が 異なるものがあります。これらもおそらくあとから追加されたもの でしょう。 ただ単に貼り付けるだけならPasteメソッドで代用できないですか? 書式はExcel側で事前に設定するか、Paste後に直すしかないように 見えます。 なかなかいい参考URLは見つけられませんね。もし今後も異なる バージョンのOFFICEに絡んで開発されるのでしたら一般の解説書にも それぞれどのバージョンに対応しているかを記述した辞書的なものが ありますので、手元において参照しながら進められるとよいのではと 思います。

pegasusv
質問者

お礼

回答有難うございました。 Word2000のRangeオブジェクトにはPasteAndFormatというメソッドとwdPasteDefaultという定数がありませんので、ご指摘どおりにPasteメソッドに変えてみたのですが、今度は「引数の数が一致していません。または不正なプロパティーを指定しています。」のコンパイルエラーが出ました。 具体的に、どう直せば良いか教えて頂いたら嬉しいのですが。 自己啓発で業務の合間に色々VBAにチャレンジしている初心者につき、よろしくお願いします。

関連するQ&A

  • EXCEL/VBAで、自分のPCだけエラーが出ます

    下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるマクロですが、自分のPCだけ「Executeメソッドは失敗しました:Findオブジェクト」のエラーが出ます。 何が原因なのでしょうか、対処方法を教えて下さい。 ちなみに自分のPCは、EXCEL2003です。他のPCのEXCEL2003や自宅のEXCEL2007ではエラーは出ません。 Dim wordApp As Word.Application Dim wordDoc As Word.Document Dim wordRange As Word.Range Set wordApp = New Word.Application Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\ひな型用ドキュメント.doc") (途中略) Set wordRange = wordDoc.Content wordRange.Find.Execute "@一覧表", Forward:=True ←エラー Range("B3:E9").Copy wordRange.Paste

  • EXCEL2010エラーVBA

    下記を実行するとエラーになりEXCEL2010が終了してしまいます。 fDebug:0 offset00009391 がエラーメッセージです。 何が原因でしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim rg As Range Dim r As Variant Dim c As Long Dim hanni1 As Range Dim atai As Range Set ws = Worksheets("あああ") Set rg = Worksheets("コード").Range("A1:B10") r = ws.Cells(Rows.Count, 1).End(xlUp).Row Set hanni1 = ws.Range(Cells(2, 2), Cells(r, 3)) Set atai = ws.Range(Cells(2, 3), Cells(r, 3)) atai = Application.VLookup(hanni1, rg, 2, False) End Sub

  • Excel2007のマクロでエラーが発生

    初心者です。Excel2007で住所録を作り、特定の条件の人だけ抽出しようと考え、以下のマクロを実行すると、「オブジェクトが見つかりません」というエラーが表示されてしまいます。どう修正したら良いのでしょうか? Sub Adfilter10() Dim dRng As Range, eRng As Range, cRng As Range Set dRng = Worksheets("入力用").Range("A1").CurrentRegion 'データリスト Set dRng = Worksheets("入力用").Range("M1:M2") '条件範囲 Set eRng = Worksheets("印刷用").Range("A1") '抽出先 eRng.CurrentRegion.ClearContents dRnge.AdvancedFilter_ Action:=xlFilterCopy, _ CriteriaRange:=cRng, _ CopyToRange:=eRng, _ Unique:=False End Sub

  • Excel2002のマクロについて教えてください

    フィルターオプションの自動化を試みたのですが・・・・ sheet「商品一覧」、sheet「抽出結果」 上記2つのSheetがあったとします。 抽出したい表は「商品一覧」、抽出結果を出したい表は「抽出結果」です。(マクロを実行するコマンドボタンは「商品一覧」に作成します) フィルターオプションは、結果を出したいシートから、操作を行えば、別シートにも、結果を出すことができるので、マクロの自動登録を使って、以下のようなマクロが作成できました。 ---------------------------------- Sheets("抽出結果").Select Sheets("商品一覧").Range("B5:G24").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("B3:B4"), CopyToRange:=Range("B7:G7"), Unique:=False ------------------------------------ もちろん、きちんと動作はするのですが、「商品一覧」の範囲が(B5:G24)が変動する場合があるので、以下のように変更をしました。 ------------------------------------ Dim Gyou As Integer Gyou = Worksheets("商品一覧").UsedRange.Rows.Count + Worksheets("商品一覧").UsedRange.Row - 1 Sheets("抽出結果").Select Sheets("商品一覧").Range(Cells(5, 2), Cells(Gyou, 7)).AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("B3:B4"), CopyToRange:=Range("B7:G7"), Unique:=False ----------------------------- しかし、上記の方法では、エラーが出てしまいます。 最初は、CurrentRegion を使用しようと思ったのですが、うまくいきませんでした。 マクロを勉強したばかりで、たぶんとんでもないものを作っているのだと思いますが、ご指摘いただければうれしいです。 よろしくお願いします。

  • excel2007でエラーになるマクロ

    Excel2003では問題なく動いていた以下のマクロですが、これはボタンにマクロを貼り付けてあり、それを2007で実行すると、「問題が発生したため、Microsoft Office Excelを終了します」となり、強制終了になってしまいます。 でも、VBEの方で実行すると、ワークシートはちゃんと保存されて正しく閉じます。 (その場合、VBE自体は終了にならず、起動したままです) また、マクロを表示させてマクロ名を選択し、実行をクリックすると、正常に動作します。 新しく別の図形を作成し、そこにマクロを貼り付けるとやはり強制終了になります。 Excel2007で、リソースの診断などしても問題は見つかりません。 Windowsは、SP2でだめだったので、SP3にしてみましたが、現象は同じで何ら変化はありませんでした。 エラーを出さなくするにはどうすればよいのでしょうか。 --------マクロ--------- Sub ファイル名を変えて保存して閉じる() Dim nnen As String Dim kcode As String Dim kcode2 As String Dim cname As String Dim dno As String Dim dno2 As String Dim myPath As String nnen = ActiveWorkbook.Worksheets("inputform").Range("O5") kcode = ActiveWorkbook.Worksheets("inputform").Range("R3") kcode2 = Format(kcode, "000") cname = ActiveWorkbook.Worksheets("inputform").Range("C7") dno = ActiveWorkbook.Worksheets("inputform").Range("H26") dno2 = Format(dno, "00000") myPath = ThisWorkbook.Path & "\" On Error Resume Next 'エラーが発生しても処理を続行する ActiveWorkbook.SaveAs Filename:=myPath & "様式5_" & nnen & kcode2 & "【" & cname & dno2 & "】" _ , CreateBackup:=False On Error GoTo 0 'エラー処理ルーチンを無効にする ActiveWorkbook.Close End Sub

  • EXEL2000のマクロが2010でエラーになる

    当方、VBA初心者です、よろしくお願いいたします。 EXEL2000で動作していたVBAマクロが2003では動作、2007、2010では 以下のエラーが発生して動作しません。 「実行時エラー1004、アプリケーション定義またはオブジェクト定義のエラーです」 マクロ自体はワークシートにグラフを書くものです。 Dim cho As ChartObject, rng As Range エラー箇所の記述は以下の部分です。 Set cho = ws.ChartObjects.Add( _ ws.Range("B4").Left, _ ws.Range("B4").Top, _ ws.Range("B4:AB4").Width, _ ws.Range("B4:B13").Height) バージョンアップの仕様変更で記述が変わったと言うことでしょうか? そうだとしたらあわせて何がどう変わったのか、解説されてるサイトとか ご存じでしたらお知らせください。 以上よろしくご教授のほどお願いいたします。

  • ExcelVBAマクロでの変数の宣言エラーについて

    初歩的な質問になりますが、ExcelVBAマクロで変数の宣言「Dim wdObj As New Word.Application」のエラーについて確認させてください。 変数の宣言「Dim wdObj As New Word.Application」がExcel2007以前では使えないようで、『ユーザ定義型は定義されてません。』というエラーがExcel2007以前で起きます。 Excel2010では問題なく動作しています。 Excel2007以前でも動作する方法をご教授いただけますでしょうか。 お手数おかけしますが、よろしくお願いいたします。

  • Excel2003で動作するものがExcel97で使用できません!

    Excel20031で動作している下記VBAがExcel97では動作しません。問題のところのみ記述します。 Private Sub CommandButton2_Click() Dim fStr As String, foundCell As Range Dim i As Long, j As Long Dim x As Range, y As Range fStr = TextBox1.Text Set iSheet = iBook.Sheets(1) Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole) これで何をしているかというと、「判定フォーム」シートから別のシートを呼び出し、判定フォームに入力した値を検索して、その行に書かれている値を判定フォームに取り込むという動作をしています。Excel2003では動作するのですが、Excel97では Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole) のところで「RangeクラスのFindプロパティを取得できません」というエラーが出てしまいます。2003と97で何か違うところがあるのでしょうか。わかる方ぜひ教えてください。よろしくお願いいたします!!!

  • VBAエラー '1004' について

    VBA初心者です。 下のプログラムの★部分で 「実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。」 というエラーが発生します。 どなたか原因を教えていただけないでしょうか?? Dim aRange As Range Dim bRange As Range Set aRange = Range(Sheets("シートA").Range("A3"), Sheets("シートB").Range("A3").End(xlDown)) ★ Set bRange = Range(Sheets("シートB").Range("A3"), Sheets("シートB").Range("A3").End(xlDown)) 下のシートBの範囲取得と同じことをしているつもりなのですが、うまくいきません。 どうぞよろしくお願い致します。

  • Excel2007 マクロ 複数シートの作成

    Excel2007 マクロ 複数シートの作成 1つのファイルにtempシートとDataシートがあります。 DataシートのNo順にシートをコピーしていきます。 シートのコピーはうまくいきました。 Dataシートの情報(会社名、担当者名)を反映したいのですが うまく反映しません。 自分が作成したマクロを下記に記載いたします。 Sub CreateSheet() Dim lnFm As Long Dim lnFmMx As Long Dim st As String Dim shFm As Worksheet Dim shTo As Worksheet Set shFm = Worksheets("Data") lnFmMx = shFm.Range("B65536").End(xlUp).Row Dim Into As Long For lnFm = 2 To lnFmMx If st <> shFm.Range("B" & lnFm).Value Then st = shFm.Range("B" & lnFm).Value Sheets("temp").Copy After:=Sheets(2) Set shTo = ActiveSheet shTo.Name = st Into = 1 End If shTo.Range("B1" & Into).Value = shFm.Range("B2" & lnFm).Value shTo.Range("B2" & Into).Value = shFm.Range("C2" & lnFm).Value Next shFm.Activate End Sub 下記2行が違うと思うのですが、修正箇所が分かりません。 shTo.Range("B1" & Into).Value = shFm.Range("B2" & lnFm).Value shTo.Range("B2" & Into).Value = shFm.Range("C2" & lnFm).Value また実際のNo数は50ぐらいあります。 アドバイス頂けますでしょうか。

専門家に質問してみよう