提问人:tester12341234 提问时间:9/15/2023 最后编辑:JohnMtester12341234 更新时间:9/16/2023 访问量:68
如何将未指定数量的行和列从 SQL Server 粘贴到 Excel 工作表
How to paste unspecified number of rows and columns from SQL Server to Excel worksheets
问:
自从我创建VBA宏以来已经有一段时间了。需要将多个表从 SQL Server 导出到 Excel 工作簿中。VBA 的某些 SQL 查询解决方案使用用户名/密码组合,我使用的 SQL Server 是 Microsoft 身份验证作为登录。
当我尝试使用将具有未指定范围的 SQL Server 粘贴到工作表时,我当前遇到错误。不需要完整的解决方案,只需要那些可以帮助我到达我需要的地方的部分。谢谢!我目前的解决方案需要从 SQL 手动复制表。Range("A1").pastespecial
Sub Format_Data_for_AddData()
'
' Format_Data_for_AddData Macro
' Add data copied to clipboard to a workbook, formatting cells to text, changing sheet name
'
' Keyboard Shortcut: Ctrl+r
'
Dim prevSheet As Worksheet 'Previous sheet to paste data into after
Dim activeBook As Workbook 'Active workbook being pasted into
'Set current sheet to previous sheet
Set prevSheet = ActiveSheet
'Format cells to text
Sheets.Add After:=Sheets(Sheets.Count)
'Set current sheet to previous sheet
Set prevSheet = ActiveSheet
Cells.NumberFormat = "@"
Range("A1").PasteSpecial
End Sub
答:
0赞
Randy in Marin
9/16/2023
#1
这是使用 VBA 的另一种方法,它要容易得多。PowerShell 中的这个简短且完全有效的示例加载数据,创建 Excel 文档,然后打开它进行显示。联机搜索 DBATools 和 Import-Excel 模块安装以了解详细信息。
$cmsServer = 'myserver'
$query = 'SELECT * FROM dbo.ad_servers'
$dataSet = Invoke-DbaQuery -SqlInstance $cmsServer -Database 'CMS' -Query $query
$dataSet |
Select-Object OperatingSystem, LastLogonEstimate |
Export-Excel -Path 'c:\temp\myreport.xlsx' -AutoSize -WorksheetName 'SampleExport' -ClearSheet -Show
如果要将多个表导入到同一文档中,请使用相同的文档和不同的工作表名称调用 Export-Excel。如果您希望打开文档,请使用“仅在最后一次调用时显示”。(文档在更新时需要关闭。
$dataSet1 |
Select-Object Col1, Col2 |
Export-Excel -Path 'c:\temp\myreport.xlsx' -AutoSize -WorksheetName 'Data Set 1' -ClearSheet
$dataSet2 |
Select-Object Col1, Col2 |
Export-Excel -Path 'c:\temp\myreport.xlsx' -AutoSize -WorksheetName 'Data Set 2' -ClearSheet
$dataSet3 |
Select-Object Col1, Col2, Col3 |
Export-Excel -Path 'c:\temp\myreport.xlsx' -AutoSize -WorksheetName 'Data Set 3' -ClearSheet -Show
如果存在格式问题,除了 AutoSize 之外,其他参数可能会有所帮助。例如,Numberformat。
如果工作表已存在,ClearSheet 将清除该工作表。不需要新文档。
评论