ミスチルの大名曲の数々が配信決定!! 31日間無料!!【PR】

いつもお世話になっております。

標題の件なのですが、Excelで"2011/04/28"と入っている項目を
VBSでCSVに変換して出力すると、"4/28/2011"と出力されます。

objExcel.ActiveWorkbook.SaveAs ファイル名, xlCSV, true

とすると、コントロールパネルの地域と言語のオプションにある短い形式で出力されるという記事を見つけたのですが、"4/28/2011"と出力されてしまいます。

解決方法をご教授願います。よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

言語設定の「短い形式」が"yyyy/mm/dd"になっているにも関わらず、


"mm/dd/yyyy"で保存される現象が問題なのでしょうか。

だとすると、VBSに限った話ではありません。
Excelでも手動保存時は発生せず、VBAの場合に同現象が発生します。

ExcelVBAで確認してください。
Sub test1()
  With Workbooks.Add
    With .Sheets(1)
      .Range("A1").Value = "2011/4/28"
      .Range("B1").Value = "'2011/04/28"
    End With
    .SaveAs Filename:="C:\temp\test1.csv", FileFormat:=xlCSV
    .Close False
  End With
End Sub

Sub test2()
  With Workbooks.Add
    With .Sheets(1)
      .Range("A1").Value = "2011/4/28"
      .Range("B1").Value = "'2011/04/28"
    End With
    .SaveAs Filename:="C:\temp\test2.csv", FileFormat:=xlCSV, Local:=True
    .Close False
  End With
End Sub

SaveAsメソッドのヘルプを参照の事。
>Local   省略可能です。バリアント型 (Variant) の値を使用します。
>Excel の言語設定 (コントロール パネルの設定を含む) に合わせてファイルを保存するには、
>True を指定します。
>Visual Basic for Applications (VBA) の言語設定に合わせてファイルを保存するには、
>False (既定値) を指定します。
>通常この設定は、Workbooks.Open を実行する VBA プロジェクトが Excel バージョン 5
>または 95 の各国語版で作成されたプロジェクトでない限り、英語 (U.S.) になります。

という事で、
>objExcel.ActiveWorkbook.SaveAs ファイル名, xlCSV, true
>とすると、コントロールパネルの地域と言語のオプションにある短い形式で出力される...
VBSでの引数Localの指定の仕方が少し違います。
objExcel.ActiveWorkbook.SaveAs ファイル名, 6, , , , , , , , , , True
    • good
    • 2

ご参考。


http://www.gizcollabo.jp/vbtomo/boards/vbqanda.p …

なお、この処理をすると「システム全体が変わったまんま」になるので、変えた後に元に戻さないと「変えてあるのを想定してないアプリケーションが誤動作」します。

変更前に、直前の設定値を保存しておいて、CSV出力が終わったら、元に戻しましょう。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBAでのCSV出力について

EXCELに入力されたデータをCSV出力するプログラムを作成しました。データには日付が入っており年月日がYYYY/MM/DDの形で入力されています。これをハンド作業で名前をつけて保存でCSVに出力すると年月日はそのままの状態で保存されますが、VBAで保存するとMM/DD/YYYYの形になってしまいます。この状態で保存されると、次にEXCELで読み出すと年月日が文字列扱いになってしまいます。新しいマクロの記録で行っても結果は同じでした。
VBAで保存する際、YYYY/MM/DDで保存する方法はないでしょうか。
また、MM/DD/YYYYで保存されたCSVを日付としてEXCELに認識させる方法はあるでしょうか。
教えてください。よろしくお願いします。

Aベストアンサー

#01です。
私のPC(XP Pro+Office2003)でテストを行ったときは、YMD形式で書き込めましたよ。またMDY形式のデータも正しく読み込めました。
となると、Officeのバージョン、マクロ、PC環境などの何かが異なるのでしょう。でも補足にもそれを判断する材料が全く書かれていないので、何とも回答のしようがありません

私がテストしたデータはA列に日付を入力しただけのものです
 A列
2008/1/1
2008/1/2
2008/1/3
2008/1/4
 以下続く

そのデータに対して
ActiveWorkbook.SaveAs Filename:="C:\Book1.csv" ,FileFormat:=xlCSV ,Local:=True
の1行だけを実行したらどうなりますか?
やはりダメなら先のURLにあるようなPC環境(日付のプロパティ等)も確認してください

読み込みで「文字列になる」も再現しませんのでコメントできません。「データ」→「外部データの取り込み」で読み込む手段もありますから試してみてください。

#01です。
私のPC(XP Pro+Office2003)でテストを行ったときは、YMD形式で書き込めましたよ。またMDY形式のデータも正しく読み込めました。
となると、Officeのバージョン、マクロ、PC環境などの何かが異なるのでしょう。でも補足にもそれを判断する材料が全く書かれていないので、何とも回答のしようがありません

私がテストしたデータはA列に日付を入力しただけのものです
 A列
2008/1/1
2008/1/2
2008/1/3
2008/1/4
 以下続く

そのデータに対して
ActiveWorkbook.SaveAs Filename:="C:\...続きを読む

QExcel VBAでCSVファイルを読込むと何故か文字列が日付に変換さ

Excel VBAでCSVファイルを読込むと何故か文字列が日付に変換されて困っています。
すごく困っております。どなたか教えて下さい。

状況を申し上げますと、以下のようなCSVデータがあります。
"住所1","住所2"
"東京都港区青山","1-24-11"

このとき、別なCSVにデータを移すという単純なものです。

通常は、
WsCount.Cells(1, 1).Value =Cells(2,1).value
WsCount.Cells(1, 2).Value =Cells(2,2).value
で、セルにある文字をそのまま、新しいシートのセルに移すだけのことですが、
何故か、"1-24-11"が日付に変換され、"2011/1/24"に変わってしまいます。
デバックなどで、途中経過を見ても既に日付にかわっており、
どうにも対応ができません。

以前は""で囲んである文字は、文字のまま認識していたと思いますが、
何故か今回はうまくいきません。

ちなみに、Excel2007です。

どなたか、教えて下さい。

宜しくお願いします。

Aベストアンサー

ヒントです

Office2007で「データ」→「外部データの取り込み」→「テキストデータ」を選択すると、フィールド毎の取り込みの型を指定できます(文字列型にすれば日付型には変換されません)

この操作を「マクロ記録」してみてください。こんなマクロが生成されます。

Sub Macro1()
'
' Macro1 Macro
'
With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\Temp\sample.csv", _
Destination:=Range("$A$1"))
.Name = "sample"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

あとはいらない行を削除してできあがり。削除しなくても一応は動くはずですけど。

ヒントです

Office2007で「データ」→「外部データの取り込み」→「テキストデータ」を選択すると、フィールド毎の取り込みの型を指定できます(文字列型にすれば日付型には変換されません)

この操作を「マクロ記録」してみてください。こんなマクロが生成されます。

Sub Macro1()
'
' Macro1 Macro
'
With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\Temp\sample.csv", _
Destination:=Range("$A$1"))
.Name = "sample"
.FieldNames = True
.RowNumbers = False
...続きを読む

Qcsvファイルでの日付設定「yyyy/mm/dd」が保存すると元に戻ってしまいます

Excelでcsvファイルの「2004/2/9」を「2004/02/09」としたいのですが、
「セルの書式設定」の「ユーザ定義」で「yyyy/mm/dd」で変換して保存し、またcsvファイルを開くと「2004/2/9」に戻ってしまいます。
どうしてもわかりません。
OSはWIN MeでExcel2000を使用しています。
すいませんが誰か教えてください!

Aベストアンサー

Excelはcsvファイルを開くときに独自の解釈を加え、数値のように見
えるデータや日付や時刻のように見えるデータは勝手に変換して標準
書式を割り当てる困ったチャンなソフトなので、csvの中身の確認に
は使えません。

csvの中身を見たかったらメモ帳などを使いましょう。

QExcel(csv) で入力した文字が日付になってしまいます。

Excel(csv)で住所を管理しています。
一つのセルに1-1-1のように入力をし、
次回そのファイルを開くと2001/1/1と表示され、
セルの書式設定の表示形式をみると日付になっています。

文字列にしてみても、36892というような
数字にしかならず、元の打ったデータがなんだったか
わからなくなってしまいます。

なんとかこの現象を回避する方法はありますでしょうか?
よろしくお願いします。

Aベストアンサー

ファイル→開くからではなくて、
データ→外部データの取り込み→テキストファイルのインポート
でテキストファイルを開いてやると、ウィザードの3番目で列ごとに書式設定ができますので、そこで番地の入っている列のデータ形式を文字列にすればOKです。

QCSVファイルをExcelで開いた時、ハイフンで結ばれた数字が日付に変換されてしまう。

お世話になります。
CSVファイルをExcelで開いた時に発生する問題についての質問です。
元のCSVファイルのデータは、5項目(5列分)あります。
その内、4項目については、氏名などの文字列なので、Excelで開いても
別段問題なく表示されるのですが、問題とする1列に入っている
データが、ハイフンで結ばれた数字となっています。
実際の値は 1-2 や 2-3 や 6-4 などの値で、実は小学校の学年と
クラスを表したものです。
よって、ハイフンの左側は学年である 1~6 が入り、右側にはクラスの
数字が入っています(1組から6組の絶対値 1~6)。
これらを Excel で開くと、この列がハイフンで結ばれているために
「日付と認識」されてしまい、1-2 の場合は 1月2日 という具合に
自動的に変換されて表示してしまいます。
これを自動変換させない方法はありますでしょうか?
該当データのトップに予め「'(アポストロフィー)」を付けて、文字列
として判断させようと試みたのですが、この方法だと、確かに日付変換
はされませんでしたが、アポストロフィーもそのまま表示されてしまい格好
が悪いです。「'1-2」といった具合です。
解決方法を教えてくださる方、宜しくお願い致します。

お世話になります。
CSVファイルをExcelで開いた時に発生する問題についての質問です。
元のCSVファイルのデータは、5項目(5列分)あります。
その内、4項目については、氏名などの文字列なので、Excelで開いても
別段問題なく表示されるのですが、問題とする1列に入っている
データが、ハイフンで結ばれた数字となっています。
実際の値は 1-2 や 2-3 や 6-4 などの値で、実は小学校の学年と
クラスを表したものです。
よって、ハイフンの左側は学年である 1~6 が入り、右側にはクラスの
数字が入ってい...続きを読む

Aベストアンサー

CSVファイルを単純に開くと、エクセルが勝手にデータ形式を判断してしまい、困ることがあります。2つ方法を書きます

1)CSVファイルの拡張子をTXTに変更してエクセルの「ファイル」→「開く」で開く

2)「データ」→「外部データの取り込み」→「データの取り込み」からCSVファイルを開く

どちらの方法もデータ取り込みのウィザードが立ち上がります。
この中で各列のデータ形式を指定する画面がありますから、クラスの列は「文字列」を指定してください

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Q【VBA】ExcelマクロでCSVファイルに保存したデータが""で囲まれてしまう

添付図のような、Excel2003で作成した表内のデータを
CSVで保存するマクロを作成したのですが、
図のように、CSVファイルに「""」で値が囲まれた状態で、
保存されてしまいます。

下記にマクロを記載しますので、
どうすれば文字列が「""」で囲まれずに、
カンマ区切りだけのデータで出力されるのか、
ご存知の方おられましたら、ご教示お願い致します。

Sub csv保存()
Dim フォルダ名 As String
Dim パス名 As String
Dim ファイル名 As String
Dim データ As Variant
Dim 行数 As Long, 列数 As Integer
Dim i As Integer, j As Long, k As Long

ファイル名 = "test.csv"
フォルダ名 = "csv"
パス名 = ActiveWorkbook.Path & "\" & _
フォルダ名

'csvフォルダが存在しなければ作成する
If Dir(パス名, vbDirectory) = "" Then
MkDir パス名
End If
ChDir パス名

Open ファイル名 For Output As #1

For i = 1 To Worksheets.Count
Worksheets(i).Activate
Worksheets(i).Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
行数 = Selection.Rows.Count
列数 = Selection.Columns.Count

For j = 1 To 行数
For k = 1 To 列数 - 1
データ = Selection.Cells(j, k) _
.Value
Write #1, データ;
Next k
Write #1, Selection.Cells(j, 列数) _
.Value
Next j
Next i
Close #1
End Sub

添付図のような、Excel2003で作成した表内のデータを
CSVで保存するマクロを作成したのですが、
図のように、CSVファイルに「""」で値が囲まれた状態で、
保存されてしまいます。

下記にマクロを記載しますので、
どうすれば文字列が「""」で囲まれずに、
カンマ区切りだけのデータで出力されるのか、
ご存知の方おられましたら、ご教示お願い致します。

Sub csv保存()
Dim フォルダ名 As String
Dim パス名 As String
Dim ファイル名 As String
Dim データ As Variant
Dim ...続きを読む

Aベストアンサー

Write # は文字列を""で囲んで出力する仕様になっています。
そのまま出力したければ、Print #を利用すればよろしいかと。
ただし、Printの場合は区切り文字(カンマ)を自動で出力してくれませんので、併せて出力する必要があります。

For j = 1 To 行数
  For k = 1 To 列数 - 1
    データ = Selection.Cells(j, k) .Value
    Print #1, データ; ",";
  Next k
  Print #1, Selection.Cells(j, 列数).Value
Next j

なお、いらぬおせっかいですが、ドライブが複数ある環境下だと、
 ChDir パス名
だけでは必ずしもcvsフォルダ内に、ファイルが作成されるとは限りません。
 Open パス名 & "\" & ファイル名 For Output As #1
のように、フルパスで指定しておいた方が確実かと…

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセルで日付が逆に登録されています

エクセルで日付が逆に登録されています
例えば今日なら、28/11/2012となっています
これを2012/11/28と変換させたいのですが、どうすれば良いでしょうか?
教えてください。

言語の設定は「日本語」になっていました。

Aベストアンサー

こんばんは!
質問では全角文字になっていますが、
実際のデータは半角でしょうか?

もしそうであれば範囲指定 → データ → 区切り位置 → 何もせず「次へ」を2回
「日付」を選択 → 下向▼をクリック → 「DMY」を選択しOK
これで2012/11/28
と表示されると思います。

※ 実データが全角の場合は、仮にA1セルにデータが入っているとして
B1セルに
=ASC(A1)
とし、B1セル上で右クリック → コピー → A1セルを選択 → 右クリック → 「形式を選択して貼り付け」
→ 「値」を選択しOK
そして前述の「区切り位置」の操作を行います。m(_ _)m

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング