2016-09-07 4 views
1

に失敗しました。 OnClickボタンを使用してコードを有効にすると、エラーが発生します。 Method pastespecial of worksheet class failedアクセスVBA:ワークシートのクラスのメソッドpastespecialは、私がExcelにフィルタクエリデータをエクスポートすることになっている<strong>VBA</strong>コードを持って

実行中アクセス2013Windows Server 2012 R2マシンで実行しています。

VBAコード:

Private Sub cbExport_Click() 

    On Error GoTo Command13_Click_Err 

    DoCmd.RunCommand acCmdSelectAllRecords 
    DoCmd.RunCommand acCmdCopy 

    Dim xlapp As Excel.Application 
    Set xlapp = CreateObject("Excel.Application") 

    With xlapp 
     .Workbooks.Add 
     .ActiveSheet.PasteSpecial Format:="Text", _ 
            Link:=False, _ 
            DisplayAsIcon:= False 

     .Cells.Select 
     .Cells.EntireColumn.AutoFit 
     .Visible = True 
     .Range("A1").Select 

    End With 

    Command13_Click_Exit: 
    Exit Sub 

    Command13_Click_Err: 
    MsgBox Error$ 
    Resume Command13_Click_Exit 

End Sub 

UIの写真:

誰かがアイデアを得ましたか?間違ったことの

+0

を申し訳ありませんが、画像を見ることができません - 」このサイトにはアクセスできません "。あなたの '.Cells.'と' .Range'はワークシートではなくExcelアプリケーションを参照しているため、エラーが発生します。 PasteSpecialわからない - 私はこのフォーマットでそれを見ることに慣れている: 'ペースト:=のxlPasteValues、操作:= xlNone、SkipBlanks:= Falseを、トランスポーズ:= false'を –

+0

私はそれが形式ビットだと思う、また範囲おそらく、私は 'ActiveSheet.Range(" a1 ")で試してみました。PasteSpecial xlPasteValues'といい、代わりにCopyFromRecordsetを使わないのはなぜですか? –

答えて

1

カップル:

  • あなたはxlApp変数をディメンションするために、事前バインディングを使用しているように見えるが、その変数を初期化するために遅延バインディングを使用します。

  • .PasteSpecial()方法は、Rangeオブジェクトではなく、シートオブジェクトに対して使用されるべきです。

  • あなたは.PasteSpecial方法で間違った引数を使用しているように見えます。

  • がペースト法が数値である必要があり、


xlPasteType列挙の一部ではなく、このコードを試してみてください。

DoCmd.RunCommand acCmdSelectAllRecords 
DoCmd.RunCommand acCmdCopy 

Dim xlApp As Excel.Application 
Set xlApp = New Excel.Application 

xlApp.Workbooks.Add 
xlApp.Visible = True 

With xlApp.ActiveWorkbook.ActiveSheet 
    .Cells.PasteSpecial XlPasteType.xlPasteValues 
    .Cells.EntireColumn.AutoFit 
End With 
+0

完璧に働いてくれてありがとう、また、特定のフィールドを除外して、固定されたExcelシートを開くことができる方法はありますか? – user1797935

+0

あなたのデータベースを照会するADOを使用してExcelのマクロを書くことで、周りのこの他の方法を行うことができ、その後、 '.CopyFromRecordset()'メソッドを使用しますが、それは私にとっては、これとは不可能にせずに例を与えることが、より高度なのですあなたのコンピュータの隣に!私はDBをたくさん使って作業しているなら、これを研究することをお勧めします。それはあなたの人生を100万回も簡単にするでしょう。 –

関連する問題