Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7527 / 13645 ツリー ←次へ | 前へ→

【38546】データの一部をbook名にするには にしもり 06/6/6(火) 12:06 質問[未読]
【38558】Re:データの一部をbook名にするには にしもり 06/6/6(火) 13:38 質問[未読]
【38561】Re:データの一部をbook名にするには Jaka 06/6/6(火) 13:57 発言[未読]
【38562】Re:データの一部をbook名にするには Jaka 06/6/6(火) 14:00 発言[未読]
【38567】Re:データの一部をbook名にするには にしもり 06/6/6(火) 14:23 質問[未読]
【38568】Re:データの一部をbook名にするには Jaka 06/6/6(火) 14:31 発言[未読]
【38569】Re:データの一部をbook名にするには にしもり 06/6/6(火) 14:42 質問[未読]
【38571】Re:データの一部をbook名にするには Kein 06/6/6(火) 14:52 回答[未読]
【38572】Re:データの一部をbook名にするには Jaka 06/6/6(火) 15:20 発言[未読]
【38576】Re:データの一部をbook名にするには にしもり 06/6/6(火) 15:56 質問[未読]
【38577】Re:データの一部をbook名にするには Kein 06/6/6(火) 16:04 発言[未読]
【38578】Re:データの一部をbook名にするには にしもり 06/6/6(火) 16:10 お礼[未読]

【38546】データの一部をbook名にするには
質問  にしもり  - 06/6/6(火) 12:06 -

引用なし
パスワード
   こんにちは。
csvファイルを、開いているEXCELシートに読み込んでいます。そして1、19、20、21列をのこしています。いま、CSVの1行目にはタイトルにあたるものが入っています。のこした19列1行目のタイトルのみ、「書名」という文字に変更したいのですがどう書けばよいでしょうか?

また、1列にたとえば100028000000と入っているのですが1.00E+11となってしまいます。これを100028000000と表示さすにはどうすればいいでしょうか?

また、読み込み先のシートtestを新たなEXCEL bookにコピーし、20列にたとえば06/05/2006 10:12:12とあったら0605というシート名でかつ0605.xlsという名で元のCSVがあった場所に保存し、その際に20列を削除したいのです。
そのような場合どういうロジックを追加すればよろしいでしょうか?
どなたかご教示ください。

Option Base 1

Sub ReadtTxt()

  Dim myTxtFile As String
  Dim myBuf(21) As String
  Dim i As Integer
  Dim j As Integer
  
  Application.ScreenUpdating = False
  myTxtFile = ActiveWorkbook.Path & "\mail.csv"
  Worksheets("test").Activate
  Open myTxtFile For Input As #1
  
  Do Until EOF(1)
    Input #1, myBuf(1), myBuf(2), myBuf(3), myBuf(4), myBuf(5), myBuf(6), myBuf(7), myBuf(8), myBuf(9), myBuf(10), myBuf(11), myBuf(12), myBuf(13), myBuf(14), myBuf(15), myBuf(16), myBuf(17), myBuf(18), myBuf(19), myBuf(20), myBuf(21)
    i = i + 1
    For j = 1 To 21
    Cells(i, j) = myBuf(j)
    Next j
  Loop
  
  Close #1
  
  Columns("B:R").Select
  Selection.Delete Shift:=xlToLeft
  
  Columns("B:B").Select
  With Selection
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = True
    .ReadingOrder = xlContext
    .MergeCells = False
  End With


End Sub

【38558】Re:データの一部をbook名にするには
質問  にしもり  - 06/6/6(火) 13:38 -

引用なし
パスワード
   ▼にしもり さん:
自己レスです。
1、2番目の質問は自力でできました。

  '数値表示
  Columns("A:A").Select
  Selection.NumberFormatLocal = "0_);[赤](0)"
  Selection.ColumnWidth = 15
  
  '書名に変更
   Range("B1").Select
  ActiveCell.FormulaR1C1 = "書名"

しかし「06/05/2006 10:12:12とあったら0605というシート名でかつ0605.xlsという名にする」ことができません。どなたかご教示ください。

【38561】Re:データの一部をbook名にするには
発言  Jaka  - 06/6/6(火) 13:57 -

引用なし
パスワード
   ▼にしもり さん:
>しかし「06/05/2006 10:12:12とあったら0605というシート名でかつ0605.xlsという名にする」ことができません。どなたかご教示ください。

0605と言った文字が取り出せれば良いのでしょうか?
st = "06/05/2006 10:12:12"
MsgBox Format(CDate(Left(st, InStr(1, st, " ") - 1)), "mmdd")

【38562】Re:データの一部をbook名にするには
発言  Jaka  - 06/6/6(火) 14:00 -

引用なし
パスワード
   これでよかった。
st = "06/05/2006 10:12:12"
MsgBox Format(CDate(st), "mmdd")

【38567】Re:データの一部をbook名にするには
質問  にしもり  - 06/6/6(火) 14:23 -

引用なし
パスワード
   ▼Jaka さん:
>これでよかった。
>st = "06/05/2006 10:12:12"
>MsgBox Format(CDate(st), "mmdd")
ありがとうございます。
アドバイスにしたがってみましたがエラーになります。どう修正すればよろしいですか? C2には06/05/2006 10:12:12が入っております。コピー後のシート名を0605にしたつもりです。

  Range("C2").Select
  st = ActiveCell.FormulaR1C1
  k = Format(CDate(Left(st, InStr(1, st, " ") - 1)), "mmdd")
  Sheets("test").Select
  Sheets("test").Copy
  ActiveSheet.Name = k

【38568】Re:データの一部をbook名にするには
発言  Jaka  - 06/6/6(火) 14:31 -

引用なし
パスワード
   ▼にしもり さん:
>C2には06/05/2006 10:12:12が入っております。
これが文字じゃなかったら、

>  k = Format(ActiveCell.Value, "mmdd")
で、いいですよ?

【38569】Re:データの一部をbook名にするには
質問  にしもり  - 06/6/6(火) 14:42 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございます。
  Range("C2").Select
  st = ActiveCell.FormulaR1C1
  k = Format(ActiveCell.Value, "mmdd")
  Sheets("test").Select
  Sheets("test").Copy
  ActiveSheet.Name = k
ここまでできました。

あと0605という名で保存したいのですが、うまくいきません。
ていうか、下記のkのところをどう書けばいいかわかりません。
マクロの記録だけで生きてきた人間なんで基本がなくてすみません。

  ChDir "C:\新しいフォルダ"
  ActiveWorkbook.SaveAs Filename:="JC:\新しいフォルダ\k.xls",
  FileFormat:=xlNormal _
   , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False

【38571】Re:データの一部をbook名にするには
回答  Kein  - 06/6/6(火) 14:52 -

引用なし
パスワード
   Dim Dv As String

With Sheets("test")
  Dv = Format(DateValue(.Range("C2").Value), "mmdd")
  .Copy
End With
ActiveSheet.Name = Dv
ActiveWorkbook.Close True, "C:\新しいフォルダ\" & Dv & ".xls"

てな感じかな。

【38572】Re:データの一部をbook名にするには
発言  Jaka  - 06/6/6(火) 15:20 -

引用なし
パスワード
   えーと。
フィル保存等の基本マクロは、マクロ記録で出来ますよね。
で、例えば下記Macro1のコードの
"C:\Documents and Settings・・・\zzzzzz.xls"
は、単に文字列です。
要するに保存したい場所、ファイル名は自分で文字を組み合わせて、
こんな感じに、フルパスパイル名にすれば良いんです。

保存場所 = "C:\xxxxxxxxx\"
ファイル名 = "mmmmmm.xls"
ActiveWorkbook.SaveAs FileName:=保存場所 & ファイル名

Sub Macro1()
  ActiveWorkbook.SaveAs FileName:= _
    "C:\Documents and Settings\ママレモン\デスクトップ\zzzzzz.xls", FileFormat:=xlNormal _
    , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False
End Sub

【38576】Re:データの一部をbook名にするには
質問  にしもり  - 06/6/6(火) 15:56 -

引用なし
パスワード
   ▼Jaka さん、Keinさん:
ありがとうございます。どうにか希望どおりにできました。下記最終結果をご参照ください。

>要するに保存したい場所、ファイル名は自分で文字を組み合わせて、
保存時のパスは自分で組み合わせるのですね。
でもひとつ教えてください。
Keinさんの ActiveWorkbook.Close True, "C:新しいフォルダ\" & Dv & ".xls"と
Jakaさんの ActiveWorkbook.SaveAs FileName:= "C:\・・・・は同じことなんでしょうか?

<最終結果>
Option Base 1

Sub ReadtTxt()

  Dim myTxtFile As String
  Dim myBuf(21) As String
  Dim i As Integer
  Dim j As Integer
  Dim k As String
  Dim Dv As String
  
  Application.ScreenUpdating = False
  myTxtFile = ActiveWorkbook.Path & "\mail.csv"
  Worksheets("test").Activate
  Open myTxtFile For Input As #1
  
  Do Until EOF(1)
    Input #1, myBuf(1), myBuf(2), myBuf(3), myBuf(4), myBuf(5), myBuf(6), myBuf(7), myBuf(8), myBuf(9), myBuf(10), myBuf(11), myBuf(12), myBuf(13), myBuf(14), myBuf(15), myBuf(16), myBuf(17), myBuf(18), myBuf(19), myBuf(20), myBuf(21)
    i = i + 1
    For j = 1 To 21
    Cells(i, j) = myBuf(j)
    Next j
  Loop
  
  Close #1
  
  Columns("B:R").Select
  Selection.Delete Shift:=xlToLeft
  
  Columns("B:B").Select
  With Selection
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = True
    .ReadingOrder = xlContext
    .MergeCells = False
  End With
  
  Columns("A:A").Select
  Selection.NumberFormatLocal = "0_);[赤](0)"
  Selection.ColumnWidth = 15
  
  Columns("B:B").Select
  Selection.ColumnWidth = 105
  Range("B1").Select
  ActiveCell.FormulaR1C1 = "書名"
  
  Columns("D:D").Select
  Selection.ColumnWidth = 15
  

  With Sheets("test")
    Dv = Format(DateValue(.Range("C2").Value), "mmdd")
    .Copy
  End With

  
  Columns("C:C").Select
  Selection.Delete Shift:=xlToLeft
  Range("A1").Select

  ActiveSheet.Name = Dv
  ActiveWorkbook.Close True, "C:新しいフォルダ\" & Dv & ".xls"
  
  Range("A1").Select
  Range(Selection, Selection.End(xlDown)).Select
  Range(Selection, Selection.End(xlToRight)).Select
  Selection.ClearContents
  Range("A1").Select
  ActiveWorkbook.Close True
  
End Sub

【38577】Re:データの一部をbook名にするには
発言  Kein  - 06/6/6(火) 16:04 -

引用なし
パスワード
   ブックを保存し、かつ閉じる、というのが私のコードで、
Jacaさんのは保存するところまでのコードです。
それは目的によって、そちらで使い分ければいいでしょう。

【38578】Re:データの一部をbook名にするには
お礼  にしもり  - 06/6/6(火) 16:10 -

引用なし
パスワード
   ▼Kein さん Jakaさん:

マクロの記録にたよってきたツケが来ております。
もっとがんばります。
まことにありがとうございました。

7527 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free