[[20160329075318]] 『保存エラー』(エクセルおじさん) ページの最後に飛ぶ

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

 

『保存エラー』(エクセルおじさん)

 エクセルシートをPDFファイルに変換し、保存するように作成しましたが、
 別事務所(数十か所)で使用する場合は、ユーザー名の変更が必要があるのではと
 思いつきました。その対処としてセルにユーザー名を入力し、それを取得して保存
 出来るようにコードを組みましたが、上手く出来ません。私の理解不足?間違い?だと
 思います。ご教示をお願い致します。

 Sub PDF作成()
 '

     Sheets("TABLE").Select
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      "C:\Users\J777\Documents\BFS" & Range("M7") & "" & Range("M8") & "" &  Range("M9") & "〜" & Range("M10") & ".pdf", Quality:=xlQualityStandard, _
       IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
     Range("A1").Select
     MsgBox "マイドキュメントにPDF形式で保存されました。" 

 End Sub

   このコードは、自分のパソコンではOKなのですが、他のPCではエラーとなります。
     その対処として、3行目のJ777のユーザー名をセルに入力したものを取得するように
     しました。間違いでしょうか?

      J777のところを " & Range("M6").Value & " に変更するとエラーとなります。
      エラーは、ドキュメントが開いているか、保存時にエラーが生じた可能性です。

    宜しくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


ヒントです。
 Sub ヒント()
     MsgBox Environ("USERPROFILE") 'ユーザーパス自動取得
 End Sub
(マリオ) 2016/03/29(火) 09:10

 以下もヒントになりますかね。

 Sub ヒントその2()
    MsgBox CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
 End Sub

 補足

 確かに Environ("USERPROFILE") で、ユーザー領域までのフォルダパス文字列が動的に返りますが
 その下の、現在では "Documents" と名付けられた領域が、未来永劫、C:\Users\●●●\Documents である保証はありません。
 実際、XP時代までは Documents という名前ではなく MyDocuments でしたから。
 なので、そこまで含めて動的に取得しておくことが望ましいですね。

(β) 2016/03/29(火) 09:52


 >XP時代までは Documents という名前ではなく MyDocuments でしたから。
 そうでしたかね(^^♪
(マリオ) 2016/03/29(火) 10:01

こんにちわ。

PDFを作成するフォルダ(今回はマイドキュメント)と、
同じ場所にマクロブックを置いて貰って、

ThisWorkbook.Path & "\" & 子フォルダ名 & "\" & ファイル名.pdf

みたいにして親フォルダまでのパスを取得すると言う方法も簡単に100%確実に取得できますがどうでしょう?

(sy) 2016/03/29(火) 10:11


 ご教示の皆様へ

  色々とご教示有難うございます。
  私のレベルでは難解で、色々と試行、検索していますが
  戸惑っています。
  全国の数十名の職員が使用する場合があり、PC操作に詳しくない者も
  おり、syさんのご提案には躊躇しております。
  また、Tryしてみますが、今後も宜しくお願いします
(エクセルおじさん) 2016/03/29(火) 10:51

 そうですか?

 Documents\BFS
 のBFSと言う名前の子フォルダは、ユーザーが各自で作らないといけないんですよね?

 目的の親フォルダに子フォルダを作成すると言う事が出来るくらいなら、
 目的のフォルダにブックを置くと言う作業程度なら出来るんじゃないですか?

 更に作成されたPDFを開く時にも、Documents\BFSを開いて目的のPDFを見つける、
 と言う作業は各ユーザーさんが手作業で行うんですよね?

 同じフォルダにあるブックの開き方が分からないと言う事は無いと思いますが?

 それとは別に私もPDFを自動で発行するファイルをPC初心者を含むユーザーさん達に配布した時に使用した方法は、
 ファイルは好きな場所に保存してもらって、ファイルと同じ場所に「PDF発行」と言うフォルダをマクロで自動作成して、
 その中にPDFを自動保存すると言う方法で、0では無いですが問い合わせも殆どなく配布出来ましたが、どうでしょう?

 まあ私の会社は、オンライン共有フォルダに自分の名前のフォルダを作って、
 その中に自分のファイルを保存すると言う事が、前もって教育されている環境なので、
 質問者さんの状況よりはかなりましな状況ですので、一概に大丈夫とは言えませんが。

(sy) 2016/03/29(火) 21:33


 >>私のレベルでは難解で、色々と試行、検索していますが  戸惑っています。

 皆さん、そんな難しいことを回答しているのではないのですが・・・・

 ところで、アップされたコードで、自分のパソコンならOKなのでしょうか?

 M7 に入っている値がどんなものかわからず、また PDF名がどんなものなのかもわかりませんが
 アップされたコードでうまくいっているとしたら

 1.フォルダは Docyments 配下の BFS という名前。 で、M7 には "\" で始まる文字列がある。
 2.フォルダは Documennts そのもの。 PDFファイル名の頭が "BFS"

 この2つのケースのみ。

 もし、BFS がフォルダ名で、かつ M7 には 普通の(\ ではじまらない)文字列があるなら、おかしなことになると思いますが?

(β) 2016/03/29(火) 21:50


 ご教示の皆様へ

  私のレベルは、マクロの記録を使用したものに少し手を加える程です。関数などの意を深層まで理解するまで には至っておりません。
(自分なりには理解しようと努めています)このようなレベルでご教示を願うことは恐縮しながらもレベルアップを志している次第です。
βさんのケースでは、2に該当します。宜しくお願いします。
(エクセルおじさん) 2016/03/30(水) 10:24

 >>2に該当します。

 であれば、

     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      CreateObject("WScript.Shell").SPecialFolders("MyDocuments") & "\BFS" & Range("M7") & "" & Range("M8") & "" & Range("M9") & "〜" & Range("M10") & ".pdf", Quality:=xlQualityStandard, _
       IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False

(β) 2016/03/30(水) 11:41


 βさんへ

  ご教示有難うございます。
  数か所のPCで動作確認させて頂きました。
  解決出来ました。これからも勉強致します。

(エクセルおじさん) 2016/03/30(水) 13:51


コメント返信:

[ 一覧(最新更新順) ]


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