「データを書きだす→範囲を指定してピボットテーブルを作成する」
と言う二つのプロシージャーをいっきにやってるのですが、
二つに区切って実行すると問題ないのですが、一気に実行すると実行時エラーが発生します。
-------------------------------------------------------------
Sub tset()
Call 全てのファイル名と作成日時を取得する
Call ピボテを作成する
End Sub
Sub ピボテを作成する()
ActiveWorkbook.Names.Add Name:="範囲の名前", RefersToR1C1:="=Sheet1!R1C1:INDEX(Sheet1!C2,COUNTA(Sheet1!C1))"
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="範囲の名前"). _
CreatePivotTable TableDestination:="", TableName:="ピボットテーブル", _
DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
End Sub
Sub 全てのファイル名と作成日時を取得する()
Dim MyRow As Integer
Dim MyFileName As String
Dim MyFolderName As String
Workbooks.Add
Cells(1, 1) = "ファイル名"
Cells(1, 2) = "作成日時"
MyRow = 2
MyFolderName = "C:\Users\Documents"
MyFileName = Dir(MyFolderName & "\*.*")
Do While MyFileName <> ""
Cells(MyRow, 1) = MyFileName
Cells(MyRow, 2) = CreateObject("scripting.filesystemobject").GetFile(MyFolderName & "\" & MyFileName).DateCreated
MyFileName = Dir()
MyRow = MyRow + 1
Loop
End Sub
-------------------------------------------------------------
このコート度実行すると
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="範囲の名前"). _
で、
実行時エラー 1004 "指定したシートには既に同じ名前のピボットテーブル レポートが存在します"
になります。
しかし、Workbooks.Addをやっているので、上記のエラーはありえないはずです。
そしてこの実行時エラーが出た後は、デバッグ→F5で、最後まで問題なく実行されます。
エクセルのバージョンは2003です。2007でも試しましたが同じ結果でした。
エラーを無視以外での対処方法をご教授ください。
No.1ベストアンサー
- 回答日時:
お示しのコードでは、
●名前を付ける範囲の参照が相対参照になっています。ブックの使い方にもよるのかもしれませんが、「$」がなくても大丈夫ですか。
●「Workbooks.Add」により作製されるブックがアクティブになり、SourceData も、このブックから取っているようです。
また、「TableDestination:=""」と書いてある箇所があります。
「Workbooks("ファイル名").Activate」とか、「Worksheets("シート名").Activate」みたいな記述は入れなくてもよいのでしょうか。
参考 URL の例は、1 ファイル内で完結している処理です。「Sheets.Add」を記述することでそのシートがアクティブになっています。
● CreatePivotTable メソッドと PivotTableWizard メソッドが併記されています。
同じシート上に両者がピボットテーブルを作ることになるので、そのエラーメッセージが出ているのだと思います。
片方の記述のみを残し、他方はプロシージャから削除します。
両者はどちらもピボットテーブルを作りますが、どちらを選ぶかは概ね、好みの問題のようです。
後者では OLE DB というアクセス方法によるデータが使えないとヘルプにあるくらいで、致命的な差はないようです。
参考URL:http://www.relief.jp/itnote/archives/018038.php
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 作業後に選択範囲...
-
別のフォームで記述している関...
-
VBAでのユーザフォームの表示有...
-
円の中に等間隔に線を引くには
-
ACCESSで別DBにあるクエリを...
-
ExcelVBAで毎月月初の最初にBoo...
-
Sub Auto_Open() 実行されない
-
Excelのマクロ実行後に動作が重...
-
ascW関数の結果がおかしい
-
エクセル マクロ 別シートから...
-
データを書きだす→範囲を指定し...
-
質問2回目になっちゃいます ex...
-
エクセルのVBAにショートカット...
-
エクセルVBAのコードで質問です...
-
Excel vba 条件分岐 空白セルが...
-
エクセルで条件をつけて図形を...
-
エクセルでの6ヶ月平均の出し方
-
認証コードの入力の仕方教えて...
-
ワードで、グレーの部分しか入...
-
エクセルで非表示行を抜かして...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 作業後に選択範囲...
-
別のフォームで記述している関...
-
Sub Auto_Open() 実行されない
-
VBAでのユーザフォームの表示有...
-
エクセル マクロ 別シートから...
-
ACCESSで別DBにあるクエリを...
-
最小化ボタンで最小化したフォ...
-
Excel vba 条件分岐 空白セルが...
-
ascW関数の結果がおかしい
-
メニューバーのイベントが2回...
-
GetAsyncKeyState() を利用する...
-
ExcelVBAで毎月月初の最初にBoo...
-
Excelで、チェックボックスにチ...
-
excel2010でボタンが反応しなく...
-
Excelのマクロ実行後に動作が重...
-
実行時エラー9 インデックスが...
-
Excel VBAのステップイン
-
ステップモードの動作確認方法
-
excelのvbaを使って日付を置換...
-
質問2回目になっちゃいます ex...
おすすめ情報