Excel VBA質問箱 IV

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

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


4159 / 13644 ツリー ←次へ | 前へ→

【58106】ExcelからシートのCSVファイルの出力 夜勤担当 08/10/2(木) 22:11 質問[未読]
【58107】Re:ExcelからシートのCSVファイルの出力 kanabun 08/10/2(木) 22:26 発言[未読]
【58108】Re:ExcelからシートのCSVファイルの出力 夜勤担当 08/10/2(木) 22:50 質問[未読]
【58109】Re:ExcelからシートのCSVファイルの出力 kanabun 08/10/2(木) 23:31 発言[未読]
【58112】Re:ExcelからシートのCSVファイルの出力 kanabun 08/10/3(金) 0:03 発言[未読]
【58119】Re:ExcelからシートのCSVファイルの出力 夜勤担当 08/10/3(金) 22:29 質問[未読]
【58120】Re:ExcelからシートのCSVファイルの出力 kanabun 08/10/3(金) 22:37 発言[未読]
【58128】Re:ExcelからシートのCSVファイルの出力 夜勤担当 08/10/4(土) 20:59 お礼[未読]
【58110】Re:ExcelからシートのCSVファイルの出力 kanabun 08/10/2(木) 23:50 発言[未読]
【58111】Re:ExcelからシートのCSVファイルの出力 kanabun 08/10/2(木) 23:53 発言[未読]

【58106】ExcelからシートのCSVファイルの出力
質問  夜勤担当  - 08/10/2(木) 22:11 -

引用なし
パスワード
   こんばんは。
 Excelファイルに二つのシートがあって、VBAでその中の一つシートだけをCSVファイルとして出力する方法はわからなくて、困っています。
ぜひご伝授ください。
出力したいシート名:申告結果
出力ファイル名:セルA1&セルB1==>科目20081001
出力範囲:A2:D15

   A     B      C     D
1  科目    20081001
2  コード   名称     単位   数量   
3  A-01    あいう    キロ    10  


15  A-15    さしす    mg    10

【58107】Re:ExcelからシートのCSVファイルの出力
発言  kanabun  - 08/10/2(木) 22:26 -

引用なし
パスワード
   ▼夜勤担当 さん:

> Excelファイルに二つのシートがあって、VBAでその中の一つシートだけをCSVファイルとして出力する方法はわからなくて、困っています。

こんばんは。
いろいろ方法はありますが、素朴で単純なのは、
1. 対象ファイルを新規Bookにコピーする。

2. [A1:B1]の値をメモしておいて、1行目を削除。
> 出力ファイル名:セルA1&セルB1==>科目20081001
> 出力範囲:A2:D15

3. ファイル[名前を付けて保存]で ファイルの種類を CSV形式にして、
 さきほどメモしておいた[A1:B1]をファイル名にして、保存する。
といったところでしょうか?

出力範囲を クリップボードにコピーして、DataObject経由で TAB区切りを
カンマ区切りに直して出力する方法もありますが。

【58108】Re:ExcelからシートのCSVファイルの出力
質問  夜勤担当  - 08/10/2(木) 22:50 -

引用なし
パスワード
   kanabunさん
 返事ありがとうございます。
 毎日、大量の繰り返し作業で、改善したいと思って、いろいろと試しましたが、
うまくいかなくて、・・・
 一応、自動記録方法でVBコードを作りましたが、1.と2.の問題は残っています
ので、前に進めないので、ご指導ください。
1.セルA1&セルB2をファイル名にすることはできていない
2.作成範囲B2:D15の指定はできていない

Sub Macro1()
' マクロ記録日 : 2008/10/2 ユーザー名 : fumi_T
  Sheets("申告結果").Select
  ChDir "C:\Documents and Settings\fumi_T\デスクトップ"
  ActiveWorkbook.SaveAs Filename:= _
    "C:\Documents and Settings\fumi_T\デスクトップ\科目20081002.csv", FileFormat:= _
    xlCSV, CreateBackup:=False
  Application.CommandBars("Stop Recording").Visible = False
  Application.Goto Reference:="Macro1"
End Sub

【58109】Re:ExcelからシートのCSVファイルの出力
発言  kanabun  - 08/10/2(木) 23:31 -

引用なし
パスワード
   ▼夜勤担当 さん:

> 一応、自動記録方法でVBコードを作りましたが、1.と2.の問題は残っています
>ので、前に進めないので、ご指導ください。

>1.セルA1&セルB2をファイル名にすることはできていない
を考慮すると、こんな風でしょうか?

Sub 範囲をCSV出力()
 '対象シートをアクティブにして実行
 Dim myPath As String
 Dim myCSV As String
 
 myPath = "C:\Documents and Settings\fumi_T\デスクトップ"
 If Right$(myPath, 1) <> "\" Then myPath = myPath & "\"
 
 ActiveSheet.Copy
 With ActiveWorkbook
   With .Sheets(1)
     myCSV = .Range("A1").Value & .Range("B1").Value & ".csv"
     .Rows(1).Delete
   End With
   .SaveAs myPath & myCSV, xlCSV
   .Save
   .Close False
 End With
 MsgBox "出力しました", , myCSV
 
End Sub


>2.作成範囲B2:D15の指定
のほうは、対応してません。
元のシートは 15行目以下にもデータがあるのですか?

【58110】Re:ExcelからシートのCSVファイルの出力
発言  kanabun  - 08/10/2(木) 23:50 -

引用なし
パスワード
   ▼夜勤担当 さん:

ついでに、クリップボード経由のほうもサンプルだけ。。。


Sub 範囲をCSV出力2()
 '対象シートをアクティブにして実行
 Dim myPath As String
 Dim myCSV As String
 Dim io As Integer
 Const CLSID_DataObject = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
 
 myPath = "C:\Documents and Settings\fumi_T\デスクトップ"
 If Right$(myPath, 1) <> "\" Then myPath = myPath & "\"
 
 io = FreeFile()
 With ActiveSheet
   myCSV = myPath & .[A1].Value & .[B1].Value & ".Csv"
   Open myCSV For Output As io
   .[A2:D15].Copy  '---> 2.範囲B2:D15 をクリップボードに送る
 End With
 With GetObject("new:" & CLSID_DataObject)
   .GetFromClipboard    'Clipboard文字列を DataObjectで取得
   Print #io, Replace(.GetText(1), vbTab, ","); 'TABをカンマに置換出力
 End With
 Close io
 Application.CutCopyMode = False
 MsgBox "出力しました", , myCSV
End Sub

【58111】Re:ExcelからシートのCSVファイルの出力
発言  kanabun  - 08/10/2(木) 23:53 -

引用なし
パスワード
   わぁ、出力範囲は [B2:D15] だけでしたか?

>Sub 範囲をCSV出力2()
> '対象シートをアクティブにして実行
> Dim myPath As String
> Dim myCSV As String
> Dim io As Integer
> Const CLSID_DataObject = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
> 
> myPath = "C:\Documents and Settings\fumi_T\デスクトップ"
> If Right$(myPath, 1) <> "\" Then myPath = myPath & "\"
> 
> io = FreeFile()
> With ActiveSheet
>   myCSV = myPath & .[A1].Value & .[B1].Value & ".Csv"
>   Open myCSV For Output As io
    .[B2:D15].Copy  '---> 2.範囲B2:D15 をクリップボードに送る
> End With
> With GetObject("new:" & CLSID_DataObject)
>   .GetFromClipboard    'Clipboard文字列を DataObjectで取得
>   Print #io, Replace(.GetText(1), vbTab, ","); 'TABをカンマに置換出力
> End With
> Close io
> Application.CutCopyMode = False
> MsgBox "出力しました", , myCSV
>End Sub

【58112】Re:ExcelからシートのCSVファイルの出力
発言  kanabun  - 08/10/3(金) 0:03 -

引用なし
パスワード
   最初のほうも、出力範囲を[B2:D15]にして。。。

Sub 範囲をCSV出力1()
 '対象シートをアクティブにして実行
 Dim myPath As String
 Dim myCSV As String
 Dim v
 
 myPath = "C:\Documents and Settings\fumi_T\デスクトップ"
 If Right$(myPath, 1) <> "\" Then myPath = myPath & "\"
 
 ActiveSheet.Copy
 With ActiveWorkbook
   With .Sheets(1)
     myCSV = .Range("A1").Value & .Range("B1").Value & ".csv"
     v = .Range("B2:D15").Value
     .UsedRange.ClearContents
     .Range("A1").Resize(14, 3).Value = v
   End With
   .SaveAs myPath & myCSV, xlCSV
   .Save
   .Close False
 End With
 MsgBox "出力しました", , myCSV
End Sub

【58119】Re:ExcelからシートのCSVファイルの出力
質問  夜勤担当  - 08/10/3(金) 22:29 -

引用なし
パスワード
   こんばんは! 
 以下のコードで試しましたが、「インデックスが有効範囲にありません」。
やはりどこかに間違いあるのでしょうか?

変更点
With .Sheets(検体)
v = .Range("A2:D15").Value
  
Sub 範囲をCSV出力1()
 '対象シートをアクティブにして実行
 Dim myPath As String
 Dim myCSV As String
 Dim v
  myPath = "C:\Documents and Settings\fumi_T\デスクトップ"
 If Right$(myPath, 1) <> "\" Then myPath = myPath & "\"
  ActiveSheet.Copy
 With ActiveWorkbook
   With .Sheets(検体) ------>対象シート名は検体のため、検体を入れた
     myCSV = .Range("A1").Value & .Range("B1").Value & ".csv"
     v = .Range("A2:D15").Value  ------>吐き出し範囲はA2:D15
     .UsedRange.ClearContents
     .Range("A1").Resize(14, 3).Value = v
   End With
   .SaveAs myPath & myCSV, xlCSV
   .Save
   .Close False
 End With
 MsgBox "出力しました", , myCSV
End Sub

    A     B    C    D
1   科目    20081002        
2   コード    商品名    単位    数量
3     1    1    1    1
4     2    2    2    2
      ・
      ・
      ・
15     13    13    13    13

【58120】Re:ExcelからシートのCSVファイルの出力
発言  kanabun  - 08/10/3(金) 22:37 -

引用なし
パスワード
   ▼夜勤担当 さん:

>こんばんは! 
> 以下のコードで試しましたが、「インデックスが有効範囲にありません」。
>やはりどこかに間違いあるのでしょうか?
>
>変更点
>With .Sheets(検体)
> v = .Range("A2:D15").Value

こんばんは、です(^^

シート名が "検体" なら、
>With .Sheets(検体)
ではなく、

 With .Sheets("検体")

としてください。(リテラル文字列は ""で括る)

【58128】Re:ExcelからシートのCSVファイルの出力
お礼  夜勤担当  - 08/10/4(土) 20:59 -

引用なし
パスワード
   通りました!
今夜、使ってみます。
本当にありがとうございました。
感謝!!

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