• ベストアンサー
  • すぐに回答を!

エクセルのマクロでテキストを生成すると日付の表示書式が変わってしまう

エクセルのシートをマクロを実行してテキストファイルを生成します。 マクロの記述は以下の通りです。 保存 ChDir "C:\Documents and Settings\All Users\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\All Users\デスクトップ\YA-SWK.txt", FileFormat:= _ xlCSV, CreateBackup:=False '終了 Application.Quit End Sub 元データのエクセルのシートに「2006/9/1」と入力されているセルがあるのですが、マクロを実行して生成されたテキストファイルでは「9/1/2006」と日付の表示順序が変わってしまいました。 この原因は何であるのかつかめません。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数481
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3
  • Wendy02
  • ベストアンサー率57% (3570/6232)

こんにちは。 その現象を確認できました。 >WinXP XL2000 です。 今、その組み合わせでやってみたら、ダメでした。ふと、思って組み合わせを書きましたが、やっぱりバージョンの違いですね。 一般のマクロを書くことにするか、それとも、 =TEXT(A1,"yyyy/m/d") このようにして、文字列に換えるか、どちらかだと思います。 一般のマクロといっても、ごく簡単なものですが、例えば、こんなのは、どうかしら。 理屈は、ものすごく単純で、セルで見えているもの(.Text)を出力するという考え方です。 ただし、何度か、これは試していただかないといけないような気がします。注意点は、UsedRangeは、そのワークシートのデータをバッサリと削除したりすると、前のデータのあった場所まで、範囲を広げた気がします。保存して、開いた状態なら、UsedRangeは、まともな範囲を取得します。その場合の回避方法はいくつかあります。 '-------------------------------------------------------- Sub OutPutCsv()  Dim FName As String  Dim Rng As Range  Dim Fno As Integer  Dim LRow As Long  Dim LCol As Long  Dim strBuf As String  Dim i As Long  Dim j As Integer    'ユーザー設定(パスとファイル名)  Const MYPATH As String = "C:\Documents and Settings\All Users\デスクトップ"  Const MYFILENAME As String = "YA-SWK.txt"     '出力名  FName = MYPATH & "\" & MYFILENAME    Set Rng = ActiveSheet.UsedRange  LRow = Rng.Rows.Count  LCol = Rng.Columns.Count    Fno = FreeFile()    Open FName For Output As Fno  For i = 1 To LRow   For j = 1 To LCol    strBuf = strBuf & "," & Rng.Cells(i, j).Text   Next j   Print #Fno, Mid(strBuf, 2)   strBuf = ""  Next i    Close #Fno    Set Rng = Nothing 'Excelの終了  'Application.Quit End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 TEXT関数を使ったら解決しました。 教えていただいたマクロの記述ですが、私はまだ初心者であるため、理解できるレベルにありません(泣) しかし、時間をかけて解読させていただきたいと思います。 ありがとうございました。

関連するQ&A

  • excel2000マクロでのダイアログ表示での実行

    下記のマクロを実行させると、 ActiveWorkbook.SaveAs Filename:= の所で保存しますか というダイアログが表示されて、はい又はいいえを押さないと次のマクロが実行されないのですが、ダイアログを表示させないで、はいを押したと自動認識して次のマクロを走らせる方法はありますか? ChDir "C:\Documents and Settings\kenkan\デスクトップ\DB\SYSTEM\Inner_System" Workbooks.Open Filename:= _ "C:\Documents and Settings\kenkan\デスクトップ\DB\SYSTEM\Inner_System\一時出力データ.csv" ' その他の疾患を抽出 Columns("H:H").Select Selection.Copy Workbooks.Add ActiveSheet.Paste Cells.Replace What:=" ", Replacement:=" ", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\kenkan\デスクトップ\DB\SYSTEM\Inner_System\一時出力_その他の疾患.txt" _ , FileFormat:=xlText, CreateBackup:=False ActiveWindow.Close

  • エクセルのマクロで、他のブックを開くときについて

    マクロの記録を利用して、他のブックを開くことをしました。 マクロのモジュールを見たら、 ChDir "C:\Documents and Settings\*****\デスクトップ" Workbooks.Open Filename:="C:\Documents and Settings\*****\デスクトップ\○○.xls" となっていました。 1行目の「Chdir」というのはなんでしょう? また、2行目では開きたいブックをパスを使ってあらわしています。 今マクロを動かしているブックと同じフォルダ内にあるブックや そのフォルダから見て上位のフォルダとか、「c:」から始まる パスを使わないような書き方はあるのでしょうか? ご助言お願いします。

  • ファイルの保存先を任意にしたい(マクロ)

     エクセルのマクロです。  マクロを実行した時に、保存先とファイル名は任意に入力して(その部分だけは、マクロ実行者が入力して)、その後もマクロを実行させたいのですがどうすれば良いのでしょうか? たとえば、 ActiveCell.FormulaR1C1 = "1" Range("B1").Select ChDir "C:\Documents and Settings\a\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book1.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A2").Select ActiveCell.FormulaR1C1 = "2" Range("B2").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book2.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A3").Select ActiveCell.FormulaR1C1 = "3" Range("B3").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book3.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A4").Select ActiveCell.FormulaR1C1 = "4" Range("B4").Select  上記の場合は、保存先もファイル名もこちらが指定していますが、その部分だけは、マクロの実行者に任意指定及び入力させたいのです。  マクロ初心者なので、よろしくお願いします。

その他の回答 (2)

  • 回答No.2
  • Wendy02
  • ベストアンサー率57% (3570/6232)

こんにちは。 今、試してみましたが、それは、おそらく、ワークシート側の日付の部分が、デフォルト状態で表示されているからだと思います。ただし、こちらは、Win XP + XL2003です。 日付表示の部分の書式を、明示的に「yyyy/m/d」としておけばよいと思います。コンパネ側が、どのような設定になっていても、正しく出力されていました。

共感・感謝の気持ちを伝えよう!

質問者からの補足

ありがとうございます。 1、実験結果 書式を「yyyy/m/d」にしましたがダメでした。 2、質問 >デフォルト状態で表示されているからだと思います。 デフォルトとは、「セルの書式設定」→「表示形式」→「分類」が標準になっているということでしょうか? 3、補足 WinXP XL2000 です。

  • 回答No.1
  • mshr1962
  • ベストアンサー率39% (7417/18947)

Windowsのコンパネにある「地域と言語のオプション」で日付の設定どうなってます。 「Windows XP における日付、時間、数値、通貨の変更方法」 http://support.microsoft.com/kb/307938/ja

共感・感謝の気持ちを伝えよう!

質問者からの補足

この回答でよいのかわかりませんが、 「地域と言語のオプション」の中の「地域オプション」タブには、 数値 123,456,789.00 通貨 \123,456,789 時刻 11:45:58 短い形式 2006/11/10 長い形式 2006年11月10日 となっております。

関連するQ&A

  • エクセル2000でシートを外部出力するとエラー

    マクロのことはまだ初心者で、下記のようなマクロの記録を作成してみたのですが、実行すると2000ではユーザーが変わるとエラー表示が出てしまって、困っています ユーザー名は私の会社のイントラネットのユーザー番号です シートは関数も入っているので、コピー+値にしデスクトップに外部出力する方法にしています このカ所が黄色になっていました ChDir "C:\Documents and Settings\USR81043\デスクトップ" Sub エクセル2000でシートのコピーをデスクトップに外部出力() ' ' エクセル2000でシートのコピーをデスクトップに外部出力 Macro ' マクロ記録日 : 2002/6/17 ユーザー名 : USR81043 ' ' Sheets("報告書").Select Sheets("報告書").Copy Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("A2").Select Application.CutCopyMode = False ChDir "C:\Documents and Settings\USR81043\デスクトップ" ActiveWorkbook.SaveAs FileName:= _ "C:\Documents and Settings\USR81043\デスクトップ\報告書1.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False End Sub

  • エクセルでマクロを使ってCSV保存時のファイル名

    初めてエクセルでマクロ(マクロの記録と言うのを使って)をトライしている初心者です。自分なりに色々調べて見ましたが、イマイチ分からないので以下2つ教えて頂けないでしょうか? 他のアプリに取込む為、通常使っているエクセルのデータをCSV形式で保存するまでをマクロで作成しマクロボタンまでを作ることは出来ました。それを使いたいと言う同僚が何人かいて、その人にエクセルを渡す場合についてです。 (1)CSV保存するファイル名を、各人好みの元々のエクセルのファイル名にしたい。 (2)保存する場所を、同僚各自のデスクトップにしたい。または各自に指定して保存させたい。 のですが、私が記録したマクロの保存該当部分は以下と思いますが、自分用なので、自分のPCの名前(以下、XXXX部分)になっていて、かつ自分が指定した毎回同じファイル名(以下、AAAA部分)になっているのが問題で、同僚のPCではマクロが実行できませんでした。 この、XXXXとAAAAやその前後の言葉をマクロの修正(VBAで)で書き換えればいいのでしょうか?その場合どのようにすればいいか教えてください。 ChDir "C:\Users\XXXX\Desktop" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\XXXX\Desktop\AAAA.csv", FileFormat:=xlCSV, _ CreateBackup:=False End Sub 長くなりましたが、どうぞ宜しくお願い致します。

  • エクセルマクロ フィルタで検索した結果で新しいブックを作成する

    いつもこちらでお世話になっているマクロ勉強中のものです。 オートフィルタを使ってD9の条件にあるものすべてを順番に新しいブックにコピーしていきたいと思っています。 Loopで処理するのだと思いますが、順番にすべて検索する 繰り返しの処理の仕方が分かりません。 不躾で申し訳ありませんが、提出期限が近いため、 どなたかご指南いただけたらと思います。どうぞよろしくお願いします。 Sub Macro1() ActiveSheet.Range("$A$9:$T$79").AutoFilter Field:=4, Criteria1:="○○" Range("D1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Copy Workbooks.Add ActiveSheet.Paste Folder = "C:\Documents and Settings\All Users\デスクトップ\" folder_name = "デスクトップ" ChDir Folder fname = "(D1).xls" ActiveWorkbook.SaveAs Filename:= _ Folder & fname, FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub

  • 実行時エラー1004

    下記マクロを実行するとA1に入力した文字に名前をつけて保存するような マクロをつくりましたが A1に 「保存横一列」なら保存できますが 「保存(alt+エンター) セルに2行」 というように(alt+エンター)を入れて複数行にすると 「実行時エラー1004」が出てしまいます。 「保存セルに2行」というように1列にして保存したいのですが どのようにしたらいいのでしょうか? よろしくお願いします。 Sub Macro1() Dim name As String name = Range("A1").Value ChDir "C:\Documents and Settings\E-MACHINE\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\E-MACHINE\デスクトップ\" & name & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub

  • WindowsXP で、

    WindowsXP で、 C:\Documents and Settings\All Users\デスクトップは、 Windows7では、 c:\Users\public\desktop です。 では、WindowsXPで、 C:\Documents and Settings\All Users\スタート メニューは、 Windows7では、どこになるのでしょうか? どなたかお教え願います。

  • Excelでファイルを開くをマクロで行いたい

    マクロ初心者です "ファイルを開く"をマクロの記録で記録させると ChDir "C:\Documents and Settings\○○\△△\※※" Workbooks.Open Filename:= _ "C:\Documents and Settings\○○\△△\※※¥LotLog20070131.csv" Windows("●●●.xls").Activate End Sub と記録されます この中で 開きたいファイルネ-ム(上記ならばLotLog20070131.csv)を "●●●.xls"の どこかのセルを参照に開きたいのですが どうすれば宜しいのでしょうか?

  • VBマクロで教えて下さい。

    下記VBマクロで上書きしない時はマクロを終了させたいのですがこ指導をお願いします。 Sub Macro2() ' Macro2 Macro ' マクロ記録日 : 2012/9/3  ユーザー名 : HA社    ChDir "C:\Documents and Settings\6464552\デスクトップ"    ActiveWorkbook.SaveAs Filename:= _        "C:\Documents and Settings\6464552\デスクトップ\直送先部品出庫伝票.xls", FileFormat:= _        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _        , CreateBackup:=False  Range("D42:E49").Select    Selection.ClearContents    Range("I32:J32").Select    Selection.Copy    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _        :=False, Transpose:=False    Application.CutCopyMode = False    ActiveWorkbook.SaveAs Filename:= _        "C:\Documents and Settings\6464552\デスクトップ\PPSC部品出庫伝票.xls", FileFormat:= _        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _        , CreateBackup:=False    Application.Quit End Sub

  • 再質問:Win2000でエクセル97でシートを外部出力するとエラー

    マクロのことはまだ初心者で、下記のようなマクロの記録を作成してみたのですが、実行すると2000ではユーザーが変わるとエラー表示が出てしまって、困っています ユーザー名は私の会社のイントラネットのユーザー番号です シートは関数も入っているので、コピー+値にしデスクトップに外部出力する方法にしています 昨日回答をもらったのですが今一歩のところでエラーになり解決できず、行き詰まっています、 名前を付けて保存の手順が良いと思うのですが?? 下記のマクロは参考に載せましたが、あてになりません どうにか解決したいのでよろしくお願いします このカ所が黄色になっていました ChDir "C:\Documents and Settings\USR81043\デスクトップ" Sub Win2000でシートのコピーをデスクトップに外部出力() ' ' Win2000でシートのコピーをデスクトップに外部出力 Macro ' マクロ記録日 : 2002/6/17 ユーザー名 : USR81043 ' ' Sheets("協力業者評価報告書").Select Sheets("協力業者評価報告書").Copy Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("A2").Select Application.CutCopyMode = False ChDir "C:\Documents and Settings\USR81043\デスクトップ" ActiveWorkbook.SaveAs FileName:= _ "C:\Documents and Settings\USR81043\デスクトップ\協力業者評価報告書1.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False End Sub

  • excelマクロを用いてのファイル作成について

    excelマクロを用い複数個のファイルを作成する作業を行いたいです。 ファイルの作成そのものは実行できているのですが、その内容に関して 変更したい個所があります。 その変更の仕方がわからないので教えて頂きたいです。 Dim i As Integer For i = 1 To 100 Workbooks.Add Range("a1").Value = "[data,text]=xlsread('DS_0frac.xls','ds0_" & i & "')" Range("a2").Value = "u=" Range("a3").Value = "n=data(u,2)" Range("a4").Value = "a=data(u+n+1,2);b=data(u+n+1,3);c=data(u+n+1,4)" Range("a5").Value = "x1=data(u+1,2);y1=data(u+1,3);z1=data(u+1,4)" Range("a6").Value = "tank=b/a" ChDir "C:\Documents and Settings\orner\My Documents\DS\m" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\orner\My Documents\DS\m\flds0_" & i & ".m", _ FileFormat:=xlText, CreateBackup:=False Windows("flds0_" & i & ".m").Close savechanges:=False Next i End Sub 上記のようなマクロを実行したところ得られるファイルの内容は以下のようになりました。 "[data,text]=xlsread('DS_0frac.xls','ds0_1')" u= "n=data(u,2)" "a=data(u+n+1,2);b=data(u+n+1,3);c=data(u+n+1,4)" "x1=data(u+1,2);y1=data(u+1,3);z1=data(u+1,4)" tank=b/a 実際には1,3,4,5行目の " を省いた形での出力を望んでいます。 マクロ本文中で " を取り除いた場合には 複数エラーが発生し実行できません。 解決法について教えて頂きたいです。 宜しくお願いします。

  • ExcelInputBoxの文字をファイル名にする

    こんにちは。 Excel2007を使用しています。 マクロであらかじめ読み込んだファイルに、InputBoxに日付を入力して "20120723_Summary.xlsx"のように名前をつけたいのですが、 InputBoxに入力した文字をActiveWorkbookに渡す部分が書けません Dim NewName As String NewName = InputBox("名前を入力","","_Summary") 'ここで20120723_Summaryと入力する ChDir "C:\Documents and Settings\$user$\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\$user$\デスクトップ\20120723_Summary.xlsx", FileFormat:= _ xlOpenXMLWorkbook, CreateBackup:=False デスクトップに20120723_Summary.xlsxが作成される この部分の書き方がおわかりの方お教えください。 よろしくお願いいたします。