• 締切済み

C:\Documents and Settings\ユーザー名2\適当なフォルダ名へ保存したいのですが・・・。

C:\Documents and Settings内の個人毎のフォルダにファイルを保存したいのですがどうしてもうまくいきません。 どなたかわかる方、お力を貸していただけないでしょうか? Dim ユーザー名1 As String Dim ユーザー名2 As String ユーザー名1 = Application.UserLibraryPath  ’ユーザー名格納 ユーザー名2 = Mid(ユーザー名1, 27, 8)    ’ユーザー名切出 ChDir "C:\Documents and Settings\ユーザー名2\適当なフォルダ名" ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\ユーザー名2\適当なフォルダ名r\適当なファイル名.xls", FileFormat:= _ xlNormal (変数:ユーザー名2)にうまく代入されない状態です。 変数の宣言がまずいのでしょうか??? 初心者丸出しの書き方で恐縮ですが、どうかお願いいたします。

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.4

> Mid(ユーザー名1, 27, 8) と固定して大丈夫ですか? Application.UserLibraryPathを\で分解して、2階層目がユーザ名、という理解で正解でしょうか? Dim ユーザー名1 As String Dim ユーザー名2 As String Dim strArrey() As String ユーザー名1 = Application.UserLibraryPath  ’ユーザー名格納 strArrey()=Split(ユーザー名1, "\") ユーザー名2 = strArrey(2)     ’ユーザー名切出

morino9086
質問者

お礼

ご回答ありがとうございます。 アドバイスいただいた内容でも解決できました。 VBAにはいろいろな書き方があることがわかり非常に参考になりました。 アドバイスいただいた方々に一歩でも近づけるようにがんばりたいと思います。 本当にありがとうございました。

noname#70958
noname#70958
回答No.3

基本的すぎて、もしお気を悪くされたらすみません。 ChDir "C:\Documents and Settings\ユーザー名2\適当なフォルダ名" ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\ユーザー名2\適当なフォルダ名r\適当なファイル名.xls", FileFormat:= _ xlNormal に出てくる「ユーザー名2」って変数ですよね? もしかして、 ChDir "C:\Documents and Settings\" & ユーザー名2 & "\適当なフォルダ名" ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\" & ユーザー名2 & "\適当なフォルダ名r\適当なファイル名.xls", FileFormat:= _ xlNormal とすれば通る…なんてオチでは? 文字列中に直接変数名を埋め込んでもその部分が勝手に入れ替わったりはしないので、 【変数より前の文字列】,【変数】,【変数より後の文字列】をそれぞれ明示的に結合する必要があります。 とりあえずご参考まで。

morino9086
質問者

お礼

ご指摘ありがとうございます。 解決しました。 変数に関して、スペースや&を書く必要があるということすらわかっていませんでした。 大変参考になりました。 本当にありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>適当なフォルダ名r\ のrは何?ミスタイプ? msgboxで(またはCells(1,1)に代入して)"C:\Documents and Settings\ユーザー名2\適当なフォルダ名r\適当なファイル名.xls", を表示して、じっくりとチェックしてみては?

morino9086
質問者

お礼

回答ありがとうございます。 >適当なフォルダ名r\ のrはサイトへの書き込みミスで、マクロには書いておりません。 ご指摘の通り、Midで切り出したユーザー名(文字列数8)と、実際のユーザー名(文字列数8)をMsgBox等でじっくり見たのですが、完全に同一の文字列でした。 社内の不特定多数の人間が使用するファイルを作成しておりまして、どうしてもユーザー名を変数に代入したいんですが・・・。 やはりマクロは難しいですね。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

簡単に言うと、ログオンしたユーザーとは別のユーザーのフォルダに 入り込みたいと言う事でしょうか? (その場合、権限についてはちょっと無知っぽい私ですけど)

morino9086
質問者

お礼

あ、そこまで大それたシロモノではありません。 変な質問の仕方でスイマセンでした。 私の部署の個人PCに、ユーザー名以外は誰にでも C:\Documents and Settings\ユーザー名2\会計システムのフォルダ名(会計システムのフォルダ名は全員同じです) 要は、ユーザー名以外は完全にフォルダパスが同様のフォルダが存在しております。 そして、部署の人間が質問のマクロ搭載のファイルを使って、そのフォルダに自動で保存するマクロを書きたかったのです。 もちろん手書きで個人毎のユーザー名をマクロに書き込めば作動しますが・・・。 もしわかるようであればご回答いただければと思います。