我的macros中的错误1004,同时将Excel工作簿保存为日文的CSV
我写了一个简单的macros,用于将所有工作簿保存为单独的CSV文件。 这适用于我的本地机器(英语郎)path如* D:\ MyFolder * 。
但是,当我在另一台启用了日语的Windows计算机上尝试相同的macros时,我得到了SaveAS
方法的1004错误。
文件path如D:¥MyFolder¥
下面是导致错误的我的代码:
pathSeperator = Application.PathSeparator
strPath = InputBox(“input像d:\ someDirectoryName,d:”,,1000这样的EXISTING目录path)
SaveToDirectory = strPath & pathSeperator & "csv" & pathSeperator If Dir(strPath & pathSeperator & "csv", vbDirectory) = "" Then fso.CreateFolder SaveToDirectory Else fso.DeleteFolder strPath & pathSeperator & "csv" fso.CreateFolder SaveToDirectory End If For Each WS In ThisWorkbook.Worksheets newName = WS.Name & "-" & Format(Date, "yyyy-mm-dd") & "-" & Format(Time, "hhmmss") WS.Copy ActiveWorkbook.SaveAs SaveToDirectory & newName, xlCSVMSDOS, Local:=True ActiveWorkbook.Close Savechanges:=False Next
在日语机器上,您是否尝试将Visual Basic编辑器中的字体更改为日文字体?
这可以通过工具 – >选项 – >格式选项卡完成。
编辑22/08/13
有点远,但我已经读过,ASCII中的日元字符与英语机器上的/ charcter相同,因此使用Chr(92)应该同时工作。 在英语机器上,它会在日本的机器上显示出来,就会有日元符号。 一个简单的testing就是在日本机器上运行下面的macros,看看会发生什么。
Sub TestSeperator() MsgBox Chr(92) End Sub
如果是这种情况,那么您需要进行如下更改:
SaveToDirectory = strPath & Chr(92) & "csv" & Chr(92) If Dir(strPath & Chr(92) & "csv", vbDirectory) = "" Then fso.CreateFolder SaveToDirectory Else fso.DeleteFolder strPath & chr(92) & "csv" fso.CreateFolder SaveToDirectory
我已经在我的英语语言机器上试过了你的代码,并且当我进入目录path,包括最后的“\”时,设法引发了1004错误。
我已经修改了代码,以便它添加path分隔符,如果它不存在,并且代码的其余部分假定它已经在strPath中。
pathSeperator = Application.PathSeparator strPath = InputBox("Enter EXISTING Directory path like d:\someDirectoryName, d:", , , 1000) Set fso = New FileSystemObject If Right(strPath, 1) <> pathSeperator Then 'added if clause strPath = strPath & pathSeperator End If SaveToDirectory = strPath & "csv" & pathSeperator 'Removed one pathSeperator If Dir(strPath & pathSeperator & "csv", vbDirectory) = "" Then fso.CreateFolder SaveToDirectory Else fso.DeleteFolder strPath & "csv" 'Removed one pathSeperator fso.CreateFolder SaveToDirectory End If For Each WS In ThisWorkbook.Worksheets newName = WS.Name & "-" & Format(Date, "yyyy-mm-dd") & "-" & Format(Time, "hhmmss") WS.Copy ActiveWorkbook.SaveAs SaveToDirectory & newName, xlCSVMSDOS, Local:=True ActiveWorkbook.Close Savechanges:=False Next