下記VBAのコードですが、「選択範囲をCSVファイルにしてカレントフォルダに出力する」というものですが
これを編集して、どのパソコンでもデスクトップに出力すると編集したいです。
どのようにコードを変更したらいいか、教えていただけないでしょうか?自分ではどうがんばっても変更できそうにありませんでした。
どうかよろしくお願いいたします。
Sub Selection_CSV_Output()
'ファイル名をINPUTBOXで取得
'選択範囲を調べる
'選択範囲の左上から1列づつ最終列までセルの値を取得しカンマを付加した文字列を作成
'1行分の文字列の最後カンマを削除し、改行コードを付加する
'行数分だけ繰り返す
'CSVファイルとして、出力
'確認メッセージをMSGBOXで表示
'テストバージョン
Dim myInBox As String
Dim start_row, start_column, end_row, rows_count, columns_count, end_column As Long
Dim SaveD, d As String
Dim CsvF_name, cellD As String
Dim i, j As Long
'InputBoxでファイル名指定
myInBox = Application.InputBox(Title:="ファイル名", prompt:="拡張子なしのファイル名を入力してください", Default:="001", Left:=100, Top:=100, Type:=2)
If myInBox = "False" Then Exit Sub
'Debug.Print myInBox
'ファイル名
CsvF_name = myInBox & ".csv"
'範囲を調べる
start_row = Selection.Row '開始行
start_column = Selection.Column '開始列
end_row = start_row + Selection.Rows.Count - 1 '終了行
end_column = start_column + Selection.Columns.Count - 1 '終了列
rows_count = Selection.Rows.Count '範囲行数
columns_count = Selection.Columns.Count '範囲列数
'読み込みと出力
Open CsvF_name For Output As #1
For i = start_row To start_row + Selection.Rows.Count - 1 '行の繰り返し
For j = start_column To end_column '列の繰り返し
cellD = Cells(i, j).Value
SaveD = SaveD & cellD & "," 'カンマを付加
Next j
'列の終わり
SaveD = Left(SaveD, Len(SaveD) - 1) '最後の一文字(カンマ)を消す
SaveD = SaveD & vbCrLf '改行コードを付加
'Debug.Print SaveD
Next i
'Debug.Print SaveD
Print #1, SaveD
Close #1
'確認メッセージ
MsgBox CsvF_name & "名でカレントフォルダに作成しました。"
End Sub
No.1ベストアンサー
- 回答日時:
たとえば「Excel vba デスクトップ」といったキーワードでちょっとぐぐってみると,すぐに必要なネタが集まります。
例:
http://www.moug.net/tech/exvba/0060052.htm
そのsample3を参考に作成してみると…
変更前:
myInBox = Application.InputBox(Title:="ファイル名", prompt:="拡張子なしのファイル名を入力してください", Default:="001", Left:=100, Top:=100, Type:=2)
’中略
'ファイル名
CsvF_name = myInBox & ".csv"
変更後:
Dim myPath As String, WSH As Variant
myInBox = Application.InputBox(Title:="ファイル名", prompt:="拡張子なしのファイル名を入力してください", Default:="001", Left:=100, Top:=100, Type:=2)
’中略
Set WSH = CreateObject("Wscript.Shell")
myPath = WSH.SpecialFolders("Desktop") & "\"
Set WSH = Nothing
CsvF_name = myPath & myInBox & ".csv"
といった具合で良いことが判ります。
回答ありがとうございます。
あまりにも全体のコードが難しくて、はなから断念してしまいました。
自分の努力不足を反省します。
勉強になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
オートフィルタ後のデータから...
-
基準日以前のデータを範囲を指...
-
エクセルの時刻のカウントが出...
-
マクロで行の高さを設定したい
-
エクセル VBA 行間隔を飛ばした...
-
Excelで並び替え後にア行...
-
文字列を比較し、相違するフォ...
-
検索条件に合うセルの個数を数...
-
列と行の名前(重複あり)が交...
-
矩形範囲の複数列を縦1列に並...
-
急ぎ!色のついたセルを非表示...
-
複数回答のアンケート集計
-
エクセル 複数行ある同一商品...
-
【Excel VBA】指定した行の最大...
-
特定の行を選択して別のシート...
-
エクセル マクロでセルを自動移動
-
プルダウンに【なし、平均、デ...
-
EXCELで日付を比べ3か月以内の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
急ぎ!色のついたセルを非表示...
-
【Excel VBA】指定した行の最大...
-
エクセル関数について
-
オートフィルタ後のデータから...
-
エクセルの時刻のカウントが出...
-
文字列を比較し、相違するフォ...
-
Excelで教えてください。 入力...
-
EXCEL 最終行のデータを他のセ...
-
基準日以前のデータを範囲を指...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル VBA 行間隔を飛ばした...
-
エクセル関数について
-
プルダウンに【なし、平均、デ...
-
時間の重複チェック
-
excel / ピポッド 日数を出したい
-
VBA 複数行の検索及び抽出
おすすめ情報