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

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

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

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

Q&A

解決済

1回答

1731閲覧

VBA: シート挿入時の方が一致しないエラー

ATENAI

総合スコア2

VBA

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

0グッド

0クリップ

投稿2020/05/15 02:26

編集2020/05/15 04:57

###質問内容
VBAでCSVを読み込み、Excelシートにデータを出力→ピボットテーブルを作成
という機能を実装しようとしています。
下記コードを実行しようとしたところ、プロシージャCSV_inputのSheets.Addの箇所で型が一致しないエラーが出てしまいます。
原因がわからないので、わかる方原因と対策を教えていただけますと助かります。

###2020/5/15/14:00追記

VBA実行ファイルの構成はシート(Sheet1のみ)、マクロはSheet1モジュールに記述しております。
VBA実行しているファイルはGoogleドライブ配下のディレクトリにあります。
読み込み用CSVファイルは同じディレクトリにあります。

VBA

1Sub auction_anaytics_graph() 2 3 CSV_input 4 5 Dim OS As Worksheets 6 Set OS = ThisWorkbook.Sheets(Sheets.Count) 7 8 Dim LastRow As Long 9 LastRow = OS.Cells(Rows.Count, 1).End(xlUp).Row 10 11 Sor_auc OS, LastRow 12 Change_under10per OS, LastRow 13 Pivot_Auc_IMP OS, LastRow 14 15End Sub 16 17Sub CSV_input() 18 19 Dim varFileName As Variant 20 varFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _ 21 Title:="CSVファイルの選択") 22 If varFileName = False Then 23 Exit Sub 24 End If 25 26 Sheets.Add After:=Sheets(Sheets.Count) 'エラー発生箇所 27 Dim Auc_sheet As Worksheet 28 Set Auc_sheet = Sheets(Sheets.Count) 29 30 With Auc_sheet.QueryTables.Add(Connection:="TEXT;" & varFileName, Destination:=Auc_sheet.Range("A1")) 31 .TextFilePlatform = 932 'Shift=Jis 32 .TextFileCommaDelimiter = True 33 .Refresh BackgroundQuery:=False 34 .Delete 35 End With 36End Sub 37 38Sub Sor_auc(S As Worksheets, LRow As Long) 39 40 With S.Sort 41 .SortFields.Clear 42 .SortFields.Add Key:=Range("A3"), Order:=xlAscending 43 .SetRange Range(Cells(3, 1), Cells(LRow, 1)) 44 .Header = xlYes 45 46 .Apply 47 End With 48 49End Sub 50 51Sub Change_under10per(S As Worksheets, LRow As Long) 52 53 Dim i As Long 54 55 For i = 4 To LRow 56 57 S.Cells(i, 3) = Replace(S.Cells(i, 3), " ", "") 58 S.Cells(i, 3) = Replace(S.Cells(1, 3), "  ", "") 59 S.Cells(i, 3) = Replace(S.Cells(1, 3), "未満", "") 60 Next i 61 62End Sub 63 64Option Explicit 65 66Sub Pivot_Auc_IMP(S As Worksheets, LRow As Long) 67' 68' Pivot_IMP Macro 69' 70 71 Dim PivotS As Worksheet 'ピボットテーブルを作成するシート 72 Dim PCache As PivotCache 'ピボットキャッシュ用変数 73 Dim P_name As String 74 75 76 77 PCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=S.Range(Cells(3, 1), Cells(LRow, 3)), _ 78 Version:=xlPivotTableVersion15) 79 80 P_name = "月別インプレッションシェア" & OS.Name 81 PCache.CreatePivotTable TableDestination:=S.Range("E3"), TableName:=P_name 82 83 OS.PivotTables(P_name).AddFields ColumnFields:=Array("月") 84 OS.PivotTables(P_name).AddFields RowFields:=Array("表示 URL ドメイン") 85 OS.PivotTables(P_name).AddDataField Fields:=OS.PivotTables(P_name).PivotFields("インプレッション シェア"), _ 86 Function:=xlSum 87 88 89 With OS.PivotTables(P_name) 90 .ColumnGrand = False 91 .RowGrand = False 92 End With 93 94End Sub 95 96 97

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

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

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

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

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

ttyp03

2020/05/15 04:44

素のワークブックでSheets.Add行のみ実行してみましたが問題はありませんでした。 環境によるものかもしれませんので、シートの構成やマクロをどこに置いているか、マクロはどうやって呼び出されるかなど、詳細を書いていただいた方がよいでしょう。
ATENAI

2020/05/15 04:47

確認いただきありがとうございます。 承知しました。詳細を追記します。
guest

回答1

0

ベストアンサー

わかりました。
auction_anaytics_graphで定義しているOSの型がWorksheetsになっています。

VBA

1Dim OS As Worksheets 2 ↓ 3Dim OS As Worksheet

一気に実行すると実際のエラーとは異なる場所を指す場合もあるので、ステップ実行するとよいですよ。

投稿2020/05/15 05:24

ttyp03

総合スコア16998

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

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

ATENAI

2020/05/15 06:39

ありがとうございます 初歩的なミスに気付かずすみません… 早速回答いただき大変助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問