2017-05-03 19 views
-1

VBAを使用してアクセスを介してExcelファイルにダミー行を挿入しようとしています。私は、アクセスボタンに以下を取り付けた、と私はそれを実行したときに私が取得:「コンパイルエラー:サブまたは定義されていない機能」VBAを使用してAccess経由でExcelにダミー行を挿入してください

Sub Command10_Click() 

Dim objActiveWkbk As Object Dim objActiveWksh As Object Dim objXL As Object Dim strWkbkName As String 

strWkbkName = "C:\data\Payroll.csv" 

Set objXL = CreateObject("excel.application") objXL.Application.ActiveWorkbook Set objActiveWksh = objActiveWkbk.worksheets("Payroll.csv") 

Rows("2:2").Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
    Range("A2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("B2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("C2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("D2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("E2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("F2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("G2").Select 
    ActiveCell.FormulaR1C1 = "2500" 
    Range("H2").Select 
    ActiveCell.FormulaR1C1 = "1500" 
    Range("I2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("J2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("K2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("L2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("M2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("N2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("O2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("P2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("Q2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("R2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("S2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("T2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("U2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("V2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("W2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("X2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("Y2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("Z2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AA2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AB2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AC2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AD2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AE2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AF2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AG2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AH2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AI2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AJ2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AK2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AL2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AM2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AN2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AO2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AP2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AQ2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AR2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AS2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AT2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AU2").Select 
    ActiveCell.FormulaR1C1 = "BBB" 
    Range("AV2").Select 
    ActiveWorkbook.Save 

objActiveWkbk.Close SaveChanges:=False Set objActiveWkbk = Nothing objXL.Application.Quit Set objXL = Nothing End Sub 




Private Sub Command4_Click() DoCmd.OpenQuery "qry_CARS Capps Compile" 

End Sub 

Private Sub Command8_Click() DoCmd.TransferText acImportDelim, , "CARS Capps B", "P:\EMI\Drop\CARS Capps.csv", True 

End Sub 

Public Sub Import_CARS_Capps_Click() Dim xlApp As Object Dim xlBook As Object 

xlApp.Visible = True 

Set wbExcel = xlApp.Workbooks.Add Set xlBook = xlApp.Workbooks.Open("P:\EMI\Drop\CARS Capps.csv")  'ie "C:\My Documents\Data To Import.xlsx" xlApp.DisplayAlerts = False Workbook("CARS Capps.csv").Activate 
     Sheets("Sheet1").Activate          'Sheet1 should be the actual name of your work sheet 
     Range("a2").Select 
     ActiveCell.EntireRow.Insert          'Insert a row below the header 
     Cells(2, 1).Value = "aaa" Cells(2, 2).Value = "aaa" Cells(2, 3).Value = "aaa" Cells(2, 4).Value = "aaa" Cells(2, 5).Value = "aaa" Cells(2, 6).Value = "aaa" Cells(2, 7).Value = "5555" Cells(2, 8).Value 
= "5555" Cells(2, 9).Value = "aaa" Cells(2, 10).Value = "aaa" Cells(2, 11).Value = "aaa" Cells(2, 12).Value = "aaa" Cells(2, 13).Value = "aaa" Cells(2, 14).Value = "aaa" Cells(2, 15).Value = "aaa" Cells(2, 16).Value = "aaa" Cells(2, 17).Value = "aaa" Cells(2, 18).Value = "aaa" Cells(2, 19).Value = "aaa" Cells(2, 20).Value = "aaa" Cells(2, 21).Value = "aaa" Cells(2, 22).Value = "aaa" Cells(2, 23).Value = "aaa" Cells(2, 24).Value = "aaa" Cells(2, 25).Value = "aaa" Cells(2, 26).Value = "aaa" Cells(2, 27).Value = "aaa" Cells(2, 28).Value = "aaa" Cells(2, 29).Value = "aaa" Cells(2, 30).Value = "aaa" Cells(2, 31).Value = "aaa" Cells(2, 32).Value = "aaa" Cells(2, 33).Value = "aaa" Cells(2, 34).Value = "aaa" Cells(2, 35).Value = "aaa" Cells(2, 36).Value = "aaa" Cells(2, 37).Value = "aaa" Cells(2, 38).Value = "aaa" Cells(2, 39).Value = "aaa" Cells(2, 40).Value = "aaa" Cells(2, 41).Value = "aaa" Cells(2, 42).Value = "aaa" Cells(2, 43).Value = "aaa" Cells(2, 44).Value = "aaa" Cells(2, 45).Value = "aaa" Cells(2, 46).Value = "aaa" Cells(2, 47).Value = "aaa" Cells(2, 48).Value = "aaa" Cells(2, 49).Value = "aaa" Cells(2, 50).Value = "aaa" Cells(2, 51).Value = "aaa" Cells(2, 52).Value = "aaa" Cells(2, 53).Value = "aaa" Cells(2, 54).Value = "aaa" Cells(2, 55).Value = "aaa" Cells(2, 56).Value = "aaa" Cells(2, 57).Value = "aaa" Cells(2, 58).Value = "aaa" Cells(2, 59).Value = "aaa" Cells(2, 60).Value = "aaa" Cells(2, 61).Value = "aaa" 

xlBook.Save Workbooks("Cars Capps.csv").ClosexlApxlApp.Quit xlApp.DisplayAlerts = True Set xlBook = Nothing Set xlApp = Nothing 


End Sub 
+0

コードを再フォーマットできますか?引用ブロックを使用する代わりに、コードを貼り付けて強調表示し、 '{}'ボタンをクリックします。一緒に混乱していて分離されていないので、エラーが発生しています。これは書式設定の問題です。コードを投稿したときとまったく同じコードがワークブックにあると仮定します。 – BruceWayne

+0

コンパイラが不平を言っている具体的な命令はどれですか? –

+2

私は引用ブロックを実際のコードブロックに編集しようとしましたが、実際のコードレイアウトを台無しにしている可能性があります。 ** [編集] **の質問 - すべてのコードを選択して削除してください。あなたのVBAエディタに移動し、すべての**関連するコード**を選択し、TABを押して4つのスペースをインデントし、コピーして、ここに貼り付けます。 –

答えて

1

私はそれが原因となります見ることができますSub Command10_Click()のいくつかの即時の問題があります。失敗するコード。私は以下で説明します。

すべてがこれでよさそうだ:

Dim objActiveWkbk As Object 
Dim objActiveWksh As Object 
Dim objXL As Object 
Dim strWkbkName As String 

strWkbkName = "C:\data\Payroll.csv" 

Set objXL = CreateObject("excel.application") 

しかし、この次の行が間違っている:Set objActiveWkbk = objXL.Application.ActiveWorkbook

あなたは存在しないオブジェクトを設定するVBAを求めています。上記のステートメントでは、Excelオブジェクトを作成しましたが、Excelオブジェクトにまだ添付されていない実際のワークブックは作成していません。オブジェクトを作成するために

Set objActiveWkbk = objXL.Workbooks.Open(strWkbName) 

に行を変更し、言っ

。しかし、

Set objActiveWksh = objActiveWkbk.Worksheets("Payroll.csv") 

(そのワークシート名.csvで実際に終了ここで警告がでない場合は、それに応じて編集します。):

は、この行は動作します残りのコードは、Excelオブジェクトのプロパティまたはメソッドを修飾しないために中断されます。アクセスはRowsRangeSelectionなどを理解していません。アクセスVBAオブジェクトモデルの構文の一部ではないため、アクセス時にはアクセス時に何をすべきか分かりません。 はExcelオブジェクトモデルの一部であるなので、Accessage VBAにはparentageを割り当てることで伝える必要があります。

Aブロックを使用すると、それを行うための高速かつ効率的な方法です。

With objActiveWksh 
    .Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

また、Selectのものを取り除くためにこのステートメントをリファクタリングしたことにも気づくでしょう。あなたはそれを必要としません。コードが遅くなり、保守が難しくなります。代わりにオブジェクトと直接作業してください。 (まれにSelectが必要な場合があります)。

だから、その後...

.Range("A2:F2").Value = "BBB" 'set them all at once 
    .Range("G2").Value = "2500" 
    .Range("H2").Value = "1500" 
    .Range("J2:AA2").Value = "BBB" 'set them all at once 
End With 

を上の継続的な、正直、私はあなたがブックを作成して、変更を保存せずに閉じ理由について混乱していますが、残りはよさそうです。

objActiveWkbk.Close SaveChanges:=False 
Set objActiveWkbk = Nothing 
objXL.Application.Quit 
Set objXL = Nothing 
+0

OPはまた 'Workbook(" CARS Capps.csv ")にタイプミスがあります。Activate'(これはおそらく言及されている特定のエラーを生成していますが、とにかく 'Activate'を使用してください - 彼らは' xlBook'を使うことができます)。 – YowE3K

+0

私は何も言いませんでしたが、その行は他のすべてを修正すれば問題を引き起こしますが、 'Import_CARS_Capps_Click' Excelアプリケーションオブジェクト。それは単にそれを開始せずに 'xlApp'を使用しようとします。したがって、 'xlApp.Workbooks(" CARS Capps.csv ")。Activate'もクラッシュします。 – YowE3K

関連する問題