ここから本文です

VBAについて教えてください。 自分はネットを参考にして、作り上げました。 ...

bbr********さん

2019/3/107:58:03

VBAについて教えてください。

自分はネットを参考にして、作り上げました。

下記は動作の例ですが

はじめに新しいシート(aaa)を作り、ダイアログからcsvを取り込むようにします。

csvファイルを文字列で取り込み、csvファイルを削除します。

aaaシートから必要なのを、あああシートにコピペさせる。

☆そして、aaaシートを名前付けて保存するダイアログが出ます。☆

保存したら、aaaシートを削除して完了といった流れになります。


Sub csv()

    Sheets.Add After:=ActiveSheet
    ActiveSheet.Name = "aaa"
    
    Dim FileName As String
    Dim i As Long
    Dim Cnt As Long
    Dim Buf As Variant
    Dim FileNo As Integer
    Dim SplitString As Variant

    'ファイルダイアログを表示
    FileName = Application.GetOpenFilename("CSVファイル,*.csv")

    If FileName <> "False" Then

    '全セル選択して書式を文字列にセットする
        Cells.Select
        Selection.NumberFormatLocal = "@"
        Cells(1, 1).Select

        '空いているファイル番号を取得
        FileNo = FreeFile()
        Buf = Space(FileLen(FileName))

        'ファイルを開いてbufに1行読み込み
        ' → タブで配列に分割
        ' → セルに書き出し
        Open FileName For Input As #FileNo
        Do Until EOF(FileNo)
            Line Input #FileNo, Buf
            Cnt = Cnt + 1
            SplitString = Split(Buf, ",")
            
            
           For i = 0 To UBound(SplitString)
                Cells(Cnt, i + 1) = SplitString(i)
            Next i
        Loop

        Close #FileNo
        
        Kill FileName

        Sheets("aaa").Range("A1:E100").Copy
        
        Sheets("あああ").Range("F1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False        
 
    Dim SelectFile As String    '保存ファイル名を格納する変数
 
    With Application.FileDialog(msoFileDialogSaveAs)
    
        'ダイアログボックスを表示
        If .Show = True Then
            
            '保存ファイル名を取得する
            SelectFile = .SelectedItems(1)
            
            '保存ボタンを押された場合、新しいブックに保存するシートをコピーする
            '⇒マクロなしのファイルを作成するため
            Worksheets("aaa").Copy
            
            '新しいブックのファイルを保存する
            ActiveWorkbook.SaveAs (SelectFile)
            ActiveWorkbook.Close
  
  Application.DisplayAlerts = False
            Sheets("aaa").Delete
            ActiveWorkbook.Save
   Application.DisplayAlerts = True
        
       Else
    Sheets("aaa").Delete
    
       End If
        
    End With
       

    Else
    Sheets("aaa").Delete

        'ファイルダイアログをキャンセルされた場合何もしない

    End If
End Sub



☆そして、aaaシートを名前付けて保存するダイアログが出ます。☆

この時に、名前が自動で本日と時刻が数字で出るようにする方法はあるのでしょうか。

今は、空白のままなので、自分で好きなように入力して保存する形になります。

自動で本日&時刻の数字がでたら、そのまま保存するので、入力する手間が省くと考えました。

宜しくお願いします。

補足もう1つ、補足で申し訳ありませんが、csvを文字列で取り込んだら、

全てのセルに "" に囲まれてしまっています。

""を取り除く方法を教えて頂けないでしょうか。

閲覧数:
56
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

lgk********さん

2019/3/108:47:48

ダイアログに初期値を入れたいならInitialFileNameを使います。
ファイル名に/は使えないので、例えばこのようにします。
        With Application.FileDialog(msoFileDialogSaveAs)
            .InitialFileName = Format(Now, "YYYY-MM-DD_hh-mm")
Formatの中身は、お好みで変更して下さい。

後、このままだど、保存時にキャンセルを押しても、ファイルが削除されます。
Killは
                Application.DisplayAlerts = True

            Else
に入れたほうがいいです。

  • 質問者

    bbr********さん

    2019/3/109:29:19

    返事ありがとうございます。
    もう1つ、補足で申し訳ありませんが、csvを文字列で取り込んだら、

    全てのセルに "" に囲まれてしまっています。

    ""を取り除く方法を教えて頂けないでしょうか。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/3/1 12:17:21

色々と親切にありがとうございました。
また、移動方法も教えていただき、大変参考になりました。

ベストアンサーにさせていただきます。

ベストアンサー以外の回答

1〜1件/1件中

c72********さん

2019/3/108:34:32

"ファイル名" & Format(Now, "yyyymmddhhnn") & ".csv"

こんな感じの。秒もいるなら

"ファイル名" & Format(Now, "yyyymmddhhnnss") & ".csv"

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる