通过VBA从Acces导入查询到Excel并删除单个单元格

问题描述:

我尝试从Access 2013导入查询到Excel 2013.但是,当我然后尝试删除Excelsheet中的单个单元格时,它将删除整行, •删除单个单元格并将其右移一位(不要选择该选项)。我在哪里可以更改VBA代码是每个值的副本而不是整行?通过VBA从Acces导入查询到Excel并删除单个单元格

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(_ 
    "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=D:\x.mdb;Mode=Share Deny None;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Databas" _ 
    , _ 
    "e Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bul" _ 
    , _ 
    "k Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet " _ 
    , _ 
    "OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _ 
    ), Destination:=Range("$A$1")).QueryTable 
    .CommandType = xlCmdTable 
    .CommandText = Array("x") 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = False 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .SourceDataFile = "D:\x.mdb" 
    .Refresh BackgroundQuery:=True 

我认为有一个更好的方法来做事情。请参阅下面的链接,了解如何改进您的流程。

http://www.accessmvp.com/KDSnell/EXCEL_Export.htm

此外,考虑下面使用脚本,另一种方式来改善的事情。

Sub Rectangle1_Click() 

Dim con As New ADODB.Connection 
Dim rs As New ADODB.Recordset 

'Drive code for Access 
'con.ConnectionString = "DBO=C:\Temp\MyAccess.accdb:" & _ 
"Driver = (Microsoft Access Dirver (*.accdb));" 

'Actual ConnectionString 
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\MyAccess.accdb;" 

'Derived ConnectionString 
'In the Immediate Window, paste the following... 
'?createobject("DataLinks").PromptNew.ConnectionString 
'con.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=DSN=MS Access Database;DBQ=C:\Temp\MyAccess.accdb;DefaultDir=C:\Temp;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;" 

'Open DB Connection 
con.Open 

Set rs.activeconnection = con 

rs.Open "Select * from SharePrices" 

StartRow = 3 

Do Until rs.EOF 
    'First Field 
    Cells(StartRow, 4) = rs.Fields(1).Value 
    'Second Field 
    Cells(StartRow, 5) = rs.Fields(2).Value 
    'Third Field 
    Cells(StartRow, 6) = rs.Fields(3).Value 
    rs.movenext 
    StartRow = StartRow + 1 
Loop 

rs.Close 
Set rs = Nothing 
con.Close 
Set con = Nothing 

' RECORD A SIMPLE MACRO TO DELETE THE DATA POINT THAT YOU WANT TO ELIMINATE 

End Sub