前提・実現したいこと
ブックA(別ブック)の値をブックBにコピーして請求書を作成しようとしています。
追記
ブックABの構成としては
ブックA:簡単に項目毎に分けた請求費用(シートは4枚有)
ブックB:請求書雛形、取引会社の情報等が入ってくるのでシート数は不定
発生している問題・エラーメッセージ
インデックスが有効範囲にありません。
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
該当のソースコード
VBA
1Sub demo() 2 3 '鏡を開く 4 Workbooks.Open "C:\Users\xxxxxxxxx\Desktop\請求書データベース.xls" 5 6 '請求書雛形bookをアクティブに 7 Workbooks("請求書雛形.xlsm").Activate 8 9 10 Dim num, i, j, k, m, n As Variant 11 12 '青色シートの削除※ 13 Application.DisplayAlerts = False 14 For num = worksheets.Count To 1 Step -1 15 If worksheets(num).Tab.ColorIndex = 5 Then 16 worksheets(num).Delete 17 End If 18 Next 19 Application.DisplayAlerts = True 20 21 22 For i = worksheets.Count To 2 Step -1 23 If worksheets(i).Name = "雛形" Then 24 Exit For 25 26 ElseIf worksheets(i).Name <> "雛形" Then 27 28 '入力 29 Sheets("雛形").Range("AA1").Value = Format(Now, "yyyy年m月d日") 30 Sheets("雛形").Range("A4") = worksheets(worksheets.Count).Range("B2") 31 Sheets("雛形").Range("B1") = worksheets(worksheets.Count).Range("B3") 32 Sheets("雛形").Range("B2") = worksheets(worksheets.Count).Range("B4") 33 Sheets("雛形").Range("V13") = worksheets(worksheets.Count).Range("B8") 34 Sheets("雛形").Range("Z13") = worksheets(worksheets.Count).Range("B9") 35 Sheets("雛形").Range("S13") = worksheets(worksheets.Count).Range("B10") 36 37 38 '書式整える 39 Range("A4,B1,B2,V13,Z13").VerticalAlignment = xlCenter 40 41 'セルの結合 42 Sheets("雛形").Range("AA1:AE1").Merge 43 Sheets("雛形").Range("V13:X14").Merge 44 Sheets("雛形").Range("Z13:AA14").Merge 45 Sheets("雛形").Range("S13:S14").Merge 46 47 48 '入力されたものを別シートとして出力 49 worksheets("雛形").Copy after:=worksheets("雛形") 50 51 '上記出力したシートの名前とシートの色を変更 52 Sheets("雛形 (2)").Name = Range("A4") & "請求書" 53 ActiveSheet.Tab.ColorIndex = 5 54 55 '雛形再構築 56 Sheets("雛形").Range("AA1:AE1").UnMerge 57 Sheets("雛形").Range("V13:X14").UnMerge 58 Sheets("雛形").Range("Z13:AA14").UnMerge 59 Sheets("雛形").Range("S13:S14").UnMerge 60 61 worksheets("雛形").Range("A4,B1,B2").Clear 62 worksheets("雛形").Range("AA1,V13,Z13").ClearContents 63 Sheets(2).Select 64 65 '入力完了した企業シートを削除 66 Application.DisplayAlerts = False 67 worksheets(worksheets.Count).Delete 68 Application.DisplayAlerts = True 69 End If 70 Next 71 72 'データベースから入力 73 Dim R As Range 74 Set R = Range("A4") 75 76 For k = worksheets.Count To 1 Step -1 77 If Workbooks("請求書雛形").worksheets(k).Tab.ColorIndex = 5 Then 78 For m = 6 To Sheets("請求一覧").Cells(Rows.Count, 1).End(xlUp).Row + 1 79 If Workbooks("請求書雛形.xlsm").worksheets(k).R = Workbooks("請求書データベース.xls").worksheets("請求一覧").Range("H" & m) Then 80 Workbooks("請求書雛形.xlsm").worksheets(k).Range("B17") = Workbooks("請求書データベース.xls").worksheets("請求一覧").Range("F" & m) 81 End If 82 Next m 83 84 End If 85 Next k 86 87 'PDF出力 現状本エクセルがあるフォルダに出力PDFを保存するように 88 Dim fileName As String 89 x = ActiveSheet.Name 90 91 For j = worksheets.Count To 1 Step -1 92 If worksheets(j).Tab.ColorIndex = 5 Then 93 worksheets(j).ExportAsFixedFormat Type:=xlTypePDF, _ 94 fileName:=ThisWorkbook.Path & "\" & _ 95 worksheets(j).Name, _ 96 Quality:=xlQualityStandard, _ 97 IncludeDocProperties:=True, _ 98 IgnorePrintAreas:=False, OpenAfterPublish:=True 99 End If 100 Next 101 102End Sub
試したこと
book、sheetを変数に組み込もうとすると"メソッドをサポートしていません"の
エラーが出るので一旦解きました。
エラー自体は"データベースからの入力"の6行目から出ております。
補足情報(FW/ツールのバージョンなど)
Excel 2010
人に調べてもらうなら、どの行でエラーが発生するとかブックAやB(特にブックA)がどんな構成なのかくらい書きましょう。
(シート数が何枚とか)
大変失礼致しました。
ご指摘していただきました点を修正致しました。
引き続き宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー