1

私は VBA を初めて使用しますが、他の言語でコーディングを行ったことがあるため、いくつかの一般的な概念を理解しています。ワークブックの一部のデータを、隣接していない新しいブックの単一の列に連続していない単一の列にコピーする Excel のマクロを作成する必要があります。難しいのは、コピーするデータをユーザー プロンプトで選択する必要があり、各選択の大きさが異なることです。最後に、1 列の新しいワークブックがタブ区切りのテキスト ファイルとして保存されます。これは、一種の一般的なコーディング言語で、私が念頭に置いていたことです。

変数を区別するためにイタリック体、値を区別するために「引用符」、コーディングのキーワードを区別するために太字を使用します。コードは新しい空のワークブックから実行されると想定しています。

コード:

%%% 変数を初期化します。
MoreCells = "1" %%%boolean yes/no prompt later
SelectedCells = "後でプロンプトで選択された範囲"
SelectedCellsMagnitude = "選択されたセル内のセルの数"
DestinationStartCell = "A1" %%%

Openにコピーされる範囲の開始セルworkbook "workbook to be copy from.xlsx"

while morecells = "1"
     はユーザーに範囲
     セット "selected range" = selectedcells
     set "magnitude of selectedcells "を選択するように促します
セルで始まる新しいワークブックへdestinationstartcell
     set destinationstartcell = destinationstartcell + selectedcellsmagnitude
     ユーザーに「コピーするセルは他にありますか?」
     if "yes" set morecells = "1"
     else set morecells = "0"

新しいワークブックをタブ区切り値テキスト ファイルとして保存先 "\new\workbook\destination" に "newworkbookname.txt" という名前で保存

:終了コード

どんな助けでも大歓迎です。または、さらに言えば、Excel を使用した VBA でこれが可能かどうかについての洞察。

前もって感謝します!

4

1 に答える 1

0

ワークブックとシートの値を該当するワークブックとシートに変更します

Sub usermove()
Dim c, Rng1 As Range
Dim i As Integer

i = 1

'ask for input
userselect:
ThisWorkbook.Sheets("Sheet1").Activate
Set Rng1 = Application.InputBox("Please Select Cells", Type:=8)

'loop
For Each c In Rng1.Cells

  ThisWorkbook.Sheets("Sheet2").Activate

  Cells(i, 1).Value = c.Value

    i = i + 1
    Next

'Prompt for more input
continue = MsgBox("Are there more cells to select?", vbYesNo)
If continue = vbYes Then GoTo userselect

'then save

    ChDir "path"
    ActiveWorkbook.SaveAs Filename:="path\Book1.txt", FileFormat _
        :=xlText, CreateBackup:=False


End Sub
于 2013-07-21T11:37:40.793 に答える