部門AでBookA、部門BでBookB、部門CでBookCのファイルを作成しています。
それぞれのBookの「H1」セルに「H28.10.31」の形式で日付データが入っています。
各々のデータを「部門」+「H1セルの日付」のファイル名で、かつデスクトップに保存することはできるでしょうか?
部門ごとのデスクトップの位置は違うので、特殊フォルダでの指定が必要と思います。
「部門」+「H1セルの日付」のファイル名での保存や、ファイル名を固定してデスクトップに保存はできるようなのですが、二つを同時にかなえる方法をご教示ください。
Windows10、Office2010の環境です。
No.2ベストアンサー
- 回答日時:
こんにちは。
>fName = Switch(mName = "A", "BookA",
実は、この部分は、質問から連想した、私の単なる思いつきの範囲で、どうやって部門を決めるか分からないままに組み立てました。だから、エラーは当然と言えば当然なのですが……
>「Null の使い方が不正です」「実行時エラー'94'」
エラーからみると、
mName = Application.UserName 'アプリのユーザー名の取得
'名前の置き換え
fName = Switch(mName = "A", "BookA", mName = "B", "BookB", mName = "C", "BookC")
ここのコードの部分は意味がないものになっているようです。
>前回の補足、誤りでした。エラー回避のため付加されるべき「A」が付加されずにデスクトップに保存されました
例えば、
今使っているユーザー名="(Officeにおいての)登録名", "BookA"
で、fName のところに、"BookA" を入れるという発想だったわけです。
別の登録したユーザーが使えば、別のブック名になって、"BookB" になるわけです。
この仕組が分かりますでしょうか。
このユーザー名は、
ファイル-オプション-基本設定-
Microsoft Office のユーザー設定
ユーザー名(u) _______________
のところです。
Application.UserName を使うと、その登録名が返ってくることになります。
それで分けようと考えたのです。
実は、もう一つ、ユーザー名があります。
ファイルのフルパスなどに登場するユーザー名は、
こちらです。
mName2 = Environ("USERNAME")
そのどちらかで分けたらよいとか考えました。
どのように部門を識別するか、私は、分からないままでしたので、そこが分かれば、問題は解決するのだと思っています。ただ、プライバシーの問題があるでしょうから、ご自身で書き換えていただくことになります。
No.1
- 回答日時:
部門というのは、一体、どうやって取得するのでしょうか。
ユーザー名の違いかな?
後は、ご自身で加工してください。
Sub Test1()
Dim objShell As Object
Dim strDesktop As String
Dim mDate As Variant
Dim mName As String
Dim fName As String
mName = Application.UserName 'アプリのユーザー名の取得
'名前の置き換え
fName = Switch(mName = "A", "BookA", mName = "B", "BookB", mName = "C", "BookC")
If ActiveSheet.Range("H1").Value <> "" Then
mDate = ActiveSheet.Range("H1").Text
mDate = Replace(mDate, ".", "", , , 1) 'カンマ/ピリオドはファイル名として使えません
End If
fName = fName & mDate
Set objShell = CreateObject("WScript.Shell")
strDesktop = objShell.SpecialFolders("Desktop") & "\"
ActiveWorkbook.SaveAs strDesktop & fName, xlOpenXMLWorkbookMacroEnabled
End Sub
こんにちは
たびたびの回答に深く感謝いたします。
fName="A" として、最終行を
ActiveWorkbook.SaveAs strDesktop & fName & ".xlsm", xlOpenXMLWorkbookMacroEnabled
とすることで目的通りの結果を売ることができました。
BookB、BookCにも同じような記述をすれば目的通りの結果が得られるようになります。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/12 16:58
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2023/01/20 14:36
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
access テキストボックスの値取得
-
エクセル VBA dll 読み込...
-
Returnに対するGoSubがありません
-
「アクティブ ユーザーが多すぎ...
-
ファイルクローズ(fclose)でエ...
-
PowerShellを使って関連付けら...
-
VBでファイルが開かれているか...
-
「パス名が無効です」の発生原因
-
VBAのChangeFileOpenDirectory...
-
自身のファイルのコピーを作成...
-
VB実行時エラー75:「パス名が...
-
VBから参照できないCのDLLを使...
-
エクセルファイルが開けない
-
Access2013にてドラッグ&ドロ...
-
FORTRANの実行エラーについて
-
マクロについての質問
-
Excelのファイルが開けま...
-
VB6 Dir関数で52エラー発生
-
アクセスでイベントのロジック...
-
エクセルマクロでエラーの原因...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでファイルが開かれているか...
-
batファイルでレジストリキーの...
-
Returnに対するGoSubがありません
-
VBから参照できないCのDLLを使...
-
「パス名が無効です」の発生原因
-
access テキストボックスの値取得
-
アクセスのクエリでコンパイル...
-
PowerShellを使って関連付けら...
-
freadでデータがない場合の読込...
-
【COBOL】read文でエラー
-
gccを行ってもexeファイルが生...
-
ファイルクローズ(fclose)でエ...
-
VB6 Dir関数で52エラー発生
-
ACCESS VBAでのインポート
-
NAS上のファイルの使用中が解除...
-
FTPの送信結果を検知したい
-
エクセルマクロでエラーの原因...
-
Access2013にてドラッグ&ドロ...
-
EXCELのVBAでWORDが開いてある...
-
fcloseで発生するエラーについて。
おすすめ情報
WindFaller様 回答ありがとうございます。
試してみたところ
「fName = Switch(mName = "A", "BookA", mName = "B", "BookB", mName = "C", "BookC")」の行で「Null の使い方が不正です」「実行時エラー'94'」となります。
WindFaller様
先頭行に「On Error Resume Next」を追加したところ、思い通りの結果が得られました。
この対処でいいのでしょうか?
WindFaller様
前回の補足、誤りでした。エラー回避のため付加されるべき「A」が付加されずにデスクトップに保存されました。