-3

ここでマクロ イベントについて質問があります。以下は私のコードです。これにより、以下の操作が実行されます

Private Sub SaveAsTabDelimited(ByVal sFileName As String)

  With ActiveWorkbook

    .SaveAs Filename:=sFileName, FileFormat:=xlText, CreateBackup:=True

  End With

End Sub

Public Sub test()

  SaveAsTabDelimited "C:\Users\te160772\Desktop\Toad Test\Testsanthu.txt"

  ActiveWorkbook.Close savechanges:=True

End Sub
  1. Excelファイルをタブ区切りのtxtファイルに変換します
  2. Excelファイルのバックアップコピーを作成し、Excelファイルを毎日Oracleテーブルにアップロードするために、このアクションを毎日実行したいと考えていました。Excel スプレッドシートをタブ区切りの txt ファイルに変換する理由は、形式を維持するためです (Oracle にエクスポートする際に先頭のゼロが削除されないようにするため)。

しかし今、私はこのコードを拡張して、次のアクションが問題なく実行されるようにしようとしています。私はプログラミングに非常に慣れていないので、これを行うことができませんでした。

  1. コードは、Excel ファイルをタブ区切りに変換してデスクトップに保存する必要があります (現在のコードでこのアクションに十分であることを願っています)。
  2. 「Repository」というフォルダー (デスクトップのフォルダー) にバックアップ コピーを作成する必要があります。ワークブックを変更するたびに、可能であればバージョン履歴を含むバックアップ コピーが作成されます (ファイル名に日付と時刻のスタンプが含まれています)。
  3. 私のコードに関連する最大の問題は、閉じるときに 3 つの個別のダイアログ ボックスが表示されることです。フォルダーに保存されたテキスト ファイル マクロ内からこれらのダイアログ ボックスに応答する (または抑制する) 方法があるので、マクロを実行するたびに [はい] または [いいえ] を手動でクリックする必要はありませんか?
  4. マクロを Excel の「図形」にアタッチしましたが、ワークブックを閉じるときにマクロを実行することを優先しています。ワークブックに変更が加えられ、ワークブックを保存するたびに、タブ区切りのテキスト ファイルが作成され、確認ダイアログ ボックスが表示されずに既存の Txt ファイルが置き換えられます。

これについて私を助けてください。これは私にとってひどく必要です

百万の感謝を込めて

4

1 に答える 1

3

コードは、Excel ファイルをタブ区切りに変換してデスクトップに保存する必要があります (現在のコードでこのアクションに十分であることを願っています)。

はい、デスクトップへのパスをハードコーディングするか、このコードを使用してデスクトップへのパスを自動的に取得できます。

Sub GetDesktopPath()
    Dim oWS As Object
    Dim DskTopPath As String

    Set oWS = CreateObject("WScript.Shell")

    DskTopPath = oWS.SpecialFolders("Desktop")

    Debug.Print DskTopPath

    Set oWS = Nothing
End Sub

「Repository」というフォルダー (デスクトップのフォルダー) にバックアップ コピーを作成する必要があります。ワークブックを変更するたびに、可能であればバージョン履歴を含むバックアップ コピーが作成されます (ファイル名に日付と時刻のスタンプが含まれています)。

このWorkbook_BeforeSaveイベントを使用して、既存のブックのコピーを作成できます。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

詳細については、Excel のヘルプをThisWorkbook.SaveCopyAs参照してください。


私のコードに関連する最大の問題は、閉じるときに 3 つの個別のダイアログ ボックスが表示されることです。フォルダーに保存されたテキスト ファイル マクロ内からこれらのダイアログ ボックスに応答する (または抑制する) 方法があるので、マクロを実行するたびに [はい] または [いいえ] を手動でクリックする必要はありませんか?

コードを間に挟むだけで、これらのアラートを取り除くことができます

Application.DisplayAlerts = False
'~~> Your Code
Application.DisplayAlerts = True

クリップボードを頻繁に使用している場合は、次を使用してクリアすることもできます

Application.CutCopyMode = False

マクロを Excel の「図形」にアタッチしましたが、ワークブックを閉じるときにマクロを実行することを優先しています。ワークブックに変更が加えられ、ワークブックを保存するたびに、タブ区切りのテキスト ファイルが作成され、確認ダイアログ ボックスが表示されずに既存の Txt ファイルが置き換えられます。

Workbook_BeforeCloseイベントを使用して、関連するコードを実行できます

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

アラートについては、前のセクションで説明しました。

これがあなたを正しい道に導くことを願っています。

于 2013-03-29T15:26:58.263 に答える