我的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