[[20141002184142]] 『上書き保存について』(keisuke) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『上書き保存について』(keisuke)

お世話になります。

2003のエクセルと、2013のエクセルで同じファイルを使っております。
ファイルは2003のxlsのままです。

2003では問題なく動いていたマクロが、2013ではエラーします。
問題になっているのは上書き保存のところです。

target = ThisWorkbook.FullName

途中のコードは割愛

ActiveWorkbook.SaveAs Filename:=path & ws3.Range("E1") & ".csv", FileFormat:=xlCSV
Sheets(ws3.Range("E1")).Name = sheetname1
※途中、CSVファイルを作成している。

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=target, FileFormat:=xlNormal '上書き保存
Application.DisplayAlerts = True

実行時エラー 1004 ○○にアクセスできません となります。

色々調べて FileFormat:=XlFileFormat.xlExcel8 に変えてみましたがダメでした。

ブック名が、CSVにつけたファイル名に変わってしまっているみたいです。
これが原因なのでしょうか?

あとは、互換モードで起動されているみたいです。何か関係あるでしょうか・・・

普通の上書き保存はできますので、CSVを出力している事に問題を感じます。

2003でも、2013でも上書き保存できるようにしたいです。
解決策をご存知の方が居られましたら、ご教授頂ければ幸いです。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


 こういうお話でしょうか。

【Excel】VBAでExcelのバージョンによって保存する形式を変更する
http://blog.livedoor.jp/akf0/archives/51172335.html
(Mook) 2014/10/02(木) 20:59


ご連絡ありがとうございます。
最初に書いている通り、フォーマットは変えましたがダメです。
私の説明が悪いみたいですね。
でもどう書けばいいのかわかりません・・・
CSVへの出力はVBAでは名前をつけて保存で、拡張子を変更させるのはよくないのでしょうかね
なんだかよくわかりません
(keisuke) 2014/10/03(金) 06:58

 先のコメント参照先を見て、実際にやってみたのでしょうか。
 こちらでは下記のコードで問題なく動くのですが。

  Sub Sample()
    Dim orgPath
    orgPath = ThisWorkbook.FullName '// 元のファイルは xls 前提

    Dim csvPath
    csvPath = ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(3).Range("E1") & ".csv"

    ThisWorkbook.SaveAs csvPath, FileFormat:=xlCSV

    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs FileName:=orgPath, FileFormat:=IIf(Application.Version < 12, xlExcel9795, 56) '// 先のリンク先と同じことです。
    Application.DisplayAlerts = True
 End Sub

(Mook) 2014/10/03(金) 08:05


 2003で動いて、2013で動かないんですよね?
 調べたら、

http://www.google.co.jp/url?url=http://download.microsoft.com/download/8/5/C/85CA5B92-0829-4966-AECE-C7B4FB2EDE07/Office2013_compatibility_for_macro.docx&rct=j&frm=1&q=&esrc=s&sa=U&ei=O-YtVICzNJSWuQSy3YDYBQ&ved=0CBQQFjAA&sig2=paSkGzcmJZsWiKAUV6OpEw&usg=AFQjCNG_fBZSObYhgz_yES7FTpuIf6vDew

 Office 2013 非対応のファイル形式
 Office 2013 では「97-2003 および 5.0/95 ブック形式」の保存をサポートしておりませんので、
 マクロ内で「 xlExcel9795 」のファイル フォーマットを指定した構文がある場合などにエラーが
 発生することがあります。
 たとえば、下記の構文が含まれるブックを Excel 2013 で開いても正常に動作させることができま
 せん。
 [ThisWorkbook.SaveAs FileFormat:=xlExcel9795]

 64bitのエクセル2013だと発生するようですね?
(稲葉) 2014/10/03(金) 09:02

 試せる環境は持っていませんが、Mookさんのコードをお借りして、
 >IIf(Application.Version < 12, xlExcel9795, 56)
 こちらの                        ~~~~~~~~~~~ を

 IIf(Application.Version < 12, -4143, 56)
 このように                    ~~~~~
 されても動きませんか?
(稲葉) 2014/10/03(金) 09:19

ご連絡ありがとうございます。
そうなんですよ、試したのですができないんですよ・・・
ちなみになんですが、2013のオフィスで上記コードで問題なく動くのでしょうか?
こちらも2003だと動くのですが、13だとアクセスできませんとなります。
アクセスなので、権限とかも色々調べて、色々していますが解決しません。
原因が分からないので苦労しております。
ちなみにCSVファイルは  Write を使って出力したほうがいいのか、名前をつけてで出力
したほうがいいのか、どちらがいいのか分かりますか?
それぞれのメリットとデメリットが分かれば教えていただきたいです。
他にも出力の方法があるなら、そちらも知りたいです。
(keisuke) 2014/10/03(金) 10:06

 アクセス・・・?
 全容が見えないので、答えようがありません。
 アクセスならエクスポート処理を保存して、保存したエクスポートを実行すれば
 いいんじゃないですか?

(稲葉) 2014/10/03(金) 11:03


 いま 2013 が手元にないのですぐに確認できませんが、先のサンプルは2013 でも
 動いたので、別の原因のような気がします。

 下記のような処理に変更してどうでしょうか。

 ThisWorkbook.Worksheets(対象シート).Copy
 ActiveWorkbook.SaveAs CSVで保存
 ActiveWorkbook.Close

 ThisWorkbook.Save

 のようにすれば、元ファイルは影響を受けないと思いますが、どうでしょうか。
(Mook) 2014/10/03(金) 11:13

ご連絡ありがとうございます。
2013でも動いていたと言う事は、上書き保存のコードには問題がないってことですね。
別に原因がありそうですね、

一番最初に書きました、エラー内容
実行時エラー 1004 ○○にアクセスできません のアクセスはファイルにアクセスできない
権限がないってことを言っているのでしょうか?
どのようなときにこのようなエラーがでるのでしょうかね・・・

ちなみにですが、データはサーバー上にあります。
ネットワークの問題かとも思い、デスクトップに保存してみましたがアクセスできませんとなります。
いったいなんなんでしょうかねぇ・・・どつぼにはまってしまいました・・・
(keisuke) 2014/10/03(金) 11:53


 読み違えていました。
 >アクセスなので、権限とかも色々調べて、
 アクセス(が関係しているエラー)なので、
 ということですね。

 Debug.Print target
 でtargetの中身を確認して、
 1)ファイル名に使えない文字が含まれていないか確認する
 2)半角カナが含まれているフォルダ名やファイル名を通っていないか確認する
 3)スペースが含まれていないか確認する
 関係ないかもしれませんが、問題になりそうなところはつぶしておいたほうがいいかも。

(稲葉) 2014/10/03(金) 12:54


ご連絡ありがとうございます。
そのあたりは全て確認済みです・・・
CSVファイルを出力しない場合は上書き保存や名前をつけて保存ができるので
ネットワークやアドレス、コードに問題はなさそうなのですが・・・
Mookさんが案内してくれたように、コードが増えますが一度逃げて処理する事にします。

(keisuke) 2014/10/03(金) 13:33


お世話になっております。逃げる処理もできず、困っております。

今分かっている情報をもとに原因が分かる方がおられましたら、原因と解決策を教えて下さい。

○デスクトップやCドライブなど自身のPCに元のエクセルのデータがあればエラーしない。
○ネットワーク(サーバー)にファイルを置くとエラーする。
○エラーするところで、デバッグにしサーバーに置いてある元のデータの名前の変更はできないし、
 新たに作られたCSVファイルの名前も変更できない。(ここに問題があるのでは?)

誰か分かる方がおられましたらお助け下さい。
(keisuke) 2014/10/21(火) 19:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.