用VB将数据导入到一个已经存在的单元格上,数据是过去了,但是对齐方式改变了,不知道其他的如公式什么会不会改变.如何只想改变值如何操作???

解决方案 »

  1.   

    可以仿照一下下面这个看看
    Public Function ExporToExcel(strOpen As String)   'strOpen 为 sql语句
    '*********************************************************
    '* 名称:ExporToExcel
    '* 功能:导出数据到EXCEL
    '* 用法:ExporToExcel(sql查询字符串)
    '*********************************************************
    Dim Rs_Data As New ADODB.Recordset
    Dim Irowcount As Integer
    Dim Icolcount As Integer
    Dim xlApp As New Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim xlQuery As Excel.QueryTable
    With Rs_Data
    If .State = adStateOpen Then
    .Close
    End If
    .ActiveConnection = Conn
    .CursorLocation = adUseClient
    .CursorType = adOpenStatic
    .LockType = adLockReadOnly
    .Source = strOpen
    .Open
    End With
    With Rs_Data
    If .RecordCount < 1 Then
    MsgBox ("没有记录!")
    Exit Function
    End If
    '记录总数
    Irowcount = .RecordCount
    '字段总数
    Icolcount = .Fields.Count
    End With
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = Nothing
    Set xlSheet = Nothing
    Set xlBook = xlApp.Workbooks().Add
    Set xlSheet = xlBook.Worksheets("sheet1")
    xlApp.Visible = True
    '添加查询语句,导入EXCEL数据
    Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))
    With xlQuery
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    '.Savepsw = True
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    End With
    xlQuery.FieldNames = True '显示字段名
    xlQuery.Refresh
    With xlSheet
    .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Name = "黑体"
    '设标题为黑体字
    .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Bold = True
    '标题字体加粗
    .Range(.Cells(1, 1), .Cells(Irowcount + 1, Icolcount)).Borders.LineStyle = xlContinuous
    '设表格边框样式
    End With
    With xlSheet.PageSetup
    .LeftHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10公司名称:" ' & Gsmc
    .CenterHeader = "&""楷体_GB2312,常规""公司人员情况表&""宋体,常规""" & Chr(10) & "&""楷体_GB2312,常规""&10日 期:"
    .RightHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10单位:"
    .LeftFooter = "&""楷体_GB2312,常规""&10制表人:"
    .CenterFooter = "&""楷体_GB2312,常规""&10制表日期:"
    .RightFooter = "&""楷体_GB2312,常规""&10第&P页 共&N页"
    End With
    xlApp.Application.Visible = True
    Set xlApp = Nothing '"交还控制给Excel
    Set xlBook = Nothing
    Set xlSheet = Nothing
    End Function
      

  2.   

    1 可能是你使用的方法导致对齐丢失,这需要你的前面代码才能继续分析
      例如:range("a1:d100").clear,就会导致格式丢失
    2 如果写的数据不多,可以写完后设置为某种对齐方式,例子见楼上帖子