2017-03-10 11 views
-2

次のコード私がしようとしているのは、あるブックの範囲からデータを取り出し、タブ名に基づいて特定のフォルダ内にある別のブックにドロップすることです。タブ名に基づいてファイルを開きますか?

私の机の上のフォルダには、「マスター、プロセッサーアレックス、プロセッサースー、プロセッサービル」の4つのファイルがあります。 Master.xlsmには「Skip Me、Alex、Sue、Bill」の4つのタブがあります。私は以下のコードの範囲がAlexらの対応するタブからブックの最後のページに転送される必要があります。

残念ながら私は何らかの理由で私のラップトップにF8を使用してステップスルーできないので、何らかのプロジェクトサイドバーが開きます。それは私にエラーを与えて、私はエラーを理解していないので、私はVBAに新しいです。しかし、このプロジェクトは私にとって非常に重要です。

私はループを使って作業していたコードを取り上げ、ループでこれを再構築しようとしました。私はここにどこにもいなかったところでエラーを起こしている。

+2

あなたは「シート」コレクションを通してループし、非常に単純なサブルーチンを開始します。 Sheet.Name(つまり、activeworkbook.Sheets(i).name)が提供されます。次に、その名前をファイル名文字列の一部にしてブックを開きます。それを試して、あなたの質問をコードで更新したいなら、私たちはいくつかのポインタを与えることができます。 –

+0

他者のためのコードを書くのは簡単なことではありません.SOは他人のためのソリューションを開発するサイトではありません。特定の問題を抱えているユーザー(コード内のエラー)を助けるためのものです。私はあなたがvbaコードを含んでいた別の質問を投稿したことを知っているので、簡単なサブルーチンはあなたが始める場所です。すべてのシート名を与えるループを作成し、パスとファイル名を作成したコード行(MSgBox "C:\ ... \ xxx \"&& ".xlsx")を追加します。質問と誰もがマイナーなクリーンアップを手伝ってうれしいでしょう。:) –

答えて

1

あなた自身のコードを用意する必要があります。壊れている場合は修正するのに役立ちますが、コードを書くのはここにはありません。

ブック内のシートを反復処理するための簡単なコードは次のとおりです。

dim wkb as excel.workbook 
dim wks as excel.worksheet 
set wkb = thisworkbook ' or activework or whatever 
for each wks in wkb.sheets ' iterate through the sheets 
    msgbox "Now on sheet " & wks.name 
next 

WKBと週が定義されていると仮定すると、シート名からワークブックパスを生成するための簡単なコード、新しいワークブックは同じフォルダ内にありますあなたのコードでブック、およびWKS用シート名として、オープンするブックの名前です:あなたが知っていると仮定すると、

dim mypath as string, newname as string, extn as string 
extn = ".xlsx" ' or ".xls" or whatever 
mypath = wkb.path 
if not right(mypath,1) = "\" then mypath = mypath & "\" 
newname = mypath & wks.name & extn 

簡単なコードブックを開くために、名前は次のとおりです。

dim wkbdata as excel.workbook 
set wkbdata = workbooks.open(newname) 
0

あなたのやりたいことは完全にはわかりません。しかし、ここにあなたのためにファイルを開くコードがあります。これを使用してファイル名を作成し、必要に応じて使用することができます。

For i = 1 to ActiveWorkbook.Worksheets.Count 
    Workbooks.Open "C:\FilePath\" & Worksheets(i).Name & ".xlsx" 

Next i 

これが役立ちます。コードの一部を投稿したり、詳細を説明すると、ここの人々があなたをより良く助けることができます。

+0

良いアイデア。それは助けてください –

+0

システム私を聞かせていないが、私は編集する方法を見つけた。 –

+0

Scott、してください! 2つの異なる場所にコメントを追加してジャンプしているので、あなたが話していることに従うことが難しくなります。私はあなたを助けてくれるでしょうが、あなたも助けてくれる必要があります。次のように答えてください:(1)「システムは私をさせません」とは何ですか?あなたは何をしようとしているのですか? (2)何が「セルの問題を発見しましたか?私はそれをしませんでしたか?」それは私が指摘したコード内の場所を見つけたことを意味しますか?その場合は、コードを更新しないでください。 (3)質問にあなたが今持っているテキストで新しい質問を開こうとしましたか?この投稿はかなり死んでいる。今すぐあなたのコードを整理します。 –

0

私は上記のコードに本当に近いものがあります。私はワークブックでテストした基本ループを使って最初から始め、その後私の古いバージョンの要素を落とし始めました。それが壊れた。

+0

上記のコードを実行すると、各シートのメッセージボックスが表示されます。もしそうなら、次のステップはパスを構築してファイルを開くことです。私は名前で文字列を作成し、その文字列を使ってExcelを開く方が好きです。だから、Sepehr Moravejが投稿したもの、またはWinterknellが投稿したものを適用してください。あなたのループの中に入れてください。また、予約語と混同される可能性のある単語(つまり、現在の単語)は使用しないでください。後で頭を傷つけることはありません。 –

+0

Workbooks.Open( "C:\ Users \ Scott \ Desktop \ VBA Proj \ Processor"&ws.Name& ".xlsx")複数のスタブでエラー1004が発生します。 –

+0

あなたのコードを表示する確率はゼロですあなたは実際に何を実行しようとしているのか分かりません。あなたの 'For Each Cel'は 'Next cell'と一致しません。前に述べたように、完全なパスと名前の文字列を作成すると、ワークブックを開く前に簡単に表示できます。 「Debug.Print 」または「MsgBox 」を使用してください。エラーが発生した場所で以前のコメントに「開く」を投稿しましたか?もしそうでなければ、誤解を招く人々です。 –

0

"私は一歩踏みとどめてはいけない"とは、ほとんど意味がなく、F8のようなVBAホットキーのことです。それは、いくつかの他のウィンドウ10の機能を開きます。

私はそれを必要とするかもしれない他の人のために以下の投稿を投稿しています。それは、MrExcelフォーラムのTonyyyに感謝します。私はそれを次のセクションで作業するために行ごとに無効にしたので、どこかに間違った ""があるかもしれません。私はそれらをすべて持っていると思う。

Sub UpdatebyLoop_2() 
Application.ScreenUpdating = False 
Dim SourceWB As Workbook, destinationWB As Workbook 
Dim ws As Worksheet 


       'Data Transfer Section 
Set SourceWB = ThisWorkbook 
On Error GoTo errHandler 
For Each ws In SourceWB.Worksheets 
If ws.Name <> "Skip me" And ws.Name <> "Skip me also" Then 
    Set destinationWB = Workbooks.Open(SourceWB.Path & "\" & ws.Name & ".xlsx") 
    ws.Range("B6:AK30").Copy Destination:=destinationWB.Sheets (Sheets.Count). _ 
     Cells(destinationWB.Sheets(Sheets.Count).Cells(Rows.Count, 2).End(xlUp).Row + 1, 2) 
      destinationWB.Close savechanges:=True 

    End If 
'Repeat on next worksheet 
Next ws 
With Application 
    .CutCopyMode = False 
    .ScreenUpdating = True 
End With 
Exit Sub 

errHandler: 
    'MsgBox "Error " & Err.Number & ": " & Err.Description & vbCrLf & vbCrLf & _ 
    "Sorry, it seems the worksheet name - " & ws.Name & " - does not match a workbook name." 
    Resume Next 

End Subの

関連する問題