mat*_*kie 5 export microsoft-excel
如何在不更改当前活动文档的情况下将工作表或表格或选择导出为另一种文件格式?
我们主要的数据操作环境是在 Excel 中,大量使用格式和公式来获得我们想要的结果。然后将结果保存为.CSV与其他程序的互操作性。
当使用“文件 >>另存为>> 保存类型 >> CSV”时,将创建 .csv 文件并将活动文档更改为.csv 文件saved_file.csv。有一些关于使用这种新格式丢失功能和格式的警告,但除此之外用户界面没有改变。有粗体和斜体、不同的字体和大小、背景单元格填充、定义的表格范围等。单元格中的所有公式保持不变。
这是一场等待发生的灾难。用户重新开始工作,沉迷于认为一切正常,很快忘记了当前的格式不支持任何魔法,并继续做重要的东西(tm)。午餐时间到了,他们关闭 Excel,对那些没有被阅读的烦人的对话框敲了两次 Yes,因为他们一直都在看他们,然后走出门。...午餐后用户回来并意识到初始另存为和退出之间的所有工作都没有了。
不幸的是,“文件>>导出”只是“另存为”的另一个导航路线,还将活动文档更改为“some_file.csv”。
我们需要的是将一些数据导出到另一种文件类型并保留活动文档“our-real-data.xlsx”。
如何才能做到这一点?并添加到菜单或功能区以一键执行?
如何与组织中的每个人共享?(不要求个人用户打开 VBA 编辑器等)
\n\n\n我们需要的是将一些数据导出到另一种文件类型并保留活动文档“our-real-data.xlsx”。
\n
自从你提到它以来,我已经整理了一个快速的 VBA 插件,它可以导出为 CSV。我尝试使用尽可能少的代码,以便新用户可以更轻松地理解它。
\n\nC:\\Users\\%USERNAME%\\AppData\\Roaming\\Microsoft\\AddIns重新启动 Excel 并查看菜单栏
\n\nFunction ExportCSV()\n\n Dim fso As Object\n Set fso = CreateObject("Scripting.FileSystemObject")\n\n On Error Resume Next\n ChDrive (ActiveWorkbook.Path)\n ChDir (ActiveWorkbook.Path)\n strName = fso.GetBaseName(ActiveWorkbook.Name)\n On Error GoTo 0\n\n strFilename = Application.GetSaveAsFilename(strName, "CSV Files,*.csv", 1)\n delimiter = Application.International(xlListSeparator)\n If Not strFilename = False Then\n\n Open strFilename For Append As #1\n\n For Each rngRow In ActiveSheet.UsedRange.Rows\n arr2D = rngRow\n arr1D = Application.Index(arr2D, 1, 0)\n strRow = Join(arr1D, delimiter)\n Print #1, strRow\n Next\n\n Close #1\n End If\n\nEnd Function\nRun Code Online (Sandbox Code Playgroud)\n\n一旦每个用户在其 Excel 中启用了加载项(无法自动化),您就可以.xla通过网络共享、Robocopy 或类似工具复制新文件版本。但这应该是一个单独的问题,因为有太多不同的方法来解决这个问题。
对于 VBA 极客来说,最有趣的部分是
\n\narr2D = rngRow\narr1D = Application.Index(arr2D, 1, 0)\nstrRow = Join(arr1D, delimiter)\nRun Code Online (Sandbox Code Playgroud)\n\n它使用 Join() 函数将范围(在我们的例子中为单行)转换为 2D 数组,然后转换为 1D 数组,最后转换为单个字符串
\n| 归档时间: |
|
| 查看次数: |
754 次 |
| 最近记录: |